Mobile Broadband Modules
The information provided is currently heavily edited and may be incomplete, misleading or erroneous. It may render your system unusable and should only be used by experienced users that are comfortable with building their own Linux kernel and other software.
This project is dedicated to providing GNU/Linux software for the Ericsson Mobile Broadband devices f3507g, f3607gw, c3607w, f3307 and f5521gw. Ultimately the goal is to get full support for the modules upstream and directly into GNU/Linux distributions.
Linux kernel driver
In order to get full support for the f3507g/f3607gw/f3307/c3607w modules in Linux kernels prior to 2.6.28 the kernel has to be patched with the mbm-driver patches and recompiled. For kernels 2.6.28 - 2.6.30 it is possible to add support without recompiling by Hex-editing cdc_ether the cdc_ether module. In kernel 2.6.31 several modules are supported out of the box and no recompilation is necessary. For details see Linux kernel modules.
For f5521gw modules see here.
To get easy, user friendly networking work is done to make the Ericsson Mobile Broadband modules working with NetworkManager. To achieve this an mbm plugin has been created for modem-manager which is a tool for handling different 3G modules. It provides a d-bus interface used by NetworkManager. For details see NetworkManager.
The telephony stack oFono also has an mbm plugin.
GPS control software
The Ericsson mobile broadband modules (except for f3307 and c3607w) also have GPS functionality. For easy control and configuration, a GPS control utility has been developed. It consists of a daemon that runs in the background and a user interface to control it. For details see GPS Control.
All devices listed below are supported when using the MBM driver (see Linux kernel modules). If using a vanilla kernel, the required version for the different modules are listed in the table below. For the modules whose vid/pid have not yet made it into the vanilla kernel, they can be added with a patch (see Linux kernel modules for details).
|Vendor name||Device name||Vendor ID||Product ID||Vanilla kernel|
|Dell||Wireless 5530 Mobile Broadband HSPA Mini-Card||413c||8147||2.6.31|
|Dell||Wireless 5540 Mobile Broadband HSPA Mini-Card||413c||8183/8184||2.6.32|
|Dell||Wireless 5541 Mobile Broadband HSPA Mini-Card||413c||818b||2.6.35|
|Dell||Wireless 5542 Mobile Broadband HSPA Mini-Card||413c||818b||2.6.35|
|Dell||Wireless 5550 Mobile Broadband HSPA+ Mini-Card||413c||818d||2.6.38|
|Dell||Wireless 5560 Mobile Broadband HSPA+ Mini-Card||413c||818e||2.6.38|
|Ericsson Business Mobile Networks BV||f3507g||0bdb||1900||2.6.29|
|Ericsson Business Mobile Networks BV||f3507g||0bdb||1902||2.6.31|
|Ericsson Business Mobile Networks BV||f3607gw||0bdb||1904||2.6.31|
|Ericsson Business Mobile Networks BV||f3607gw||0bdb||1905||2.6.32|
|Ericsson Business Mobile Networks BV||f3607gw||0bdb||1906||2.6.31|
|Ericsson Business Mobile Networks BV||f3307||0bdb||190a||2.6.32|
|Ericsson Business Mobile Networks BV||f3307||0bdb||1909||2.6.32|
|Ericsson Business Mobile Networks BV||c3607w||0bdb||1049||2.6.32|
|Ericsson Business Mobile Networks BV||c3607w||0bdb||190b||2.6.33|
To find out what vendor id and product id you are using, open a terminal and type:
The output will be something along the lines of:
# lsusb Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 006 Device 004: ID 0bdb:1902 Ericsson Business Mobile Networks BV Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 009: ID 046d:c03d Logitech, Inc. M-BT69a Pilot Optical Mouse Bus 004 Device 005: ID 0557:2213 ATEN International Co., Ltd Bus 004 Device 004: ID 0557:8021 ATEN International Co., Ltd Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 003: ID 0b97:7772 O2 Micro, Inc. OZ776 CCID Smartcard Reader Bus 005 Device 002: ID 0b97:7761 O2 Micro, Inc. Oz776 1.1 Hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 003: ID 413c:8140 Dell Computer Corp. Wireless 360 Bluetooth Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
You may have a module that is branded with some other vendor than Ericsson though (e.g. Toshiba, Dell etc).
In order to build a Linux kernel and the other provided software some additional packages are required. To install the required packages open a terminal and run:
# sudo apt-get update # sudo apt-get upgrade # sudo apt-get install build-essential libncurses5-dev kernel-package wget fakeroot git subversion libmbca0 # sudo apt-get build-dep network-manager network-manager-gnome
Linux kernel modules
To compile a kernel we first have to get the source. Either a vanilla kernel can be downloaded from www.kernel.org or the distribution's packaging system can be used (recommended). In this case we'll use apt-get and a 2.6.28 kernel since that is what is currently used in Ubuntu 9.04. Other kernel versions are also supported, just adjust the commands below accordingly (e.g. replace instances of 28 with 24 if a 2.6.24 kernel is used). Also make sure to download the proper patch for the desired version.
Download the kernel and mbm patch
First find out which kernel that is currently running:
# uname -r 2.6.28-12-generic
Then use apt-get to download the sources and cd into the source directory:
# sudo apt-get source linux-image-2.6.28-12-generic # cd linux-2.6.28
or download a kernel of your choice:
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.x.y.tar.bz2 # tar -xvjf linux-2.6.x.y.tar.bz2 # cd linux-2.6.x.y/
Download, extract and apply the desired MBM driver patch:
For f3507g/f3607gw/f3307/c3607w modules
For kernel version 2.6.21 (no autosuspend, mbm driver): # wget http://downloads.sourceforge.net/project/mbm/mbm-drivers/2.6.21/patch-2.6.21.bz2 # bunzip2 patch-2.6.21.bz2 # patch -p1 < patch-2.6.21 For kernel version 2.6.24 (autosuspend enabled, mbm driver): # wget http://downloads.sourceforge.net/sourceforge/mbm/patch-2.6.24-mbm.bz2 # bunzip2 patch-2.6.24-mbm.bz2 # patch -p1 < patch-2.6.24-mbm For kernel version 2.6.28 (autosuspend enabled, mbm driver): # wget http://downloads.sourceforge.net/sourceforge/mbm/patch-2.6.28-mbm.bz2 # bunzip2 patch-2.6.28-mbm.bz2 # patch -p1 < patch-2.6.28-mbm For kernel version 2.6.29 (autosuspend with patch below, cdc_ether driver): # wget http://downloads.sourceforge.net/sourceforge/mbm/mbm-drivers/2.6.29/cdc-ether_identify-mbm-devices_2.6.29_v1.patch # wget http://downloads.sourceforge.net/project/mbm/mbm-drivers/2.6.29/selective-suspend-van29.6-v1.diff # patch -p1 < cdc-ether_identify-mbm-devices_2.6.29_v1.patch # patch -p1 < selective-suspend-van29.6-v1.diff For kernel version 2.6.29 (autosuspend enabled, mbm driver): # wget http://downloads.sourceforge.net/sourceforge/mbm/mbm-drivers/2.6.29/patch-2.6.29-mbm.bz2 # bunzip2 patch-2.6.29-mbm.bz2 # patch -p1 < patch-2.6.29-mbm For kernel version 2.6.30 (autosuspend with patch below, cdc_ether driver): # wget http://downloads.sourceforge.net/sourceforge/mbm/mbm-drivers/2.6.30/cdc-ether_identify-mbm-devices_2.6.30_v1.patch # wget http://downloads.sourceforge.net/project/mbm/mbm-drivers/2.6.30/selective-suspend-van30.10-v1.diff # patch -p1 < cdc-ether_identify-mbm-devices_2.6.30_v1.patch # patch -p1 < selective-suspend-van30.10-v1.diff For kernel version 2.6.30 (autosuspend enabled, mbm driver): # wget http://downloads.sourceforge.net/sourceforge/mbm/mbm-drivers/2.6.30/patch-2.6.30-mbm.bz2 # bunzip2 patch-2.6.30-mbm.bz2 # patch -p1 < patch-2.6.30-mbm For kernel version 2.6.31 (autosuspend with patch below, cdc_ether driver): # wget http://downloads.sourceforge.net/project/mbm/mbm-drivers/2.6.31/cdc-ether_identify-mbm-devices_2.6.31_v1.patch # wget http://downloads.sourceforge.net/project/mbm/mbm-drivers/2.6.31/selective-suspend-van31.5-v6.diff # wget http://downloads.sourceforge.net/project/mbm/mbm-drivers/2.6.31/remote_wakeup.patch # patch -p1 < cdc-ether_identify-mbm-devices_2.6.31_v1.patch # patch -p1 < selective-suspend-van31.5-v6.diff # patch -p1 < remote_wakeup.patch For kernel version 2.6.32 (autosuspend with patch below, cdc_ether driver): # wget http://downloads.sourceforge.net/sourceforge/mbm/mbm-drivers/2.6.32/cdc-ether_identify-mbm-devices_2.6.32_v1.patch # wget http://downloads.sourceforge.net/project/mbm/mbm-drivers/2.6.32/selective-suspend-van32.9-v1.diff # patch -p1 < cdc-ether_identify-mbm-devices_2.6.32_v1.patch # patch -p1 < selective-suspend-van32.9-v1.diff For kernel version 2.6.33 (autosuspend enabled, cdc_ether driver) # wget http://downloads.sourceforge.net/sourceforge/mbm/mbm-drivers/2.6.33/cdc-ether_identify-mbm-devices_2.6.33_v1.patch # patch -p1 < cdc-ether_identify-mbm-devices_2.6.33_v1.patch
For f5521gw modules
The NCM-driver was included linux kernel version 2.6.38 and no patches need to be applied for that or later versions.
If using an older kernel version than 2.6.38, the NCM-driver has to be downloaded and applied as a patch, as well as a usbnet patch as described below.
The NCM-driver is available to download from here. Save it as ncm-driver.patch or similar.
Usbnet has also been changed and the changes can be downloaded from here. Save it as usbnet-changes.patch or similar.
The usbnet patch has to be applied before the NCM driver patch:
# patch -p1 < usbnet-changes.patch # patch -p1 < ncm-driver.patch
Depending on the kernelversion the patch may not apply cleanly. If there is an error when patching the Makefile, open drivers/net/usb/Makefile with a text editor and add the line
obj-$(CONFIG_USB_NET_CDC_NCM) += cdc_ncm.o
to the end of the file.
For error about missing atomic.h file, a patch creating the file can be downloaded from here. Save it as atomic-include.patch or similair.
Other errors may also occur depending on the kernel version used.
Configure the kernel
Copy the previous configuration and apply it:
# cp /boot/config-2.6.28-11-generic .config # make oldconfig
# make menuconfig
Exit menuconfig without any changes and choose to save settings if prompted.
Check so that the required drivers are selected as modules:
# grep ACM .config CONFIG_USB_ACM=m
# grep WDM .config CONFIG_USB_WDM=m
For kernel version <= 2.6.28: # grep MBM .config CONFIG_USB_NET_MBM=m For kernel version >= 2.6.29: # grep CDCETHER .config CONFIG_USB_NET_CDCETHER=m
# grep NCM .config CONFIG_USB_CDC_NCM=m
If any of the above is not set as a module (empty output from the grep command above) it has to be selected as a module in menuconfig before proceeding.
Build the kernel
Now it is time to build and install the new kernel.
Build the kernel # make -jX (where x=(nr of processors + 1))
Install the kernel # sudo make install # sudo make modules_install
Create initial ramdisk # sudo mkinitramfs -o /boot/initrd.img-2.6.x.y 2.6.x.y
Update the boot loader # sudo grub-mkconfig -o /boot/grub/grub.cfg
Reboot # sudo shutdown -r now
Alternative 1: pre-built packages
For Ubuntu, experimental packages are available in the modem-manager ppa (thanks to Alexander Asac). To use them with your package manager add the following lines to /etc/apt/sources.list (for Ubuntu 9.04, Jaunty Jackalope):
deb http://ppa.launchpad.net/modemmanager/ppa/ubuntu jaunty main deb-src http://ppa.launchpad.net/modemmanager/ppa/ubuntu jaunty main
Then update your repository and install the upgraded packages:
sudo apt-get update sudo apt-get upgrade
Reboot your system and you should now have support for your Ericsson mobile broadband module in NetworkManager.
Alternative 2: compiling
In NetworkManager >= 0.8 and ModemManager >= 0.3 support for Ericsson Mobile Broadband modules is included out of the box. The generic instructions should now be used when compiling.
The old instructions for compiling in support for MBM is still available here but are no longer necessary.
oFono is an open source telephony stack for Gnu/Linux. An MBM plugin is available in oFono.
For more info visit the oFono site.
ConnMan uses oFono for 3G connectivity. Since oFono supports MBM devices, so does ConnMan.
For more info visit the ConnMan site.
GPS Control (mbm-gpsd)
The GPS control software is developed with gpsd in mind. This means that gpsd will work with the pseudo-devices published by mbm-gpsd which in turn means that any gps application that uses gpsd will also work with the Ericsson modules. While it is possible to use the devices published by the modules directly (basic funcionality by sending AT-commands manually), mbm-gpsd will make things alot easier. For example it will automatically turn the gps on/off when clients connect, enter the pin/puk code and enable assisted gps mode which requires user interaction. For user interaction a control application; mbm-gps-control is also available.
There are currently no pre-built packages of mbm-gpsd or mbm-gps-control available so the only way to install them is by compiling it manually. As no stable releases have yet been made, the only way to get the code is currently by checking out the development versions from GIT.
First make sure that the build dependencies are met. As mbm-gpsd/mbm-gps-control has very similar dependencies to NetworkManager you can get all required dependencies by executing:
# sudo apt-get build-dep network-manager network-manager-gnome
# git clone git://mbm.git.sourceforge.net/gitroot/mbm/mbm-gpsd # cd mbm-gpsd # ./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var # make # sudo make install
# git clone git://mbm.git.sourceforge.net/gitroot/mbm/mbm-gps-control # cd mbm-gps-control # ./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var # make # sudo make install
For usage instructions see Using mbm-gpsd.
Android Ice Cream Sandwich
MeeGo (previously Moblin)
MeeGo uses ConnMan/oFono so basic connectivity for MBM devices works.
For more info visit the MeeGo site
All downloads are available on the MBM sourceforge project page.
Click on the following image to upload a new version of the PNG logo image for your project: