10.04 (Lucid) is still affected by this bug but I found a way to get the E220 working without a firmware update.
In 9.10 (Karmic), my investigation revealed it is user-space software that crashes the E220, and this software could be disabled as follows:
* Cold boot with the E220 unplugged
* sudo killall devkit-power-daemon
* sudo killall devkit-disks-daemon
* Plug in the E220 -> it works
In 10.04 (Lucid) things are a little harder. The first time I got my E220 working I had to do this:
* Cold boot with the E220 unplugged
* sudo killall upowerd
* sudo killall udisks-daemon
* Plug in the E220
* sudo modprobe usbserial vendor=0x12d1 product=0x1003
* then it works
However, in 10.04, I've noticed that when you get it working this way it seems to crash sporadically. A reproducible way to get it to crash is to run "udisks --enumerate" which starts up that udisks-daemon that was killed earlier.
But what does udisks-daemon do that causes the crash? Running "ps fax" shows it does 2 things: "polling /dev/sr0 /dev/sr1" (/dev/sr1 is the E220) and "mount /dev/sr1 ...". Both of these can be disabled with a udev rule.
Look at /etc/udev/rules.d/70-persistent-cd.rules, and change this line:
Adding those UDISKS_DISABLE_POLLING=1 and UDISKS_PRESENTATION_NOPOLICY=1 options causes udisks-daemon to ignore the E220 completely, preventing any crashes from it trying to poll/mount the virtual CD-ROM. In the testing I've done so far with this udev rule, it's worked like a charm, no need for running those earlier commands to get it working.
Good luck everyone and I hope this works out of the box in the next Ubuntu release,
Damjan
10.04 (Lucid) is still affected by this bug but I found a way to get the E220 working without a firmware update.
In 9.10 (Karmic), my investigation revealed it is user-space software that crashes the E220, and this software could be disabled as follows:
* Cold boot with the E220 unplugged
* sudo killall devkit-power-daemon
* sudo killall devkit-disks-daemon
* Plug in the E220 -> it works
In 10.04 (Lucid) things are a little harder. The first time I got my E220 working I had to do this:
* Cold boot with the E220 unplugged
* sudo killall upowerd
* sudo killall udisks-daemon
* Plug in the E220
* sudo modprobe usbserial vendor=0x12d1 product=0x1003
* then it works
However, in 10.04, I've noticed that when you get it working this way it seems to crash sporadically. A reproducible way to get it to crash is to run "udisks --enumerate" which starts up that udisks-daemon that was killed earlier.
But what does udisks-daemon do that causes the crash? Running "ps fax" shows it does 2 things: "polling /dev/sr0 /dev/sr1" (/dev/sr1 is the E220) and "mount /dev/sr1 ...". Both of these can be disabled with a udev rule.
Look at /etc/udev/ rules.d/ 70-persistent- cd.rules, and change this line:
SUBSYSTEM=="block", ENV{ID_ CDROM}= ="?*", ENV{ID_ SERIAL} =="HUAWEI_ Mass_Storage- 0:0", SYMLINK+="cdrom1", ENV{GENERATED}="1"
to this line:
SUBSYSTEM=="block", ENV{ID_ CDROM}= ="?*", ENV{ID_ SERIAL} =="HUAWEI_ Mass_Storage- 0:0", SYMLINK+="cdrom1", ENV{GENERATED}="1", ENV{UDISKS_ DISABLE_ POLLING} ="1", ENV{UDISKS_ PRESENTATION_ NOPOLICY} ="1"
Just add the rule and reboot.
Adding those UDISKS_ DISABLE_ POLLING= 1 and UDISKS_ PRESENTATION_ NOPOLICY= 1 options causes udisks-daemon to ignore the E220 completely, preventing any crashes from it trying to poll/mount the virtual CD-ROM. In the testing I've done so far with this udev rule, it's worked like a charm, no need for running those earlier commands to get it working.
Good luck everyone and I hope this works out of the box in the next Ubuntu release,
Damjan