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 на самом деле не переключает режимы. По какой-то причине это просто подключение / повторное подключение, что по какой-то причине приводит к тому, что драйвер не оказывается привязанным к устройству.
Я приложил столько информации, сколько казалось уместным, но если вы читаете это и хотите больше, пожалуйста, дайте мне знать, и я буду рад опубликовать это. Я буду биться головой о стену, пытаясь понять это в обозримом будущем. :)