Huawei UMTS USB Stick

From openSUSE

My first version got lost due a to long editing / probing time, and short autologout at openSUSE

Contents

Huawei HSDPA USB Stick

Having a Huawei E169G HSDPA USB Stick, and wanting an internet connection with openSUSE.

openSUSE 10.3

Tested on openSUSE 10.3 with i386 architecture (Intel 32bit), but others should work too.

Required packages

Install with favorite installer (YaST2, zypper) the following packages, if not already present:

  • umtsmon
  • ppp

kernel tweaks

The bad news that the UMTS USB Stick is capable of two functionalities: a usb-storage (= memory stick) as ROM and a modem. As long as the usb-storage is accessed at the device, there will be no access to the modem possible.

Automatic system configuration in openSUSE 10.3 does not disable the access to the memory stick functionality. Working a long on additional udev rules, it seems that openSUSE 10.3 always accesses the memory stick functionality, and there is no way easily (= via shell-script) disabling this.

openSUSE 11.0 (see below) has no longer this disadvantage.

The final solution is to work around this manually, to get internet access.

The following steps have always to be done, after a plug-in or after a resume from suspension.

Find USB IDs

Open a command line terminal, such as xterm

  • become root:
su root
  • plug in the device
  • find the USB device IDs
lsusb | grep 12d1

The output could look like:

Bus 002 Device 004: ID 12d1:1001

The two last number, separated by a colon sign ":" are important:
The first one is the ID of the vendor, Huawei has 12d1
The second one is the ID of the product, the E169G HSDPA USB Stick has 1001.
Note both numbers for later use.

Disable usb_storage

It takes a few seconds till openSUSE 10.3 configures the

  • wait till the device becomes "visible" -- repeat till an output occurs:
df | grep Mobile

and an output should occur like this:

/dev/sr1               8250      8250          0 100%   /media/Mobile Connect
  • eject the device (change /dev/sr1 to your output accordingly)
eject /dev/sr1
  • remove the usb_storage kernel module
rmmod usb_storage

Warning! For the following commands be fast - otherwise the usb_storage module has to be removed again

enable modem

Setting the goal to get several /dev/ttyUSB* devices.

  • make sure that the usbserial kernel is not already loaded,

the following command should produce no output

lsmod | grep usb

If there is an output like this:

usbserial                  34996  1 option

...remove the kernel module (here: 'usbserial) and all the dependencies (here: option), and if usb_storage reappeared, remove usb_storage too:

rmmod option usbserial usb_serial
  • load usbserial module into kernel, using USB device IDs from above:
modprobe usbserial vendor=0x12d1 product=0x1001
  • wait a moment a see USB devices (around 4) appear in "/dev"
ls /dev/ttyUSB*

should show:

crw-rw---- 1 root uucp 188, 0 Jun 24 18:06 /dev/ttyUSB0
crw-rw---- 1 root uucp 188, 1 Jun 24 18:06 /dev/ttyUSB1
crw-rw---- 1 root uucp 188, 2 Jun 24 18:06 /dev/ttyUSB2
crw-rw---- 1 root uucp 188, 3 Jun 24 18:06 /dev/ttyUSB3

Note: /dev/ttyUSB0 is the modem, use only this device. /dev/ttyUSB1 is the control channel, /dev/ttyUSB2 is doing GSM checks, /dev/ttyUSB3 job is not known to the author.

umtsmon

I tried out several tools to connect to the internet, such as knetwork manager. But none is capable handling the PIN. The PIN has to be entered only the first time (with modem commands), and every subsequent connection it has not, it will result in errors, doing so! So none of tools known to the author, and except umtsmon, is capable to handle such a special case.

Preparation

  • Start "Administrator Settings (YaST)" in the desktop (Admin password is required)
  • and add the default user into groups uucp and dialout:
 select in "Security and Users" the button "Group Management"
  • in the new window "Set Filter" to "System Groups"
  • search for "dialout" and "Edit"
    • Look into "Group Memembers" and select your Account.
    • Finish this group with "Accept"
  • search for "uucp" and "Edit"
    • Look into "Group Memembers" and select your Account.
    • Finish this group with "Accept"

run umtsmon

  • Open a command line terminal, such as xterm and start umtsmon:
/usr/bin/umtsmon
  • fix the problems, if any detected (and restart umtsmon again)
  • enter the PIN
  • edit your profile (APN, username, password) according to your UMTS provider


openSUSE 11.0

Tested with openSUSE 11.0 on i386 architecture (Intel 32bit)

Required packages

  • ppp
  • huawei_umtsmodem downloadable from: [1]
  • umtsmon (optional) or NetworkManager-kde (optional)

Linux kernel

The kernel is capable to handle the UMTS stick correctly (in a way), but the modem is not fully initialized. Therefore its recommended to install the package huawei_umtsmodem (from [2]) to do this initialization: it executes program huaweiAktBbo via the udev on every plugin.

Nothing has to be done, except installation of package huawei_umtsmodem.

umtsmon

  • Open a command line terminal, such as xterm and start umtsmon:
/usr/bin/umtsmon
  • fix the problems, if any detected (and restart umtsmon again)
  • enter the PIN
  • edit your profile (APN, username, password) according to your UMTS provider

No problems known.

NetworkManager

NetworkManager will detect the device too. You can edit the profile (don't forget to enter the PIN of your SIM card), and then start the connection via the icon in the NetworkManager. No problems known.

Conclusion

It is suggested to install openSUSE 11.0, install additional package huawei_umtsmodem, and use umtsmon or NetworkManager for connection.


Klaus Singvogel, kssingvo, 2008-Jul-01