modemmanager prevents Gobi 2000 firmware loading
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
modemmanager (Ubuntu) |
Fix Released
|
High
|
Mathieu Trudel-Lapierre | ||
Natty |
Fix Released
|
High
|
Mathieu Trudel-Lapierre |
Bug Description
Binary package hint: modemmanager
System the bug occurs on:
Lenovo T410 2522 2VG with Qualcomm Gobi 2000 UMTS modem with Kubuntu 10.10 Maverick/amd64
Problem description:
The Qualcomm Gobi 2000 modem needs to get its firmware loaded before it can be used. Without firmware it registers as USB device 05c6:9204. The /dev/ttyUSB0 device registered by qcserial for this device is not usable as a modem, only for loading the firmware.
After firmware load, this USB device deregisters and the now functional modem registers with USB ID 05c6:9205. Now /dev/ttyUSB0 works for AT commands or pppd connections.
Package gobi-loader and firmware is correctly installed. Loading the firmware by hand works reliably.
After almost every boot, the modem still comes up uninitialized (USB ID 05c6:9204, "success rate" of maybe 1 in 20 boots that the modem is initialized). If uninitialized, "lsmod" shows the module "qcserial" in use, "fuser /dev/ttyUSB0" shows the modem-manager PID. Killing modem-manager and then loading the firmware by hand works reliably, restarting modem-manager shows a working WWAN device.
My conclusion is that while gobi-loader is still loading the firmware (takes about 0.5 - 0.75 seconds), modem-manager tries to connect to the modem to send AT+GCAP commands, thus corrupting the firmware.
Solution:
To prevent modem-manager to access /dev/ttyUSB0 while the firmware load is still in progress, I added 2 lines to
"/lib/udev/
# Qualcomm Gobi 2000 QDL
This prevents modem-manager from corrupting the firmware load and the modem always comes up correctly initialized. Then modem-manager takes control of the new device and connecting via "mobile broadband" works.
Please note that there seem to be other Qualcomm modems which use the same procedure (come up uninitialized with USB ID X, deregister after firmware load and come up with USB ID X+1). Maybe there should be some more USB-IDs blacklisted?
One might argue that the real bug is a) modemmanager trying to work with the uninitialized modem at all or b) gobi-loader not locking /dev/ttyUSB0 or creating a matching lock file in /var/lock... But the workaround doesn't seem too much of a hack, as modem-manager seems to need a blacklist for other cases too.
CVE References
Changed in modemmanager (Ubuntu): | |
status: | New → Confirmed |
Output of "uname -a":
Linux thinky 2.6.35-23-generic #41-Ubuntu SMP Wed Nov 24 11:55:36 UTC 2010 x86_64 GNU/Linux
Output of "lsb-release -a":
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.10
Release: 10.10
Codename: maverick