Sierra MC8355 no QMI device on OpenWrt 19.07.3

I have been spending my time documenting how modems in general and sierra gobi 3000 (MC8355) specifically are used in linux/openwrt. I took the Mini PCIe modem from a ThinkPad that met its end unfortunately. It worked there under Windows and in Ubuntu 20.04 Live too.

My device is a Turris Omnia and I originally tried to make is work in Turris OS, but the QMI device gets unregistered:

[ 14.261271] qmi_wwan 1-1:1.0: cdc-wdm0: USB WDM device
[ 14.266784] qmi_wwan 1-1:1.0 wwan0: register ‘qmi_wwan’ at usb-f1058000.usb-1, WWAN/QMI device, 26:47:d9:cc:38:28
[ 14.277206] usbcore: registered new interface driver qmi_wwan
[ 14.283979] usbcore: registered new interface driver rndis_host
[ 17.009288] qmi_wwan 1-1:1.0 wwan0: unregister ‘qmi_wwan’ usb-f1058000.usb-1, WWAN/QMI device

I just installed OpenWrt 19.07.3 to test is further and I am getting the same thing. Module qmi_wwan loads, but unregisters the interfaces and there are no /dev/cdc-wdm devices visible. On Ubuntu the device is present, the modem works with ModemManager and I could access it with qmicli through the proxy device.

cat /sys/kernel/debug/usb/devices:

T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1199 ProdID=9013 Rev= 0.02
S: Manufacturer=Sierra Wireless Inc
S: Product=Sierra Wireless MC8355 - Gobi 3000(TM) Module
C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=84(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms

Since I had no luck with QMI I tried ppp too. On Turris OS with the cellular userlist the qcserial driver loads for three interfaces of the modem, creating three ttyUSBx. None of them responds to AT commands.

On OpenWRT, I loaded the option driver (as described here:

root@OpenWrt:~# echo "1199 9013 ff" > /sys/bus/usb-serial/drivers/option1/new_id
root@OpenWrt:~# lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=orion-ehci/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 480M
|__ Port 1: Dev 2, If 1, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 1: Dev 2, If 2, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 1: Dev 2, If 3, Class=Vendor Specific Class, Driver=option, 480M

Again, three ttyUSBx are created and ttyUSB2 responds to AT commands, finally.

  • Using QMI is clearly possible with the qmi_wwan driver in Ubuntu, why cannot I make it work in OpenWRT/TurrisOS?
  • Why doesn't qcserial work properly, should I force option instead?