I have bought a Sierra Wireless EM7455 (DW5811e) recently for my Dell Latitude e5470.
My laptop have a Dualboot OS: Windows 10 - Debian Jessie with the latest kernel.
At first, I downloaded the driver from Dell Support website, and I modified the configuration.ini file to change the USBCOMP=6 for QMI and other GPS stuff.
Everything worked fine under windows after restarting my PC. But then when I booted over debian, the wwan card was not present at all.
I tried “lsusb”, “lspci”, “lsmod”, and “dmesg |grep cdc-*” and “dmesg |grep tty” I had nothing at all. It’s like Debian didn’t like USBCOMP=6 that I set on windows installation.
So I removed the Driver, removed the card from its slot, and installed it back, I reinstalled the driver but with the USBCOMP=8 for MBIM.
I rebooted, and still worked fine under Windows, and worked partially over debian, the cdc-wdm0 is present, but no COM ports for NMEA, DM or AT.
Can you help me how to make it work on debian/ubuntu with QMI USBCOMP=6 and have the different com ports (dmesg |grep tty)
I am pretty sure it will show up in lsusb, but that doesn’t help you much. The problem is that the QMI and serial functions (AT, NMEA, QCDM) are vendor specific, so the drivers must know the device ID of every supported modem. And Dell use their own ID for their EM7455. This ID must be added to the qmi_wwan and qcserial drivers. AFAIK, only the Sierra Wireless and Lenovo EM7455 IDs have been added so far.
So if someone cares about the Dell DW5811e support in mainline Linux, then they need to cook up and submit patches for qcserial and qmi_wwan.
Yes, MBIM is a standardised USB class with a class driver in Linux (cdc_mbim). This driver will match any MBIM function regardless of device ID. But the serial functions are still vendor specific and need the above mentioned qcserial patch.
After rebooted my PC on windows, the card was unknown to the system, I reinstalled the Sierra Wireless Driver, but it still the same unknown driver. I booted over linux this time, but detects nothing.
There is no Modem COM port in windows nor TTY ports on Linux, in order to restore back the modem to factory,
I searched a way to revert back the PID of the card, on linux using usb_modeswitch, but I couldn’t do it, because I don’t know how to use it. Also I don’t know how to revert it back on windows.
Can you help me to revert back the PID of the card please
Sure, no problems. But please take it calm and easy and don’t do anything more hasty
Your modem had a Dell specific ID. This is made up of both a vendor ID (which belongs to Dell) and a product ID, which was assigned by Dell. The WIndows drivers know this exact combination. You changed half of that device ID, by changing the product ID. So you now have a bastard modem with a Dell vendor ID and Sierra Wireless product IDs. This combination is not recognized by neither Windows nor Linux.
But you can realitively easily work around that temporarily in Linux, allowing you to fix the issue by changing the USBPID back to the original. Do something like this (as root):
You should get a number of /dev/ttyUSBx devices. One of them will be the AT command serial port. Use it to change the PID back to your original (verify that I got the correct device IDs here!!!):
AT!ENTERCND="A710"
AT!USBPID=81B6,81B5
AT!RESET
This should get you back to where you were.
Then go ahead and make changes to the Linux drivers instead. Changing the modem is not the correct way forward. You are extremely lucky that Dell didn’t implement a BIOS whitelist like Lenovo does. If they had, then the laptop would have refused to boot. And you would have had to remove the modem from the laptop to fix it.
Thanks so muuuuuuuch for the urgent help. It worked at last.
I appreciate so much.
Can you tell me how do you know those PIDs, because when I did AT!USBPID=? and AT!USBINFO? I got a bunch of the Modem IDs and some Hexadecimal numbers indicating each AppID and BootID. and the same thing for VID.
And I’m also interested of your technique
What is the “option” module exactly ?
I’ll follow your instructions, firstly by not modifying anything on windows. But what should I do exactly on debian to get it worked on both OSes on QMI interface with the TTY ports ?
I found the IDs by googling for DW5811e, guessing that the bood PID is one less than the application PID. Usually is.
Most USB serial functions are very simple: One bulk in and one bulk out endpoint is all you need. There is some control signal logic as well, but that’s mostly optional. This makes the drivers simple and in practice interchangeable. The main difference is in the descriptor matching.
I often abuse the “option” driver for this kind of one-shot temporary thing because it does very little sanity checking. It will happily bind to almost any USB interface with two bulk endpoints. Some of the created ttyUSBx devices will be bogus - it will bind to QMI/RMNET functions too for example. But a few bogus ttyUSBx devices does not matter for such temporary recovery operations. What’s important is that it will create a ttyUSBx device for the AT port. We just ignore the rest.
This does of course mean that the option driver would work as a permanent solution as well. The only reason I recommend qcserial instead is that it already has the logic to match the correct USB interfaces for Sierra Wireless modems. That makes it a one-line (or two if we include the boot ID) patch. Most of the logic is shared between these two drivers anyway, using the shared usb_wwan module.
For the permanent, proper fix, that will be patches similar to these ones, adding the Dell IDs instead:
But htis page is probably a better starting point, since it explains the patching part etc: kernelnewbies.org/KernelBuild
As you can see, there is a lot to read and learn and it will probably take some time to get everything going. Personally I never bother to do a complete kernel build like that just to update a driver (or two). This shortcut is considerably less work and will do the job: debian-administration.org/artic … nel_module
But the absolute easiest way is to just relax for a few weeks and wait for the patches to appear in the Debian kernels
Note that the qmi_wwan patch won’t ever show up in a Jessie kernel. You need Linux v4.5 or later to get raw-ip support in qmi_wwan. But if all you want is MBIM with AT+NMEA, then the qcserial patch will do. And it should eventually end up in a Jessie kernel.