Verizon недавно обновил прошивку на MiFi 7730L, которая заставляет устройство отображать себя по-разному при подключении к USB-порту. Я использую эти устройства в качестве USB-модемов в нескольких различных системах Linux. Например, в CentOS 7 это обновление вызвало изменение модуля ядра rndis_host на модуль cdc_ether. То же самое верно и для моего ASUS RT-AC68U.

Тем не менее, у меня есть SDR (Ettus E310) с запущенным образом встроенного образа Linux, который сейчас испытывает проблемы с этим устройством. Предыдущая прошивка на 7730L работала нормально с драйвером rndis_host, но теперь у меня странная проблема. Когда я подключаю 7730L к SDR, он сначала обнаруживается, и драйвер cdc_ether загружается, но затем он пытается отключиться и снова подключиться, и на этот раз драйвер не загружается. Посмотрите на соответствующий вывод dmesg и вывод usb-устройств ниже.

вывод dmesg

[  796.838413] usb 1-1.2: new high-speed USB device number 10 using zynq-ehci
[  796.988910] hid-generic 0003:1410:B020.0004: device has no listeners, quitting
[  807.352860] usb 1-1.2: USB disconnect, device number 10
[  807.608502] usb 1-1.2: new high-speed USB device number 11 using zynq-ehci
[  807.762020] cdc_ether 1-1.2:1.0 eth1: register 'cdc_ether' at usb-zynq-ehci.0-1.2, CDC Ethernet Device, 00:15:ff:41:90:41
[  807.780248] hid-generic 0003:1410:B020.0005: device has no listeners, quitting
[  817.592812] usb 1-1.2: USB disconnect, device number 11
[  817.598081] cdc_ether 1-1.2:1.0 eth1: unregister 'cdc_ether' usb-zynq-ehci.0-1.2, CDC Ethernet Device
[  817.898439] usb 1-1.2: new high-speed USB device number 12 using zynq-ehci
[  818.040818] hid-generic 0003:1410:B020.0006: device has no listeners, quitting

Обратите внимание, что между 807 и 817 у меня есть действующее устройство Ethernet. Я не понимаю, что подсказывает "USB отключить" на 817.

выход usb-устройства изначально

T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 15 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  3
P:  Vendor=1410 ProdID=b020 Rev=03.10
S:  Manufacturer=Novatel Wireless
S:  Product=MiFi 7730L
S:  SerialNumber=0123456789ABCDEF
C:  #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=(none)
I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
I:  If#= 2 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid

Вывод usb-устройств между 807 и 817 в выводе dmesg

T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 14 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  3
P:  Vendor=1410 ProdID=b020 Rev=03.10
S:  Manufacturer=Novatel Wireless
S:  Product=MiFi 7730L
S:  SerialNumber=0123456789ABCDEF
C:  #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
I:  If#= 2 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid

После 817 он возвращается к начальному выводу сверху (не отображая ни одного драйвера для If 0 и 1.

Для справки, когда я подключаю 7730L, который все еще на старой прошивке, вывод dmesg и usb-devices выглядит так:

dmesg для старых прошивок

[ 1170.598410] usb 1-1.2: new high-speed USB device number 16 using zynq-ehci
[ 1170.760585] rndis_host 1-1.2:1.0 eth1: register 'rndis_host' at usb-zynq-ehci.0-1.2, RNDIS device, 00:15:ff:41:92:57
[ 1170.771189] usbcore: registered new interface driver rndis_host

USB-устройства для старых прошивок

T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 16 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=02(commc) Sub=06 Prot=00 MxPS=64 #Cfgs=  2
P:  Vendor=1410 ProdID=b020 Rev=03.10
S:  Manufacturer=Novatel Wireless
S:  Product=MiFi 7730L
S:  SerialNumber=0123456789ABCDEF
C:  #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host

Я прочитал довольно много материала относительно usb_modeswitch, но, насколько я могу судить, 7730L на самом деле не переключает режимы. По какой-то причине это просто подключение / повторное подключение, что по какой-то причине приводит к тому, что драйвер не оказывается привязанным к устройству.

Я приложил столько информации, сколько казалось уместным, но если вы читаете это и хотите больше, пожалуйста, дайте мне знать, и я буду рад опубликовать это. Я буду биться головой о стену, пытаясь понять это в обозримом будущем. :)

0