1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in

MBM

From mbm

Jump to: navigation, search

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.

Contents

About

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.

Connection managers

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.

More information

Supported devices

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).

Currently supported broadband modules
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
Toshiba f3507g 0930 130b 2.6.31
Toshiba f3607gw 0930 130c 2.6.32
Toshiba f3607gw 0930 1311 2.6.32
All f36*/f35*/f33*/c36* * * 2.6.35
All f5521gw/h5321*/f5321*/c5621*/c33* * * 2.6.38

To find out what vendor id and product id you are using, open a terminal and type:

# lsusb

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).

Prerequisites

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

left,middle As of kernel 2.6.31 several vids/pids listed above are supported out of the box and no recompilation is necessary. If your module is not listed above then continue reading.

USB autosuspend is available without patches from kernel version 2.6.33.

The MBM patch supports USB autosuspend except for 2.6.21 kernels.

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.

left,middle If you can't or really don't want to recompile your kernel take a look at Hex-editing cdc_ether to add support for your module in your running kernel. Otherwise follow the instructions below.

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

Start menuconfig:

# 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 f3507g/f3607gw/f3307/c3607w:

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

For f5521gw:

# 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

Connection managers

NetworkManager

left,middle Note that in Ubuntu 9.10 NetworkManager/ModemManager already includes support for Mobile Broadband Modules out of the box and the below steps are not necessary. From NetworkManager 0.8 and ModemManager 0.3 there is good support for Mobile Broadband Modules and it is recommended to use those directly.

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

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

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.

Installation

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

Installing mbm-gpsd

# 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

Installing mbm-gps-control

# 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

Usage

For usage instructions see Using mbm-gpsd.

Android Ice Cream Sandwich

See MBM HAL for Android Ice Cream Sandwich.

Android Honeycomb

See MBM HAL for Android Honeycomb.

Android Gingerbread

See MBM HAL for Android Gingerbread.

Android Froyo

See MBM RIL for Android Froyo.

MeeGo (previously Moblin)

MeeGo uses ConnMan/oFono so basic connectivity for MBM devices works.

For more info visit the MeeGo site

Downloads

All downloads are available on the MBM sourceforge project page.

Contact

mbm-devel@lists.sourceforge.net

Subscribe to mailing list


Click on the following image to upload a new version of the PNG logo image for your project:

Image:MediaWikiSidebarLogo.png

Personal tools