MBM

From mbm

(Difference between revisions)
Jump to: navigation, search
m (Download the kernel and mbm patch)
 
(45 intermediate revisions not shown)
Line 5: Line 5:
__TOC__
__TOC__
== About ==
== About ==
-
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.
+
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.
-
 
+
-
Development is being done on [http://www.ubuntu.com/news/ubuntu-9.10-desktop 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 ===
=== 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|Linux kernel modules]].
+
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|Linux kernel modules]].
-
=== NetworkManager/modem-manager ===
+
For f5521gw modules see [[#For_f5521gw_modules|here]].
-
To get easy, user friendly networking work is done to make the Ericsson Mobile Broadband modules working with the popular [http://projects.gnome.org/NetworkManager/ 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|NetworkManager]].
+
 
 +
=== Connection managers ===
 +
To get easy, user friendly networking work is done to make the Ericsson Mobile Broadband modules working with [http://projects.gnome.org/NetworkManager/ 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|NetworkManager]].
 +
 
 +
The telephony stack [[#oFono|oFono]] also has an mbm plugin.
=== GPS control software ===
=== GPS control software ===
Line 27: Line 29:
! Vendor name !! Device name !! Vendor ID !! Product ID !! Vanilla kernel
! Vendor name !! Device name !! Vendor ID !! Product ID !! Vanilla kernel
|-
|-
-
|Dell || 5530 Mobile Broadband (3G HSPA) Mini-Card || 413c || 8147 || 2.6.31
+
|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 || f3607gw || 413c || 8183 || 2.6.32
+
|Dell || Wireless 5550 Mobile Broadband HSPA+ Mini-Card || 413c || 818d || 2.6.38
|-
|-
-
|Dell || f3607gw || 413c || 8184 || 2.6.32
+
|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 || 1900 || 2.6.29
Line 56: Line 64:
|-
|-
|Toshiba || f3607gw || 0930 || 1311 || 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
|}
|}
Line 88: Line 100:
== Linux kernel modules ==
== Linux kernel modules ==
{{Tip|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.
{{Tip|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 not yet available for the Ericsson modules in the vanilla kernel. A patch has been submitted and added to the current kernel development tree which will be 2.6.33.
+
USB autosuspend is available without patches from kernel version 2.6.33.
The MBM patch supports USB autosuspend except for 2.6.21 kernels.}}
The MBM patch supports USB autosuspend except for 2.6.21 kernels.}}
Line 102: Line 114:
  # sudo apt-get source linux-image-2.6.28-12-generic
  # sudo apt-get source linux-image-2.6.28-12-generic
  # cd linux-2.6.28
  # 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 [https://sourceforge.net/project/showfiles.php?group_id=263536 MBM driver patch]:
Download, extract and apply the desired [https://sourceforge.net/project/showfiles.php?group_id=263536 MBM driver patch]:
 +
==== For f3507g/f3607gw/f3307/c3607w modules ====
  '''For kernel version 2.6.21 (no autosuspend, mbm driver):'''
  '''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
  # wget http://downloads.sourceforge.net/project/mbm/mbm-drivers/2.6.21/patch-2.6.21.bz2
Line 121: Line 139:
   
   
  '''For kernel version 2.6.29 (autosuspend with patch below, cdc_ether driver):'''
  '''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/mbm_pids_for_cdc_ether-2.6.29.patch
+
  # 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
  # wget http://downloads.sourceforge.net/project/mbm/mbm-drivers/2.6.29/selective-suspend-van29.6-v1.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.29_v1.patch
-
  # patch -p1 < mbm_pids_for_cdc_ether-2.6.29.patch
+
  # patch -p1 < selective-suspend-van29.6-v1.diff
  # patch -p1 < selective-suspend-van29.6-v1.diff
-
# patch -p1 < remote_wakeup.patch
 
   
   
  '''For kernel version 2.6.29 (autosuspend enabled, mbm driver):'''
  '''For kernel version 2.6.29 (autosuspend enabled, mbm driver):'''
Line 133: Line 149:
  # patch -p1 < patch-2.6.29-mbm
  # patch -p1 < patch-2.6.29-mbm
   
   
-
  '''For kernel version 2.6.30 (no autosuspend, cdc_ether driver):'''
+
  '''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/mbm_pids_for_cdc_ether-2.6.30.patch
+
  # wget http://downloads.sourceforge.net/sourceforge/mbm/mbm-drivers/2.6.30/cdc-ether_identify-mbm-devices_2.6.30_v1.patch
-
  # patch -p1 < mbm_pids_for_cdc_ether-2.6.30.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):'''
  '''For kernel version 2.6.30 (autosuspend enabled, mbm driver):'''
Line 143: Line 161:
   
   
  '''For kernel version 2.6.31 (autosuspend with patch below, cdc_ether driver):'''
  '''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/mbm_pids_for_cdc_ether-2.6.31.patch
+
  # 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/selective-suspend-van31.5-v6.diff
  # wget http://downloads.sourceforge.net/project/mbm/mbm-drivers/2.6.31/remote_wakeup.patch
  # wget http://downloads.sourceforge.net/project/mbm/mbm-drivers/2.6.31/remote_wakeup.patch
-
  # patch -p1 < mbm_pids_for_cdc_ether-2.6.31.patch
+
  # patch -p1 < cdc-ether_identify-mbm-devices_2.6.31_v1.patch
  # patch -p1 < selective-suspend-van31.5-v6.diff
  # patch -p1 < selective-suspend-van31.5-v6.diff
  # patch -p1 < remote_wakeup.patch
  # 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 [http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=commit;h=900d495a189dc3ff5952b98a77d18e3018f8286c here]. Save it as ncm-driver.patch or similar.
 +
 +
Usbnet has also been changed and the changes can be downloaded from [http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=commit;h=073285fd392f6dc901da7c698d46e1e2a7e26436 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 [http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=patch;h=3f9d35b9514da6757ca98831372518f9eeb71b33 here]. Save it as atomic-include.patch or similair.
 +
 +
Other errors may also occur depending on the kernel version used.
=== Configure the kernel ===
=== Configure the kernel ===
Line 160: Line 210:
Exit menuconfig without any changes and choose to save settings if prompted.
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:
+
Check so that the required drivers are selected as modules:
  # grep ACM .config
  # grep ACM .config
  CONFIG_USB_ACM=m
  CONFIG_USB_ACM=m
Line 167: Line 217:
  CONFIG_USB_WDM=m
  CONFIG_USB_WDM=m
 +
For f3507g/f3607gw/f3307/c3607w:
  '''For kernel version <= 2.6.28:'''
  '''For kernel version <= 2.6.28:'''
  # grep MBM .config
  # grep MBM .config
Line 174: Line 225:
  # grep CDCETHER .config
  # grep CDCETHER .config
  CONFIG_USB_NET_CDCETHER=m
  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.
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 ===
=== 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:
+
Now it is time to build and install the new kernel.  
-
  # make-kpkg clean
+
 
-
  # sudo fakeroot make-kpkg --initrd --append-to-version=-mbm kernel_image kernel_headers
+
'''Build the kernel'''
-
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.
+
  # 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
-
When the compilation is done two deb packages will have been created in the parent directory. Change directory and install them:
+
  '''Reboot'''
-
  # cd ..
+
-
# sudo dpkg -i linux-image-2.6.28.9-mbm_2.6.28.9-mbm-10.00.Custom_i386.deb
+
-
# sudo dpkg -i linux-headers-2.6.28.9-mbm_2.6.28.9-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
  # sudo shutdown -r now
-
== NetworkManager ==
+
== Connection managers ==
-
{{Tip|Note that in Ubuntu 9.10 [http://projects.gnome.org/NetworkManager/ NetworkManager/ModemManager] already includes support for Mobile Broadband Modules out of the box and the below steps are not necessary.}}
+
=== NetworkManager ===
-
===  Alternative 1: pre-built packages ===
+
{{Tip|Note that in Ubuntu 9.10 [http://projects.gnome.org/NetworkManager/ 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 [https://launchpad.net/~modemmanager/+archive/ppa 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):
For Ubuntu, experimental packages are available in the [https://launchpad.net/~modemmanager/+archive/ppa 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 http://ppa.launchpad.net/modemmanager/ppa/ubuntu jaunty main
Line 201: Line 263:
Reboot your system and you should now have support for your Ericsson mobile broadband module in NetworkManager.
Reboot your system and you should now have support for your Ericsson mobile broadband module in NetworkManager.
-
=== Alternative 2: compiling ===
+
==== Alternative 2: compiling ====
-
Getting support for mobile broadband modules in NetworkManager requires three packages; NetworkManager, network-manager-applet and modem-manager.  
+
In NetworkManager >= 0.8 and ModemManager >= 0.3 support for Ericsson Mobile Broadband modules is included out of the box. The [http://projects.gnome.org/NetworkManager/developers/ generic instructions] should now be used when compiling.
-
The stable releases of NetworkManager (currently 0.7.1) does not support modem-manager but support is available in the NetworkManager git repository.
+
The old instructions for compiling in support for MBM is still available [[Deprecated_NetworkManager_instructions|here]] but are no longer necessary.
-
The network-manager-applet is a graphical front end to NetworkManager and it needs to be patched to get proper support for modem-manager.
+
=== oFono ===
 +
oFono is an open source telephony stack for Gnu/Linux. An MBM plugin is available in oFono.
-
modem-manager is where the mbm plugin is located. The mbm plugin is not yet included in the upstreams code but it will soon be available in the official modem-manager git repository. Meanwhile there is an MBM clone of modem-manager that contains the mbm plugin.
+
For more info visit the [http://ofono.org/ oFono site].
-
{{Tip|Note that on 2009-06-29 the mbm plugin was committed to the upstream modem-manager git repository and is now available in the official modem-manager. The generic instructions for [http://projects.gnome.org/NetworkManager/developers/ compiling NetworkManager, modem-manager and nm-applet] can now be used and is recommended. The MBM patches will not apply to the latest development version of NetworkManager/nm-applet, only with the specific revisions listed below. It is still recommended to use the latest NetworkManager/nm-applet and most of the functionality provided in the MBM patches will eventually make it into the upstream code.}}
+
=== ConnMan ===
-
==== NetworkManager installation ====
+
ConnMan uses oFono for 3G connectivity. Since oFono supports MBM devices, so does ConnMan.
-
Start by downloading, compiling and installing a suiting revision of NetworkManager. The patches listed in the instructions below are optional but adds some functionality e.g. rf_kill support for modem devices (making NetworkManager behave properly when turning on/off radio).
+
-
# git clone git://anongit.freedesktop.org/NetworkManager/NetworkManager.git
+
-
# cd NetworkManager
+
-
# git checkout 20c662e3505ccae518b0f0839a6844bcc709cfc6
+
-
# wget http://downloads.sourceforge.net/project/mbm/nm-patches/xxx709cfc6/NetworkManager-xxx709cfc6-MM_MODEM_GSM-defines.patch
+
-
# wget http://downloads.sourceforge.net/project/mbm/nm-patches/xxx709cfc6/NetworkManager-xxx709cfc6-disable-modems-on-killswitch.patch
+
-
# patch -p1 < NetworkManager-xxx709cfc6-MM_MODEM_GSM-defines.patch
+
-
# patch -p1 < NetworkManager-xxx709cfc6-disable-modems-on-killswitch.patch
+
-
# ./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+
-
# make
+
-
# sudo make install
+
-
''Note: If you are having problems getting an IP when you try to connect later you may want to try using dhcpcd instead of dhclient which is the default dhcp client that is used. To do so replace the "./autogen.sh" command above with: "./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-dhcp-client=dhcpcd". You may have to download and install [http://roy.marples.name/projects/dhcpcd/wiki/DhcpcdDownload dhcpcd] >= 4.0 if it is not packaged in your distribution.''
+
-
 
+
-
==== modem-manager installation ====
+
-
Do the same with modem-manager:
+
-
# git clone git://gitorious.org/modemmanager/mbm-mainline.git modem-manager
+
-
# cd modem-manager
+
-
# ./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+
-
# make
+
-
# sudo make install
+
-
 
+
-
And apply a patch to get correct information into hal.
+
-
# sudo patch -p0 < patches/mbm-f3507g_f3607gw-fdi.patch
+
-
 
+
-
==== network-manager-applet installation ====
+
-
For network-manager-applet a couple of patches also have to applied for proper modem-manager support. The patches are located in the ''patches/'' subdir of the mbm modem-manager clone above.
+
-
 
+
-
Start by downloading network-manager-applet:
+
-
# svn export -r 1278 svn://svn.gnome.org/svn/network-manager-applet/trunk network-manager-applet
+
-
# cd network-manager-applet
+
-
 
+
-
Then copy the patches required for modem-manager support and apply them. If prompted with any questions, accept the default answer:
+
-
# cp ../modem-manager/patches/nm-applet-r1053-use-modem-manager.patch .
+
-
# cp ../modem-manager/patches/nm-applet-rXXX-use-tuples-in-mm-dbus.patch .
+
-
# patch -p1 < nm-applet-r1053-use-modem-manager.patch
+
-
# patch -p1 < nm-applet-rXXX-use-tuples-in-mm-dbus.patch
+
-
 
+
-
A couple of additional network-manager-applet patches have been developed by the mbm team. The first one will add some sim card handling functions to the connection editor (change pin, enable/disable pin, pin unlock and puk unlock). The second one adds a little emblem on the network-manager-applet system tray icon, showing the current network technology (gprs, edge, umts or hsdpa). These patches are optional but can be applied like this:
+
-
# cp ../modem-manager/patches/nm-applet-r1278-pin-functions.patch .
+
-
# cp ../modem-manager/patches/nm-applet-r1278-modem-technology.tar.bz2 .
+
-
# tar -xvjf nm-applet-r1278-modem-technology.tar.bz2
+
-
# patch -p1 < nm-applet-r1278-pin-functions.patch
+
-
# patch -p1 < nm-applet-r1278-modem-technology.patch
+
-
 
+
-
When desired patches have been applied it is time to build and install:
+
-
# ./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+
-
# make
+
-
# sudo make install
+
-
 
+
-
If the ''nm-applet-r1278-modem-technology.patch'' patch was applied, execute the following to update icon caches so that the new icons can be found:
+
-
# sudo update-icon-caches /usr/share/icons/hicolor/
+
-
 
+
-
==== Finalizing the installation ====
+
-
To start using your brand new MBM enabled NetworkManager simply restart your system:
+
-
# sudo shutdown -r now
+
-
 
+
-
or for the brave one:
+
-
# sudo /etc/init.d/NetworkManager stop
+
-
# sudo killall modem-manager
+
-
# killall nm-applet
+
-
+
-
# sudo /etc/init.d/NetworkManager start
+
-
# nm-applet &
+
-
 
+
-
Now it should be possible to configure and use mobile broadband modules from the NetworkManager applet.
+
-
 
+
-
== ConnMan ==
+
-
Basic support for Ericsson Mobile Broadband Modules is available in ConnMan. Some features like SIM lock is missing but basic connection works fine.
+
For more info visit the [http://connman.net/ ConnMan site].
For more info visit the [http://connman.net/ ConnMan site].
-
 
-
== Moblin ==
 
-
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 [http://moblin.org Moblin site]
 
== GPS Control (mbm-gpsd)==
== GPS Control (mbm-gpsd)==
-
The GPS control software is developed with [http://gpsd.berlios.de/ 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.
+
The GPS control software is developed with [http://catb.org/gpsd/ 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 ===
=== Installation ===
Line 297: Line 287:
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:
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 build-dep network-manager network-manager-gnome
-
# sudo apt-get install libhal-dev
 
==== Installing mbm-gpsd ====
==== Installing mbm-gpsd ====
Line 306: Line 295:
  # make
  # make
  # sudo make install
  # sudo make install
-
 
-
Restart HAL so the new rules for mbm-gpsd are applied
 
-
# sudo /etc/init.d/hal restart
 
==== Installing mbm-gps-control ====
==== Installing mbm-gps-control ====
Line 319: Line 305:
=== Usage ===
=== Usage ===
For usage instructions see [[Using mbm-gpsd]].
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 [http://meego.com MeeGo site]
== Downloads ==
== Downloads ==

Current revision as of 08:18, 16 March 2012

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