Huawei E1820 and qmi_wwan auto bind

OpenWrt 18.06.8 (x86 Geode) and ancient 3G USB modem Huawei E1820.
Installing it using " How To use LTE modem in QMI mode for WAN connection" guide.
Looks like usb-modeswitch doing it's job changing 12d1:1446 to 12d1:14ac.
But after it qmi_wwan do not autobind device and /dev/cdc-wdm0 do not appear.
If I manually do:

 echo "12d1 14ac" >/sys/bus/usb/drivers/qmi_wwan/new_id 

then /dev/cdc-wdm0 appear finally.

here is output of cat /sys/kernel/debug/usb/devices
(it's after manual echo of vendor and product, i'm now far from system and other logs and outputs)

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=12d1 ProdID=14ac Rev= 0.00
S:  Manufacturer=Huawei Technologies
S:  Product=HUAWEI Mobile
C:* #Ifs= 7 Cfg#= 1 Atr=c0 MxPwr=500mA
A:  FirstIf#= 1 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
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= 1 Cls=02(comm.) Sub=06 Prot=ff Driver=qmi_wwan
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=qmi_wwan
E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 6 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

Ofc. i can add this echo to rc.local like ppl do with new (unknown to driver) equipment and so on, but why such ancient device is not autobinded by qmi_wwan driver? Something wrong with device (if's cls, sub, prot, etc.)?

The 02/06/ff class is unexpected. Huawei have been using a vendor class scheme "forever". But we can add this to the driver if you can confirm that it works. That means getting qmi replies. Run uqmi or qmicli and verify that you can talk to the modem.

The driver does not verify any qmi support. It will happily bind to almost anything with 2 bulk and 1 int endpoint. This is why you have to verify using userspace tools

What is standard Huawei class scheme?

Device is old, maybe the first owner did something with it in past.
I know it's from ebay and was non-locked to any carrier (sealed unlocked).
Is it possible for user to overwrite device's cls, sub and prot somehow?

Are there any known default settings/info for this/such modems to check it?

Modem info I can get via terminal:

ATI
Manufacturer: huawei
Model: E1820
Revision: 11.865.07.00.618
IMEI: 35XXXXXXXXXXX23
+GCAP: +CGSM,+DS,+ES

AT^HWVER
^HWVER:"CP12TCPU"

AT^U2DIAG?
255

outputs:
dmesg:

root@OpenWrt:~# dmesg | grep -i usb
[    0.506239] ACPI: bus type USB registered
[    0.510173] usbcore: registered new interface driver usbfs
[    0.515814] usbcore: registered new interface driver hub
[    0.520077] usbcore: registered new device driver usb
[    1.179213] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.196379] ehci-pci 0000:00:0f.5: new USB bus registered, assigned bus number 1
[    1.230065] ehci-pci 0000:00:0f.5: USB 2.0 started, EHCI 1.00
[    1.236629] hub 1-0:1.0: USB hub found
[    1.245422] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    1.262647] ohci-pci 0000:00:0f.4: new USB bus registered, assigned bus number 2
[    1.346765] hub 2-0:1.0: USB hub found
[    1.428690] usbcore: registered new interface driver usbhid
[    1.434374] usbhid: USB HID core driver
[    1.640058] usb 1-2: new high-speed USB device number 2 using ehci-pci
[    2.648868] usb-storage 1-2:1.0: USB Mass Storage device detected
[    2.655631] scsi host2: usb-storage 1-2:1.0
[    2.660332] usbcore: registered new interface driver usb-storage
[    7.488021] usbcore: registered new interface driver cdc_wdm
[    7.687817] usbcore: registered new interface driver usbserial
[    7.693938] usbcore: registered new interface driver usbserial_generic
[    7.700679] usbserial: USB Serial support registered for generic
[    7.774154] usbcore: registered new interface driver cdc_ether
[    7.793075] usbcore: registered new interface driver cdc_ncm
[    7.806118] usbcore: registered new interface driver cdc_subset
[    7.857718] usbcore: registered new interface driver huawei_cdc_ncm
[    7.974318] usbcore: registered new interface driver qmi_wwan
[    7.984939] usbcore: registered new interface driver rndis_host
[    8.076572] usbcore: registered new interface driver cdc_mbim
[    8.091838] usbcore: registered new interface driver option
[    8.097634] usbserial: USB Serial support registered for GSM modem (1-port)
[   13.696434] usb 1-2: USB disconnect, device number 2
[   18.640087] usb 1-2: new high-speed USB device number 3 using ehci-pci
[   18.874672] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB0
[   18.890839] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB1
[   18.904737] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB2
[   18.912157] usb-storage 1-2:1.5: USB Mass Storage device detected
[   19.060231] scsi host2: usb-storage 1-2:1.5
[   19.065348] usb-storage 1-2:1.6: USB Mass Storage device detected
[   19.099368] scsi host3: usb-storage 1-2:1.6
[   38.283830] qmi_wwan 1-2:1.1: cdc-wdm0: USB WDM device
[   38.290325] qmi_wwan 1-2:1.1 wwan0: register 'qmi_wwan' at usb-0000:00:0f.5-2, WWAN/QMI device, 0e:19:ba:e3:40:8b

lsusb:

root@OpenWrt:~# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/4p, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/4p, 480M
    |__ Port 2: Dev 3, If 0, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 2: Dev 3, If 1, Class=Communications, Driver=qmi_wwan, 480M
    |__ Port 2: Dev 3, If 2, Class=CDC Data, Driver=qmi_wwan, 480M
    |__ Port 2: Dev 3, If 3, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 2: Dev 3, If 4, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 2: Dev 3, If 5, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 2: Dev 3, If 6, Class=Mass Storage, Driver=usb-storage, 480M

uqmi: (modem is w/o sim-card, i have no 3G sim-cards atm and we have those "corona restrictions", so as is):

root@OpenWrt:~# uqmi -d /dev/cdc-wdm0 --get-version
{
        "service_0": "1,3",
        "service_1": "1,5",
        "service_2": "1,2",
        "service_3": "1,0",
        "service_224": "0,0"
}
root@OpenWrt:~# uqmi -d /dev/cdc-wdm0 --get-data-status
"disconnected"
root@OpenWrt:~# uqmi -d /dev/cdc-wdm0 --get-imei
"35XXXXXXXXXXX23"
root@OpenWrt:~# uqmi -d /dev/cdc-wdm0 --get-capabilities
{
        "max_tx_channel_rate": 3100000,
        "max_rx_channel_rate": 3100000,
        "data_service": "non_simultaneous_cs_ps",
        "sim": "supported",
        "networks": [
                "gsm",
                "umts"
        ]
}
root@OpenWrt:~# uqmi -d /dev/cdc-wdm0 --get-signal-info
"Invalid QMI command"

P.S. Btw, Is it correct that I use "qmi-wwan" way?
Will it (QMI) give me best speed results with this modem or other ways possible/better (mbim, ncm, whatelse)?

You can see it here:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/usb/qmi_wwan.c#n955

I have no spec of the scheme, but i looks like they assigned protocol "9" to QMI with two inferfaces and protocol "7" to QMI with a combined interface. And use a few more bits in subclass and protocol to indicate other stuff which is irrelevant to the driver. All of these are using the vendor specific class (0xff)

Nice. That's good enough for me. So I just sent off a patch. And then noticed that we already have that device in the table, only using interface number matching:

   {QMI_FIXED_INTF(0x12d1, 0x14ac, 1)},	/* Huawei E1820 */`

Which matches the number of your 02/06/ff interface. So this device should just work by default. Did it not? Do you have an dmesg sample showing what happens when you load the qmi_wwan driver without writing to new_id?

Doesn't look like you have any other option (except ppp, which will be far worse than any of those). But QMI will probably also be best due to the simple framing, using one USB transaction per IP packet.

What means digit 1 here, after VID and PID? Number of needed interface to trigger autobind?
I was doing some "experiments" with AT^U2DIAG today.
Found some possible values in internets (not all work as expected tho)
One of it was AT^U2DIAG=36 which was described as (MDM:0,NDIS:1,DIAG:2,PCUI:3), so SD and CD and something else are disabled.
When i set it to this AT^U2DIAG=36 - then autobind trigger. And it was only one value which triggered autobind.
(Other tested values were 41, 256, 276)
In this case device is look like (notice different PID):

root@OpenWrt:~# 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=12d1 ProdID=140c Rev= 0.00
S:  Manufacturer=Huawei Technologies
S:  Product=HUAWEI Mobile
C:* #Ifs= 4 Cfg#= 1 Atr=c0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
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= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
E:  Ad=84(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= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
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=option
E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms

But it's for sure not default mode/value for this modem. So i set it back to 255 wich is default (or at least i think so)

And for dmesg w/o echo to new_id:
It's same, but w/o last 2 lines (MAC is random ofc. each boot):

qmi_wwan 1-2:1.1: cdc-wdm0: USB WDM device
qmi_wwan 1-2:1.1 wwan0: register 'qmi_wwan' at usb-0000:00:0f.5-2, WWAN/QMI device, 0e:19:ba:e3:40:8b

Also i did clean install of 19.07.2 x86 Generic on another hardware (VIA Artigo A1100) and tested this modem on it (same, no autobind w/o echo to new_id). ~900 lines of adventures step-by-step.
Do i need to add full dmesg w/o grep -i usb?

=======
fresh "install", opkg install usbutils
=======

root@OpenWrt:~# dmesg | grep -i usb
[    1.053444] ACPI: bus type USB registered
[    1.060099] usbcore: registered new interface driver usbfs
[    1.070027] usbcore: registered new interface driver hub
[    1.080031] usbcore: registered new device driver usb
[    2.611926] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    2.660872] ehci-pci 0000:00:10.4: new USB bus registered, assigned bus number 1
[    2.768711] ehci-pci 0000:00:10.4: USB 2.0 started, EHCI 1.00
[    2.786322] hub 1-0:1.0: USB hub found
[    2.810123] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    2.857844] uhci_hcd: USB Universal Host Controller Interface driver
[    2.892817] uhci_hcd 0000:00:10.0: new USB bus registered, assigned bus number 2
[    2.932991] hub 2-0:1.0: USB hub found
[    2.972542] uhci_hcd 0000:00:10.1: new USB bus registered, assigned bus number 3
[    3.012486] hub 3-0:1.0: USB hub found
[    3.052036] uhci_hcd 0000:00:10.2: new USB bus registered, assigned bus number 4
[    3.092136] hub 4-0:1.0: USB hub found
[    3.115908] usbcore: registered new interface driver usb-storage
[    3.383209] usbcore: registered new interface driver usbhid
[    3.399951] usbhid: USB HID core driver
[    3.546532] usb 2-2: new low-speed USB device number 2 using uhci_hcd
[    3.846133] input: Dell Dell USB Keyboard as /devices/pci0000:00/0000:00:10.0/usb2/2-2/2-2:1.0/0003:413C:2003.0001/input/input9
[    3.950068] hid-generic 0003:413C:2003.0001: input,hidraw0: USB HID v1.10 Keyboard [Dell Dell USB Keyboard] on usb-0000:00:10.0-2/input0
[    4.270016] usb 1-3: new high-speed USB device number 3 using ehci-pci
[    4.484390] usb-storage 1-3:1.0: USB Mass Storage device detected
[    4.502867] scsi host2: usb-storage 1-3:1.0
[    5.521131] scsi 2:0:0:0: Direct-Access     USB 2.0  USB Flash Drive  0.00 PQ: 0 ANSI: 2
[  135.408490] usb 1-1: new high-speed USB device number 4 using ehci-pci
[  135.632333] usb-storage 1-1:1.0: USB Mass Storage device detected
[  135.650917] scsi host3: usb-storage 1-1:1.0
root@OpenWrt:~# lsusb
Bus 002 Device 002: ID 413c:2003 Dell Computer Corp. Keyboard
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 004: ID 12d1:1446 Huawei Technologies Co., Ltd. HSPA modem
Bus 001 Device 003: ID 125f:1040 A-DATA Technology Co., Ltd.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
root@OpenWrt:~# lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
    |__ Port 1: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 3: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 480M
root@OpenWrt:~# cat /sys/kernel/debug/usb/devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 6
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:10.4
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=12d1 ProdID=1446 Rev= 0.00
S:  Manufacturer=Huawei Technologies
S:  Product=HUAWEI Mobile
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=02 Dev#=  3 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=125f ProdID=1040 Rev= 1.00
S:  Manufacturer=USB 2.0
S:  Product=USB Flash Drive
S:  SerialNumber=1972a6065b71ac
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 98mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=16ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  7/900 us ( 1%), #Int=  1, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=1.5  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=413c ProdID=2003 Rev= 3.01
S:  Manufacturer=Dell
S:  Product=Dell USB Keyboard
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 70mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=24ms

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.1
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.2
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

=======
opkg install usb-modeswitch kmod-mii kmod-usb-net kmod-usb-wdm kmod-usb-net-qmi-wwan uqmi
reboot
=======

root@OpenWrt:~# dmesg | grep -i usb
[    1.063376] ACPI: bus type USB registered
[    1.070098] usbcore: registered new interface driver usbfs
[    1.080026] usbcore: registered new interface driver hub
[    1.090031] usbcore: registered new device driver usb
[    2.621677] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    2.670621] ehci-pci 0000:00:10.4: new USB bus registered, assigned bus number 1
[    2.750023] ehci-pci 0000:00:10.4: USB 2.0 started, EHCI 1.00
[    2.767608] hub 1-0:1.0: USB hub found
[    2.791379] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    2.839100] uhci_hcd: USB Universal Host Controller Interface driver
[    2.874067] uhci_hcd 0000:00:10.0: new USB bus registered, assigned bus number 2
[    2.962883] hub 2-0:1.0: USB hub found
[    3.002440] uhci_hcd 0000:00:10.1: new USB bus registered, assigned bus number 3
[    3.042389] hub 3-0:1.0: USB hub found
[    3.081926] uhci_hcd 0000:00:10.2: new USB bus registered, assigned bus number 4
[    3.121955] hub 4-0:1.0: USB hub found
[    3.145753] usbcore: registered new interface driver usb-storage
[    3.413432] usbcore: registered new interface driver usbhid
[    3.430190] usbhid: USB HID core driver
[    3.500069] usb 1-1: new high-speed USB device number 2 using ehci-pci
[    3.766060] usb-storage 1-1:1.5: USB Mass Storage device detected
[    3.784690] scsi host2: usb-storage 1-1:1.5
[    3.797537] usb-storage 1-1:1.6: USB Mass Storage device detected
[    3.816098] scsi host3: usb-storage 1-1:1.6
[    4.130013] usb 2-2: new low-speed USB device number 2 using uhci_hcd
[    4.386754] input: Dell Dell USB Keyboard as /devices/pci0000:00/0000:00:10.0/usb2/2-2/2-2:1.0/0003:413C:2003.0001/input/input9
[    4.490068] hid-generic 0003:413C:2003.0001: input,hidraw0: USB HID v1.10 Keyboard [Dell Dell USB Keyboard] on usb-0000:00:10.0-2/input0
[    4.790017] usb 1-3: new high-speed USB device number 4 using ehci-pci
[    5.004464] usb-storage 1-3:1.0: USB Mass Storage device detected
[    5.022930] scsi host4: usb-storage 1-3:1.0
[    6.081179] scsi 4:0:0:0: Direct-Access     USB 2.0  USB Flash Drive  0.00 PQ: 0 ANSI: 2
[   12.253344] usbcore: registered new interface driver cdc_wdm
[   12.660740] usbcore: registered new interface driver qmi_wwan
root@OpenWrt:~# lsusb
Bus 002 Device 002: ID 413c:2003 Dell Computer Corp. Keyboard
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 12d1:14ac Huawei Technologies Co., Ltd. E815
Bus 001 Device 004: ID 125f:1040 A-DATA Technology Co., Ltd.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
root@OpenWrt:~# lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
    |__ Port 1: Dev 2, If 5, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 1: Dev 2, If 3, Class=Vendor Specific Class, Driver=, 480M
    |__ Port 1: Dev 2, If 1, Class=Communications, Driver=, 480M
    |__ Port 1: Dev 2, If 6, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 1: Dev 2, If 4, Class=Vendor Specific Class, Driver=, 480M
    |__ Port 1: Dev 2, If 2, Class=CDC Data, Driver=, 480M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 480M
    |__ Port 3: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M
root@OpenWrt:~# cat /sys/kernel/debug/usb/devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 6
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:10.4
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=12d1 ProdID=14ac Rev= 0.00
S:  Manufacturer=Huawei Technologies
S:  Product=HUAWEI Mobile
C:* #Ifs= 7 Cfg#= 1 Atr=c0 MxPwr=500mA
A:  FirstIf#= 1 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00
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= 1 Cls=02(comm.) Sub=06 Prot=ff Driver=(none)
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(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=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 4 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
I:* If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 6 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=02 Dev#=  4 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=125f ProdID=1040 Rev= 1.00
S:  Manufacturer=USB 2.0
S:  Product=USB Flash Drive
S:  SerialNumber=1972a6065b71ac
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 98mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=16ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  7/900 us ( 1%), #Int=  1, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=1.5  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=413c ProdID=2003 Rev= 3.01
S:  Manufacturer=Dell
S:  Product=Dell USB Keyboard
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 70mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=24ms

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.1
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.2
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

======
echo "12d1 14ac" >/sys/bus/usb/drivers/qmi_wwan/new_id
======

root@OpenWrt:~# dmesg | grep -i usb
[    1.063376] ACPI: bus type USB registered
[    1.070098] usbcore: registered new interface driver usbfs
[    1.080026] usbcore: registered new interface driver hub
[    1.090031] usbcore: registered new device driver usb
[    2.621677] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    2.670621] ehci-pci 0000:00:10.4: new USB bus registered, assigned bus number 1
[    2.750023] ehci-pci 0000:00:10.4: USB 2.0 started, EHCI 1.00
[    2.767608] hub 1-0:1.0: USB hub found
[    2.791379] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    2.839100] uhci_hcd: USB Universal Host Controller Interface driver
[    2.874067] uhci_hcd 0000:00:10.0: new USB bus registered, assigned bus number 2
[    2.962883] hub 2-0:1.0: USB hub found
[    3.002440] uhci_hcd 0000:00:10.1: new USB bus registered, assigned bus number 3
[    3.042389] hub 3-0:1.0: USB hub found
[    3.081926] uhci_hcd 0000:00:10.2: new USB bus registered, assigned bus number 4
[    3.121955] hub 4-0:1.0: USB hub found
[    3.145753] usbcore: registered new interface driver usb-storage
[    3.413432] usbcore: registered new interface driver usbhid
[    3.430190] usbhid: USB HID core driver
[    3.500069] usb 1-1: new high-speed USB device number 2 using ehci-pci
[    3.766060] usb-storage 1-1:1.5: USB Mass Storage device detected
[    3.784690] scsi host2: usb-storage 1-1:1.5
[    3.797537] usb-storage 1-1:1.6: USB Mass Storage device detected
[    3.816098] scsi host3: usb-storage 1-1:1.6
[    4.130013] usb 2-2: new low-speed USB device number 2 using uhci_hcd
[    4.386754] input: Dell Dell USB Keyboard as /devices/pci0000:00/0000:00:10.0/usb2/2-2/2-2:1.0/0003:413C:2003.0001/input/input9
[    4.490068] hid-generic 0003:413C:2003.0001: input,hidraw0: USB HID v1.10 Keyboard [Dell Dell USB Keyboard] on usb-0000:00:10.0-2/input0
[    4.790017] usb 1-3: new high-speed USB device number 4 using ehci-pci
[    5.004464] usb-storage 1-3:1.0: USB Mass Storage device detected
[    5.022930] scsi host4: usb-storage 1-3:1.0
[    6.081179] scsi 4:0:0:0: Direct-Access     USB 2.0  USB Flash Drive  0.00 PQ: 0 ANSI: 2
[   12.253344] usbcore: registered new interface driver cdc_wdm
[   12.660740] usbcore: registered new interface driver qmi_wwan
[  207.077914] qmi_wwan 1-1:1.0: cdc-wdm0: USB WDM device
[  207.093777] qmi_wwan 1-1:1.0 wwan0: register 'qmi_wwan' at usb-0000:00:10.4-1, WWAN/QMI device, 9e:72:06:8a:2b:7a
[  207.131941] qmi_wwan 1-1:1.1: cdc-wdm1: USB WDM device
[  207.147823] qmi_wwan 1-1:1.1 wwan1: register 'qmi_wwan' at usb-0000:00:10.4-1, WWAN/QMI device, 5e:0f:2c:4b:6d:ec
root@OpenWrt:~# lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
    |__ Port 1: Dev 2, If 5, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 1: Dev 2, If 3, Class=Vendor Specific Class, Driver=, 480M
    |__ Port 1: Dev 2, If 1, Class=Communications, Driver=qmi_wwan, 480M
    |__ Port 1: Dev 2, If 6, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 1: Dev 2, If 4, Class=Vendor Specific Class, Driver=, 480M
    |__ Port 1: Dev 2, If 2, Class=CDC Data, Driver=qmi_wwan, 480M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=qmi_wwan, 480M
    |__ Port 3: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M
root@OpenWrt:~# cat /sys/kernel/debug/usb/devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 6
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:10.4
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=12d1 ProdID=14ac Rev= 0.00
S:  Manufacturer=Huawei Technologies
S:  Product=HUAWEI Mobile
C:* #Ifs= 7 Cfg#= 1 Atr=c0 MxPwr=500mA
A:  FirstIf#= 1 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
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= 1 Cls=02(comm.) Sub=06 Prot=ff Driver=qmi_wwan
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=qmi_wwan
E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(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=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 4 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
I:* If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 6 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=02 Dev#=  4 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=125f ProdID=1040 Rev= 1.00
S:  Manufacturer=USB 2.0
S:  Product=USB Flash Drive
S:  SerialNumber=1972a6065b71ac
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 98mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=16ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  7/900 us ( 1%), #Int=  1, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=1.5  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=413c ProdID=2003 Rev= 3.01
S:  Manufacturer=Dell
S:  Product=Dell USB Keyboard
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 70mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=24ms

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.1
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.2
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms
root@OpenWrt:~# ls -l /dev/cdc-wdm0
crw-------    1 root     root      180, 176 Apr 11 12:15 /dev/cdc-wdm0
root@OpenWrt:~# uqmi -d /dev/cdc-wdm0 --get-imei
^C"Failed to connect to service"

continue (post characters limit):

======
opkg install kmod-usb-serial-option kmod-usb-serial kmod-usb-serial-wwan
reboot
======

root@OpenWrt:~# dmesg | grep -i usb
[    1.053408] ACPI: bus type USB registered
[    1.060098] usbcore: registered new interface driver usbfs
[    1.070026] usbcore: registered new interface driver hub
[    1.080031] usbcore: registered new device driver usb
[    2.611882] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    2.660828] ehci-pci 0000:00:10.4: new USB bus registered, assigned bus number 1
[    2.768693] ehci-pci 0000:00:10.4: USB 2.0 started, EHCI 1.00
[    2.786305] hub 1-0:1.0: USB hub found
[    2.810104] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    2.857802] uhci_hcd: USB Universal Host Controller Interface driver
[    2.892772] uhci_hcd 0000:00:10.0: new USB bus registered, assigned bus number 2
[    2.932951] hub 2-0:1.0: USB hub found
[    2.972496] uhci_hcd 0000:00:10.1: new USB bus registered, assigned bus number 3
[    3.012446] hub 3-0:1.0: USB hub found
[    3.051992] uhci_hcd 0000:00:10.2: new USB bus registered, assigned bus number 4
[    3.092036] hub 4-0:1.0: USB hub found
[    3.115840] usbcore: registered new interface driver usb-storage
[    3.383409] usbcore: registered new interface driver usbhid
[    3.400168] usbhid: USB HID core driver
[    3.470057] usb 1-1: new high-speed USB device number 2 using ehci-pci
[    3.736023] usb-storage 1-1:1.5: USB Mass Storage device detected
[    3.754667] scsi host2: usb-storage 1-1:1.5
[    3.767515] usb-storage 1-1:1.6: USB Mass Storage device detected
[    3.801098] scsi host3: usb-storage 1-1:1.6
[    4.120013] usb 2-2: new low-speed USB device number 2 using uhci_hcd
[    4.376754] input: Dell Dell USB Keyboard as /devices/pci0000:00/0000:00:10.0/usb2/2-2/2-2:1.0/0003:413C:2003.0001/input/input9
[    4.480066] hid-generic 0003:413C:2003.0001: input,hidraw0: USB HID v1.10 Keyboard [Dell Dell USB Keyboard] on usb-0000:00:10.0-2/input0
[    4.780016] usb 1-3: new high-speed USB device number 4 using ehci-pci
[    4.994421] usb-storage 1-3:1.0: USB Mass Storage device detected
[    5.012906] scsi host4: usb-storage 1-3:1.0
[    6.081133] scsi 4:0:0:0: Direct-Access     USB 2.0  USB Flash Drive  0.00 PQ: 0 ANSI: 2
[   12.285929] usbcore: registered new interface driver cdc_wdm
[   12.492637] usbcore: registered new interface driver usbserial
[   12.510215] usbcore: registered new interface driver usbserial_generic
[   12.529834] usbserial: USB Serial support registered for generic
[   12.740723] usbcore: registered new interface driver qmi_wwan
[   12.759262] usbcore: registered new interface driver option
[   12.776056] usbserial: USB Serial support registered for GSM modem (1-port)
[   12.815540] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[   12.854495] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[   12.893333] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
root@OpenWrt:~# lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
    |__ Port 1: Dev 2, If 5, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 1: Dev 2, If 3, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 1: Dev 2, If 1, Class=Communications, Driver=, 480M
    |__ Port 1: Dev 2, If 6, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 1: Dev 2, If 4, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 1: Dev 2, If 2, Class=CDC Data, Driver=, 480M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 3: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M
root@OpenWrt:~# cat /sys/kernel/debug/usb/devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 6
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:10.4
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=12d1 ProdID=14ac Rev= 0.00
S:  Manufacturer=Huawei Technologies
S:  Product=HUAWEI Mobile
C:* #Ifs= 7 Cfg#= 1 Atr=c0 MxPwr=500mA
A:  FirstIf#= 1 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
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= 1 Cls=02(comm.) Sub=06 Prot=ff Driver=(none)
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 6 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=02 Dev#=  4 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=125f ProdID=1040 Rev= 1.00
S:  Manufacturer=USB 2.0
S:  Product=USB Flash Drive
S:  SerialNumber=1972a6065b71ac
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 98mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=16ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  7/900 us ( 1%), #Int=  1, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=1.5  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=413c ProdID=2003 Rev= 3.01
S:  Manufacturer=Dell
S:  Product=Dell USB Keyboard
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 70mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=24ms

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.1
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.2
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

======
echo "12d1 14ac" >/sys/bus/usb/drivers/qmi_wwan/new_id
======

root@OpenWrt:~# dmesg | grep -i usb
[    1.053408] ACPI: bus type USB registered
[    1.060098] usbcore: registered new interface driver usbfs
[    1.070026] usbcore: registered new interface driver hub
[    1.080031] usbcore: registered new device driver usb
[    2.611882] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    2.660828] ehci-pci 0000:00:10.4: new USB bus registered, assigned bus number 1
[    2.768693] ehci-pci 0000:00:10.4: USB 2.0 started, EHCI 1.00
[    2.786305] hub 1-0:1.0: USB hub found
[    2.810104] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    2.857802] uhci_hcd: USB Universal Host Controller Interface driver
[    2.892772] uhci_hcd 0000:00:10.0: new USB bus registered, assigned bus number 2
[    2.932951] hub 2-0:1.0: USB hub found
[    2.972496] uhci_hcd 0000:00:10.1: new USB bus registered, assigned bus number 3
[    3.012446] hub 3-0:1.0: USB hub found
[    3.051992] uhci_hcd 0000:00:10.2: new USB bus registered, assigned bus number 4
[    3.092036] hub 4-0:1.0: USB hub found
[    3.115840] usbcore: registered new interface driver usb-storage
[    3.383409] usbcore: registered new interface driver usbhid
[    3.400168] usbhid: USB HID core driver
[    3.470057] usb 1-1: new high-speed USB device number 2 using ehci-pci
[    3.736023] usb-storage 1-1:1.5: USB Mass Storage device detected
[    3.754667] scsi host2: usb-storage 1-1:1.5
[    3.767515] usb-storage 1-1:1.6: USB Mass Storage device detected
[    3.801098] scsi host3: usb-storage 1-1:1.6
[    4.120013] usb 2-2: new low-speed USB device number 2 using uhci_hcd
[    4.376754] input: Dell Dell USB Keyboard as /devices/pci0000:00/0000:00:10.0/usb2/2-2/2-2:1.0/0003:413C:2003.0001/input/input9
[    4.480066] hid-generic 0003:413C:2003.0001: input,hidraw0: USB HID v1.10 Keyboard [Dell Dell USB Keyboard] on usb-0000:00:10.0-2/input0
[    4.780016] usb 1-3: new high-speed USB device number 4 using ehci-pci
[    4.994421] usb-storage 1-3:1.0: USB Mass Storage device detected
[    5.012906] scsi host4: usb-storage 1-3:1.0
[    6.081133] scsi 4:0:0:0: Direct-Access     USB 2.0  USB Flash Drive  0.00 PQ: 0 ANSI: 2
[   12.285929] usbcore: registered new interface driver cdc_wdm
[   12.492637] usbcore: registered new interface driver usbserial
[   12.510215] usbcore: registered new interface driver usbserial_generic
[   12.529834] usbserial: USB Serial support registered for generic
[   12.740723] usbcore: registered new interface driver qmi_wwan
[   12.759262] usbcore: registered new interface driver option
[   12.776056] usbserial: USB Serial support registered for GSM modem (1-port)
[   12.815540] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[   12.854495] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[   12.893333] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
[  202.809297] qmi_wwan 1-1:1.1: cdc-wdm0: USB WDM device
[  202.825153] qmi_wwan 1-1:1.1 wwan0: register 'qmi_wwan' at usb-0000:00:10.4-1, WWAN/QMI device, b2:89:c3:ef:c9:70
root@OpenWrt:~# lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
    |__ Port 1: Dev 2, If 5, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 1: Dev 2, If 3, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 1: Dev 2, If 1, Class=Communications, Driver=qmi_wwan, 480M
    |__ Port 1: Dev 2, If 6, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 1: Dev 2, If 4, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 1: Dev 2, If 2, Class=CDC Data, Driver=qmi_wwan, 480M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 3: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M
root@OpenWrt:~# cat /sys/kernel/debug/usb/devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 6
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:10.4
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=12d1 ProdID=14ac Rev= 0.00
S:  Manufacturer=Huawei Technologies
S:  Product=HUAWEI Mobile
C:* #Ifs= 7 Cfg#= 1 Atr=c0 MxPwr=500mA
A:  FirstIf#= 1 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
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= 1 Cls=02(comm.) Sub=06 Prot=ff Driver=qmi_wwan
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=qmi_wwan
E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 6 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=02 Dev#=  4 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=125f ProdID=1040 Rev= 1.00
S:  Manufacturer=USB 2.0
S:  Product=USB Flash Drive
S:  SerialNumber=1972a6065b71ac
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 98mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=16ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  7/900 us ( 1%), #Int=  1, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=1.5  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=413c ProdID=2003 Rev= 3.01
S:  Manufacturer=Dell
S:  Product=Dell USB Keyboard
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 70mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=24ms

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.1
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.2
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms
root@OpenWrt:~# ls -l /dev/cdc-wdm0
crw-------    1 root     root      180, 176 Apr 11 12:23 /dev/cdc-wdm0
root@OpenWrt:~# uqmi -d /dev/cdc-wdm0 --get-imei
"35XXXXXXXXXXX23"

======
added
sleep 20; echo "12d1 14ac" >/sys/bus/usb/drivers/qmi_wwan/new_id
to rc.local
reboot
======

root@OpenWrt:~# dmesg | grep -i usb
[    1.093438] ACPI: bus type USB registered
[    1.100097] usbcore: registered new interface driver usbfs
[    1.110026] usbcore: registered new interface driver hub
[    1.120034] usbcore: registered new device driver usb
[    2.651840] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    2.700782] ehci-pci 0000:00:10.4: new USB bus registered, assigned bus number 1
[    2.780023] ehci-pci 0000:00:10.4: USB 2.0 started, EHCI 1.00
[    2.797610] hub 1-0:1.0: USB hub found
[    2.869990] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    2.917697] uhci_hcd: USB Universal Host Controller Interface driver
[    2.952665] uhci_hcd 0000:00:10.0: new USB bus registered, assigned bus number 2
[    2.992855] hub 2-0:1.0: USB hub found
[    3.032419] uhci_hcd 0000:00:10.1: new USB bus registered, assigned bus number 3
[    3.072369] hub 3-0:1.0: USB hub found
[    3.111904] uhci_hcd 0000:00:10.2: new USB bus registered, assigned bus number 4
[    3.151930] hub 4-0:1.0: USB hub found
[    3.175735] usbcore: registered new interface driver usb-storage
[    3.443353] usbcore: registered new interface driver usbhid
[    3.460089] usbhid: USB HID core driver
[    3.530029] usb 1-1: new high-speed USB device number 2 using ehci-pci
[    3.796233] usb-storage 1-1:1.5: USB Mass Storage device detected
[    3.814868] scsi host2: usb-storage 1-1:1.5
[    3.827723] usb-storage 1-1:1.6: USB Mass Storage device detected
[    3.846290] scsi host3: usb-storage 1-1:1.6
[    4.160013] usb 2-2: new low-speed USB device number 2 using uhci_hcd
[    4.416756] input: Dell Dell USB Keyboard as /devices/pci0000:00/0000:00:10.0/usb2/2-2/2-2:1.0/0003:413C:2003.0001/input/input9
[    4.520068] hid-generic 0003:413C:2003.0001: input,hidraw0: USB HID v1.10 Keyboard [Dell Dell USB Keyboard] on usb-0000:00:10.0-2/input0
[    4.820017] usb 1-3: new high-speed USB device number 4 using ehci-pci
[    5.054502] usb-storage 1-3:1.0: USB Mass Storage device detected
[    5.072988] scsi host4: usb-storage 1-3:1.0
[    6.161096] scsi 4:0:0:0: Direct-Access     USB 2.0  USB Flash Drive  0.00 PQ: 0 ANSI: 2
[   12.395521] usbcore: registered new interface driver cdc_wdm
[   12.609006] usbcore: registered new interface driver usbserial
[   12.626588] usbcore: registered new interface driver usbserial_generic
[   12.646229] usbserial: USB Serial support registered for generic
[   12.853064] usbcore: registered new interface driver qmi_wwan
[   12.871646] usbcore: registered new interface driver option
[   12.888449] usbserial: USB Serial support registered for GSM modem (1-port)
[   12.927920] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[   12.966859] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[   13.005698] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
[   36.072446] qmi_wwan 1-1:1.1: cdc-wdm0: USB WDM device
[   36.088316] qmi_wwan 1-1:1.1 wwan0: register 'qmi_wwan' at usb-0000:00:10.4-1, WWAN/QMI device, d2:6d:10:bc:be:e8
root@OpenWrt:~# lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
    |__ Port 1: Dev 2, If 5, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 1: Dev 2, If 3, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 1: Dev 2, If 1, Class=Communications, Driver=qmi_wwan, 480M
    |__ Port 1: Dev 2, If 6, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 1: Dev 2, If 4, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 1: Dev 2, If 2, Class=CDC Data, Driver=qmi_wwan, 480M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=option, 480M
    |__ Port 3: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M
root@OpenWrt:~# cat /sys/kernel/debug/usb/devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 6
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:10.4
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=12d1 ProdID=14ac Rev= 0.00
S:  Manufacturer=Huawei Technologies
S:  Product=HUAWEI Mobile
C:* #Ifs= 7 Cfg#= 1 Atr=c0 MxPwr=500mA
A:  FirstIf#= 1 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
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= 1 Cls=02(comm.) Sub=06 Prot=ff Driver=qmi_wwan
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=qmi_wwan
E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 6 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=02 Dev#=  4 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=125f ProdID=1040 Rev= 1.00
S:  Manufacturer=USB 2.0
S:  Product=USB Flash Drive
S:  SerialNumber=1972a6065b71ac
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 98mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=16ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  7/900 us ( 1%), #Int=  1, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=1.5  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=413c ProdID=2003 Rev= 3.01
S:  Manufacturer=Dell
S:  Product=Dell USB Keyboard
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 70mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=24ms

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.1
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12   MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev= 4.14
S:  Manufacturer=Linux 4.14.171 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:10.2
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms
root@OpenWrt:~# ls -l /dev/cdc-wdm0
crw-------    1 root     root      180, 176 Apr 11 12:30 /dev/cdc-wdm0
root@OpenWrt:~# uqmi -d /dev/cdc-wdm0 --get-imei
"35XXXXXXXXXXX23"

This problem is not specific to OpenWRT - reproducible on Arch Linux, too. I suggest asking kernel developers.

Yes, that's the USB interface number. So "1" will match this:

I:* If#= 1 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=ff Driver=qmi_wwan

I do not understand how this can happen:

[   12.740723] usbcore: registered new interface driver qmi_wwan
[   12.759262] usbcore: registered new interface driver option
[   12.776056] usbserial: USB Serial support registered for GSM modem (1-port)
[   12.815540] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[   12.854495] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[   12.893333] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2

..
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=12d1 ProdID=14ac Rev= 0.00
S:  Manufacturer=Huawei Technologies
S:  Product=HUAWEI Mobile
C:* #Ifs= 7 Cfg#= 1 Atr=c0 MxPwr=500mA
A:  FirstIf#= 1 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
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= 1 Cls=02(comm.) Sub=06 Prot=ff Driver=(none)
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 6 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

Oh...., wait.. Right. Doh.

This used to work fine for many years. Then someone came up with another bright idea and broke it:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/net/usb/qmi_wwan.c?id=5697db4a696c41601a1d15c1922150b4dbf5726c

I'll try to figure out a way to handle this. We can't just drop the last "fix". It is necessary for other devices. But I'll figure out a way to support the comm class QMI interface on the E1820.

Thanks for your persistence, convincing me that there was a bug here :slight_smile:

Was a fix / upstream bug ever submitted for this? I seem to be running into it on another system, as qmi_wwan is not being bound. However I don't see any related patches or bug reports in the kernel.

Nope. The latest official usb_modeswitch binds the option driver after switching, though, so the problem is solved in userspace. However, OpenWRT's usb_modeswitch is not the same as usb_modeswitch in all other distributions, so the problem is unsolved for OpenWRT users.