HUAWEI E220/E620 no longer works in Feisty/Hardy

Bug #105545 reported by Stephan Buys on 2007-04-11
This bug affects 1 person
Affects Status Importance Assigned to Milestone
hal-info (Baltix)
hal-info (Debian)
Fix Released
hal-info (Ubuntu)
linux-source-2.6.20 (Ubuntu)
Ubuntu Kernel USB Team
linux-source-2.6.22 (Ubuntu)

Bug Description

In previous kernel releases this usb modem was detected correctly and initialized without problem.

The problem is that HAL/udev detects the device as usb-storage before trying to initialize usbserial. This results in the /dev/ttyUSBx devices not being initialized correctly.

To fix the problem one has to run the procedure:

# sudo rmmod usb-storage
# sudo modprobe usbserial vendor=0x12d1 product=0x1003

Then re-insert the device.

For more details:

This used to work in previous versions of Feisty without issue...

Update: added E620 to the title, to make it easier for users of this model to find this bug report.

Related branches

Stephan Buys (stephan-buys) wrote :

The attached script successfully initializes the device reliably.

I am trying to see if I can create a /etc/udev/rules.d/ script to run this on device insertion but unfortunately I have very little udev experience.

Stephan Buys (stephan-buys) wrote :

Here are 2 scripts to get the card working everytime, you will notice it includes a udev rule

# Rules for HAUWEI e220
SUBSYSTEM=="usb", SYSFS{idVendor}=="12d1", SYSFS{idProduct}=="1003",
KERNEL=="ttyUSB0", SYMLINK="modem", GROUP="dialout", MODE="0660"
KERNEL=="ttyUSB1", GROUP="dialout" MODE="0660"
KERNEL=="ttyUSB2", GROUP="dialout" MODE="0660"

rmmod option
sleep 2
rmmod -r usbserial
sleep 2
modprobe usbserial vendor=0x12d1 product=0x1003

Martin Pitt (pitti) wrote :

neither hal nor udev are responsible for assigning the matching module to a device. This needs to be taken care of in the modaliases.

Motin (motin) wrote :

Unintentional bugreport... Damn it is eady to file bugs nowadays! ;)
I pressed "Also affects this package..." in order to get info on about what packages the bug affects - I thought.

Motin (motin) wrote :

And now the comment that was supposed to explain why I put "rejected" on the empty Affects-entry ended up here amongst all other comments without an explanation to what the comment was aimed at... Where is the delete comment button? Where is the undo-feature? ;)

Just to make it clear: The "Unintentional bugreport" was not for the whole bug, but for creating an empty Affects-entry unintentionally.

Changed in linux-source-2.6.20:
status: New → Confirmed
Caroline Ford (secretlondon) wrote :

The E270 doesn't work in feisty either. I suspect this is the same bug and haven't submitted a new bug about it.

Caroline Ford (secretlondon) wrote :

Anyone tested this in gutsy? Is it still a problem?

David Kågedal (dkagedal) wrote :

I have a E220 that I used with some success on my old laptop (hp nx7010) running feisty. I just had to reload the "option" module with some care and it worked. The sign that it worked was that I got three /dev/ttyUSB devices.

Recently, I upgraded to a new laptop (dell D830) and installed gutsy. But I cannot get the E220 to work. The log says it discovers a GSM modem, and I get a /dev/ttyUSB0, but no more. My old wvdial script won't work.

Motin (motin) wrote :

David (or any other E220 + Gutsy user) could you maybe attach the additions to /var/log/syslog during the following process:
 1. Plugin the E220
 2. Wait 10 seconds
 3. Run the Feisty workaround bits (see e220_startup script above)
 4. Attempt sudo wvdial

Also, the output of "lsusb -v" when the device is plugged in as well as "ls -l /dev/ttyU*" after point 3 above would be helpful I'd assume.

Big thanks!

David Kågedal (dkagedal) wrote :

Here is the syslog. I wait at least 10 s between each step.

One interesting thing that happen when I tried this was that I got the small usb-storage disk mounted. This hasn't happened before that I noticed. But the log is from a later attempt where this didn't happen. The reason probably being that I explicitly unloaded usb-storage first.

Tomas 'tt' Krag (tt) wrote :

I'm on the current release candidate of gutsy, and have similar issues. I've had the modem working under feisty and it's now working under gutsy by using the workaround described here:

After inserting the modem i get what looks like a CD-rom mount. I unmount that first (right-click and unmount) and then run the following script (after compiling the huaweiAktBbo.c program):

sudo modprobe -r option
sudo modprobe -r usbserial
sleep 5
sudo modprobe usbserial vendor=0x12d1 product=0x1003
sleep 5
sudo /usr/local/sbin/huaweiAktBbo
sudo wvdial tre

The huaweiAktBbo program gives me /dev/ttyUSB0 and /dev/ttyUSB1, before running it I have neither.

I've attached the lsusb output and my syslog output upon attaching the modem to the laptop.

Tomas 'tt' Krag (tt) wrote :

And the output of lsusb -v

Motin (motin) wrote :

What a pity to see such a regression in Gutsy!

I had hoped for decent plug-n-play initialization...

We saw an attempt to fix this issue in 2.6.20 earlier:
linux-source-2.6.20 (2.6.20-3.4) feisty; urgency=low
  * usb-storage: Ignore the virtual cd-drive of the Huawei E220 USB Modem
  * usb-gsm-driver: Added VendorId and ProductId for Huawei E220 USB Modem

Some questions for the Kernel USB team:
How come this regression has occurred?
Is there any hope of seeing this get fixed before or during Gutsy?


Changed in linux-source-2.6.20:
assignee: nobody → ubuntu-kernel-usb
David Kågedal (dkagedal) wrote :

Running huaweiAktBbo, mentioned in one of the links, helped me. Now I get both the model and the usb storage at the same time, even.

kervel (frank-dekervel) wrote :


this broke for me (gutsy) yesterday ... before yesterdays update i didn't have to do any workaround (the usb-storage driver leaved the device alone, and i found that this is standard behaviour for official kernels > 2.6.20). when i booted up my computer this morning (updated yesterday evening for the first time in a week), the pseudo-CDRom was mounted by HAL, and no more ttyUSB0. I got it working again by removing usb-storage and reloading usb-serial as described above. But before i didn't have to do this ...


Petri Pennanen (suvarin) wrote :

To make the modem (Huawei E220) work automatically (on Gutsy):

Compile huaweiAktBbo and place it in your path. Then create the file:
and add the single line:
SUBSYSTEM=="usb", SYSFS{idProduct}=="1003", SYSFS{idVendor}=="12d1", RUN+="huaweiAktBbo"

If running
ls /dev/ttyUSB*
shows three devices the modem is working as it should. You can now confiugre it with Gnome/KDE-tools (or Wvdial if you need to set a PIN-code).

Motin (motin) wrote :

Vodafone's openly sourced GUI for 3g cards ( supports E220 and initiates the modem in Gutsy (and according to the documentation Edgy and Feisty are supported as well), shows the signal strength as well as makes it possible to choose 3g/gprs modes and send and receive SMS.

Gutsy comment: It does put a cd-rom disc icon labeled MOBILE_CONNECT on the desktop - this however doesn't interfere with internet connectivity and one can simply "Eject" it if one finds it disturbs one's desktops visual appearance.

I was using the e220_startup script from above together with wvdial on Feisty. Now in Gutsy I fire up Vodafone's app after having connected the modem, let it recognize and initate the modem and then run wvdial in a terminal using my earlier configuration.

I have no doubt that I could make use of the GUI's wvdial integration, but the default wvdial profile there doesn't allow me to connect to my operator 3.
If anyone knows a good profile for this in Vodafone's app then please share.


Motin (motin) wrote :

Ha! It was just a matter of setting the APN setting in the initial setup correctly.

To get back to the initial setup, just move or remove ~/.vmc2 before launching the program.

Wow mobile internet the fully graphical way is a reality even for Linux! Thanks Vodafone devs!

Caroline Ford (secretlondon) wrote :

These modems work in the current hardy - but not through the network applet (I'm using wvdial). I think that's a separate bug.

On my Thinkpad X61s the E220 sometimes goes into a connect/disconnect cycle on the USB-bus. At other times it just works flawlessly.

I cannot discover what triggers the disconnect behaviour. When the modem/computer has decided to do it, nothing seems to work - logging out and in again, rebooting, the start_e220 script above have all been tried without success.

Any clues as to what I can try next?

htoug (hetoug) wrote :

Sorry - forgot to say that I am on Hardy Alpha 4 or thereabouts. A Gutsy upgraded to Hardy and kept current to date.

Uname -a:
Linux henrik-laptop 2.6.24-7-generic #1 SMP Thu Feb 7 01:29:58 UTC 2008 i686 GNU/Linux

huaweiAktBbo.c sends a zero-sized message when initializing the device, while usb_stor_huawei_e220_init in drivers/usb/storage/initializers.c does not. By changing the call to usb_stor_control_msg() to mimic the huaweiAktBbo's call to usb_control_msg(), the device works flawlessly every time.
I'm attaching a patch against hardy's kernel.

On 23/02/2008, Niall Sheridan <email address hidden> wrote:
> huaweiAktBbo.c sends a zero-sized message when initializing the device, while usb_stor_huawei_e220_init in drivers/usb/storage/initializers.c does not. By changing the call to usb_stor_control_msg() to mimic the huaweiAktBbo's call to usb_control_msg(), the device works flawlessly every time.
> I'm attaching a patch against hardy's kernel.

You don't need to run huaweiAktBbo.c in hardy though. My modem is Just
Working with wvdial.

Right, because drivers/usb/storage/initializers.c now does what huaweiAktBbo.c was previously required to do.
Sadly, my modem is not Just Working with wvdial, unless I modify initializers.c per the patch in my previous comment.

Niall Sheridan (niall) wrote :

I did some more digging through this:
- If I shut down hal, the device works.
- If I don't, sometimes it works, but usually uhci_hcd decides to do a reset of some kind. This has the unfortunate side effect of making the usb modem go away completely.
- If I tell hal to ignore the device by modifying 20-broken-usb-sticks.fdi the device works as expected, every time. The virtual cdrom on these things is making hal sad.

So: please ignore my previous patch to usb-storage :)
I've attached a debdiff to hal-info. This works for me in hardy - if someone else out there could try it and confirm it works for them? You need to modify /usr/share/hal/fdi/preprobe/10osvendor/20-broken-usb-sticks.fdi and restart hal (possibly even restart your machine to be on the safe side).

Niall Sheridan (niall) wrote :

"- If I shut down hal, the device works."
To clarify, I need to stop hal before I plug the device in.

The patch to hal works like magic on Hardy.

My Huawei modem now stays connected everytime not just sometimes.

/me is a happy camper now.

Niall Sheridan (niall) on 2008-02-28
Changed in hal-info:
status: Invalid → New

On Gutsy, /dev/ttyUSB0 and /dev/ttyUSB1 do not even appear.

Changed in hal-info:
status: Unknown → New
John Leach (johnleach) wrote :

Niall Sheridan's patch works fine on Hardy, latest updates.

Craig Main (cmain) wrote :

Niall Sheridan's hal patch does not work for me on a newly upgraded hardy from gutsy.

Guimenez (guimenez) wrote :

Hello people.

To fix this, its very simple. Just install the patch

1º Extract the file
2º go to extracted directory and run sudo make install_ubuntu
3º Unplug and plug it again, and its done

For other distros, use make info

Francisco Maia (amaia) wrote :


I was able to use my card with Gutsy using the Vodafone software, but after a reinstall to Hardy Beta, it stopped working (connect-disconnect-cycle).
The instructions given worked for me in Hardy Beta.

Best Regards,
Francisco Maia

Daniel Hahler (blueyed) wrote :

Is the patch [1] from Niall still required with the latest hal-info (20080317+git20080318-1ubuntu3) in Hardy?
thet reports in bug 213456 that the latest updates fixed it for the "huawei e220 usb modem" in Hardy.

Otherwise, I have uploaded a hal-info package with the patch from Niall to my PPA. Please download the .deb file from and install it. Please reboot your system completely to make sure, the patch gets used then.


Changed in hal-info:
importance: Undecided → High
milestone: none → ubuntu-8.04
status: New → Incomplete

The patch from Niall is still required see the attached kern.logs.

I have tried the current hal-info and your patched vesion.
Current (20080317+git20080318-1ubuntu3) still mounts the CD-ROM part and disconnects, while your package (20080317+git20080318-1ubuntu4~blueyedppa1) just works.

Note that this is all using the 2.6.24-14-generic kernel (2.6.24-14-generic #1 SMP Thu Apr 3 04:49:29 UTC 2008).
Switching to the latest kernel in Hardy (2.6.24-15-generic #1 SMP Tue Apr 8 00:33:51 UTC 2008) causes it all to fail miserably - reported in

I don't think this is a hardy regression. It actually works (better)
in hardy than gutsy. I have no problems at all with mine, except that
I need to wait exactly a minute after it has been connected for the
device to reset, before connecting. If I connect before that point the
device stops working when it resets.


I have a feeling that your device has a firmware that doesn't cause hal to do the hundreds of disconnect/connects when it's attached (see the last 8 or so comments on While I completely agree with you that "if it ain't broke then don't fix it", I think it would be still useful if you tried the modified hal-info to check that your modem would still work with the additional rules - there are most likely plenty of users out there with the older firmware and it would be useful to know if the hal rules would cause problems for devices with the less-broken firmware. If you could also post the firmware version you're using, that would probably be useful (you can get it by issuing an ATI to the device).

 - Niall

I'm guessing that my firmware is later, it is also the E270 (although
the id numbers are the same for both devices).

Manufacturer: huawei
Model: E270
Revision: 11.304.02.03.00
IMEI: xxxx

It seems to work fine with the patched hal. It also doesn't reset
itself - previously it would reset itself exactly 1 minute after
connection, if you dialed out within that time you lost your

I've attached the info from syslog when I attached the modem. The 6
usb devices is a new thing that came about with the last kernel (I

My problem with kernel 2.6.24-15 (reported in has been fixed.

The E220 now works perfectly for me in Hardy latest with Daniel Hadlers patch.

Daniel Hahler (blueyed) wrote :

Thanks for your confirmation(s). Setting back to "Triaged".

Changed in hal-info:
status: Incomplete → Triaged
Daniel Hahler (blueyed) wrote :
Daniel Holbach (dholbach) wrote :

Martin: can you please take a look at it?

Martin Pitt (pitti) on 2008-04-14
Changed in hal-info:
assignee: nobody → pitti
status: Triaged → In Progress
Martin Pitt (pitti) wrote :

Uploaded, subject to RM approval now.

Changed in hal-info:
status: In Progress → Fix Committed
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package hal-info - 20080317+git20080318-1ubuntu4

hal-info (20080317+git20080318-1ubuntu4) hardy; urgency=low

  [ Niall Sheridan ]
  * 06_huawei_e220_ignore.patch: Some Huawei e220 devices don't work right
    if they're not ignored. (LP: #105545)

  [ Martin Pitt ]
  * Add 00upstream-update-music-players.patch: Update 10-usb-music-players.fdi
    to current upstream git head:
    - Incorporates 05_k320i.patch and fixes properties of it. Drop patch.
    - Fixes handling of portable_audio_player capability. (LP: #215761)

 -- Martin Pitt <email address hidden> Mon, 14 Apr 2008 09:44:53 +0200

Changed in hal-info:
status: Fix Committed → Fix Released
Arthur Smith (arthsterorama) wrote :

Hi Guys

Is this fix going to be available in the finale release of 8.04?

htoug (hetoug) wrote :

It is in 8.04 beta already - has been for a while.

Motin (motin) wrote :

After upgrading to Hardy, my modem was recognized as a airprime converter and was initializes incorrectly.

# remove e220-conflicting airprime
blacklist airprime

To the bottom of /etc/modprobe.d/blacklist and rebooting seems to have solved the problem for me.

Changed in hal-info:
status: New → Confirmed
Daniel Holbach (dholbach) wrote :

Is there anything left to be sponsored in this bug?

htoug (hetoug) wrote :

As Motin notes you still have to add the airprime module to /etc/modprobe.d/blacklist.

This is with a new install of Hardy after the release with all patches added to date.

JoiHap (astronomy) wrote :

I'm a little bit lost in the above reports... is it solved or not in Hardy with all the updates? In a new Hardy installation or Hardy will all the updates, HUAWEI E220 does not work and I have to follow the procedure mentioned in the initial bug report.

(1) Plugin the usb modem
(2) run
# sudo rmmod usb-storage
# sudo modprobe usbserial vendor=0x12d1 product=0x1003
(3) Unplugin the usb modem
(4) Plug it in again

I will

JoiHap (astronomy) wrote :

syslog upon removal of HUAWEI 220

JoiHap (astronomy) wrote :

syslog after replugging HUAWEI 220 after following procedure in the initial bug report

JoiHap (astronomy) wrote :

Finally, the output of lsusb -vv

Martin Pitt (pitti) wrote :

Rui, I fixed only the hal side of this bug. The kernel task is still open.

Pablo Martí (pmarti) wrote :

Even thou the airprime driver does its job, there are still some funky interactions between hal-info and the kernel. For example, issuing a FindDeviceByCapability("modem") with two cards at the same time yielded the following result:

dbus.Array([dbus.String(u'/org/freedesktop/Hal/devices/usb_device_12d1_1003_noserial_0_if0_serial_usb_6'), dbus.String(u'/org/freedesktop/Hal/devices/usb_device_12d1_1003_noserial_if0_serial_usb_2'), dbus.String(u'/org/freedesktop/Hal/devices/usb_device_12d1_1003_noserial_if0_serial_usb_1'), dbus.String(u'/org/freedesktop/Hal/devices/usb_device_12d1_1003_noserial_if0_serial_usb_0')], signature=dbus.Signature('s'))

But the "modem-capable" devices were actually at ttyUSB{0,1} ttyUSB3 and ttyUSB6.

Felipe Figueiredo (philsf) wrote :

Adding info about abother model.

I have access to an E620 which suffers from the same behaviour: when plugged, both the storage and modem devices are recognized, storage is mounted ro, but ttyUSB devices are not created. Removing the usb-storage module makes the ttyUSB devices to be auto-detected after about 30s.

It has the same characteristics as described above for the E220, except it has product id 1001, instead of 1003. I'll attach commented logs from messages, syslog and lsusb -v.

Felipe Figueiredo (philsf) wrote :
Felipe Figueiredo (philsf) wrote :
description: updated
Changed in hal-info:
status: Confirmed → Fix Released
Pablo Martí (pmarti) wrote :

Oh by the way, as Moutin mentioned, blacklisting "airprime" did the trick. The option module works flawlessly for me.

Felipe Figueiredo (philsf) wrote :

I'd like to clarify something in my posts, in case it was confusing: the patch doesn't work for the E620, because it only looks specifically for the id of the E220 (1003), whereas the E620 has a different id (1001).

While I believe the E220 has a larger userbase, the issue is exactly the same, and I'd really like some closure to this issue. Can the other id be added to the patch, so it comes in the next update of hal-info?

Thanks in advance.

Sure, I'll add the other ID. Thanks!

Changed in hal-info:
importance: High → Medium
milestone: ubuntu-8.04 → none
status: Fix Released → In Progress
z3non (tom-uttenthaler) wrote :

the airprime driver has been removed in 2.6.27, so the blacklisting-workaround won't be needed in future ...

On Sat, Oct 04, 2008 at 11:22:16AM -0000, z3non wrote:
> the airprime driver has been removed in 2.6.27, so the blacklisting-
> workaround won't be needed in future ...

wont be needed == will hurt if we keep it?

 - Alexander

Motin (motin) wrote :

@Alexander: The airprime driver is obsolete and replaced by the option driver. The new driver handles more devices and is more stable then airprime, so there is no need keeping it. Those who prefers to use it for any reason can always add it themselves.

All in all about the status of this bug report:
I just plugged in an E220 in a clean install of Intrepid beta. A notification bubble came up informing that a GSM device (E220 ...) had been attached, click here to configure it. After clicking there and choosing my provider, everything was set and I was connected to the GSM network within some seconds.

Not only does the E220 work great in Intrepid, it is also not detected as a CD-ROM in parallell, it doesn't need any blacklisting af any conflicting drivers, and on top of it all, the new NetworkManager 0.7 makes it a breeze to use it in practice.

I believe we can close this bug for Intrepid and forward...

Great job everyone!

Martin Pitt (pitti) wrote :

OK, thanks for testing again!

Changed in hal-info:
assignee: pitti → nobody
status: In Progress → Fix Released
Martin Pitt (pitti) wrote :

Closing tasks for these old kernels

Changed in linux-source-2.6.20:
status: Confirmed → Invalid
Martin Pitt (pitti) wrote :

wontfix for gutsy either; if we find a solution in hardy, we should create a linux task; if an updated hal-info is enough, then hardy will just get it, too (it already regularly gets hal-info updates).

Changed in linux-source-2.6.22:
status: New → Won't Fix
DaNy3l (danieliozzi) wrote :

I'm having if not the same a very similar behavior with a Novatel PCMCIA 3G card with Gutsy, Hardy and Ibex. The card is working 100% in a Acer 4520 Laptop ( AMD Athlon with ATI chipset ) but in a desktop witha ASROCk AM2NF6G-VSTA with a PCI to PCMCIA adator ENE CB1410 Cardbus controller just disconnects randomly but certainly after 2 or 10 minutes .

The issue apears with in Gutsy or 8.10 before and after all the upgrades.
The constant I can see is the disconnection of course and ...

[ 114.078904] type=1503 audit(1232088537.168:5): operation="inode_permission" requested_mask="w::" denied_mask="w::" fsuid=0 name="/dev/ttyUSB0" pid=5465 profile="/usr/sbin/cupsd"
[ 114.082132] type=1503 audit(1232088537.172:6): operation="inode_permission" requested_mask="w::" denied_mask="w::" fsuid=0 name="/dev/ttyUSB1" pid=5465 profile="/usr/sbin/cupsd"
[ 477.568047] usb 1-1: USB disconnect, address 2
[ 477.572837] option 1-1:1.0: device disconnected
[ 477.574394] option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0
[ 477.577876] option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1
[ 477.579576] option 1-1:1.1: device disconnected
[ 477.884031] usb 1-1: new full speed USB device using ohci_hcd and address 3
[ 478.064040] usb 1-1: device descriptor read/64, error -62
[ 478.348028] usb 1-1: device descriptor read/64, error -62
[ 478.628026] usb 1-1: new full speed USB device using ohci_hcd and address 4
[ 478.808045] usb 1-1: device descriptor read/64, error -62
[ 479.092029] usb 1-1: device descriptor read/64, error -62
[ 479.372030] usb 1-1: new full speed USB device using ohci_hcd and address 5
[ 479.780035] usb 1-1: device not accepting address 5, error -62
[ 479.836032] hub 1-0:1.0: unable to enumerate USB device on port 1
[ 483.328030] usb 1-1: new full speed USB device using ohci_hcd and address 7
[ 483.541184] usb 1-1: configuration #1 chosen from 1 choice
[ 483.546477] option 1-1:1.0: GSM modem (1-port) converter detected
[ 483.557141] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[ 483.559610] option 1-1:1.1: GSM modem (1-port) converter detected
[ 483.560258] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1

The Cardbus adaptor seems to be working fine with other PCMCIA devices, but with the Novatel 3G card just keeps disconnecting.

I have tryed many other generic workarounds like passing parameters to the kernel at boot time disabling ACPI or irqpol and so on... but the only result is that the computer just freeze.

I not sure if this is the right place to report this bug but I couldn find the exact problem with this exact hardware configuration in launchpad, I did found it in general help forums but nobody seems to have an answer for it.

Thanks in advance.

Pieter (diepes) wrote :

Ubuntu 9.10
$ uname -a
Linux pumba 2.6.31-15-generic #50-Ubuntu SMP Tue Nov 10 14:54:29 UTC 2009 i686 GNU/Linux

I had a problem with my ID 12d1:1001 Huawei Technologies Co., Ltd. E620 USB Modem

After upgrading to the latest kernel (had to select it) all is fine.

The 3G modem works and there is a CDROM icon on the desktop.

Andrew Ash (ash211) wrote :

There is still an open task on hal-info in Baltix here. Can that be closed now that it's fixed in Ubuntu and Debian?

Changed in hal-info (Baltix):
status: New → Incomplete
Changed in hal-info (Baltix):
status: Incomplete → Fix Released
To post a comment you must log in.