(→Download the kernel and mbm patch)
|Line 250:||Line 250:|
== Android ==
== Android ==
See [[MBM RIL and GPS for Android]].
See [[MBM RIL and GPS for Android]].
== ConnMan ==
== ConnMan ==
ConnMan . .
For more info visit the [http://connman.net/ ConnMan site].
For more info visit the [http://connman.net/ ConnMan site].
Revision as of 08:16, 27 May 2010
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 and f3307. That includes Linux kernel modules, patches and plugins for NetworkManager/modem-manager and GPS control software. Ultimately the goal is to get full support for the modules upstream and directly into GNU/Linux distributions.
Development is being done on Ubuntu 9.10. Theoretically all software should work on other distributions as well. Most information provided is targeted towards Ubuntu though, so if another distribution is used the instructions below may have to be adapted accordingly. Other distributions tested includes Moblin, Debian, Fedora and Arch.
Linux kernel driver
In order to get full support for the f3507g/f3607gw/f3307 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.
To get easy, user friendly networking work is done to make the Ericsson Mobile Broadband modules working with the popular 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.
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||5530 Mobile Broadband (3G HSPA) Mini-Card||413c||8147||2.6.31|
|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
Download, extract and apply the desired MBM driver patch:
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
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 cdc-acm, cdc-wdm and mbm (or cdc-ether if using a kernel version >= 2.6.29 with generic 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
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 the new kernel. Ubuntu provides a tool to create a deb package automatically that can easily be installed and uninstalled with the packaging system:
# make-kpkg clean # sudo fakeroot make-kpkg --initrd --append-to-version=-mbm kernel_image kernel_headers
While compiling there is plenty of time to get a cup of coffe and take a moment to ponder about how sweet it will be to have your mobile broadband module working in Linux.
When the compilation is done two deb packages will have been created in the parent directory. Change directory and install them:
# cd .. # sudo dpkg -i linux-image-22.214.171.124-mbm_126.96.36.199-mbm-10.00.Custom_i386.deb # sudo dpkg -i linux-headers-188.8.131.52-mbm_184.108.40.206-mbm-10.00.Custom_i386.deb
Grub should be updated automatically and all that is needed now is to reboot the system!
# 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.
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 # sudo apt-get install libhal-dev
# 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 Restart HAL so the new rules for mbm-gpsd are applied # sudo /etc/init.d/hal restart
# 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.
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.
Since Moblin uses ConnMan as the default connection manager there is basic support available out of the box in Moblin 2.1. It uses a 2.6.31 kernel which means that not all Ericsson modules are supported without patching the kernel. See the table above for details about which modules are supported out of the box in the 2.6.31 kernel.
For more info visit the Moblin 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: