Windows 7/8 не может подключиться к g_ether в Linux 3.4
У меня есть встроенный компьютер под управлением Linux 3.4, и, к сожалению, на данный момент я не могу перейти на 4.xy.
Я собрал g_ether
в качестве модуля ядра используются следующие параметры конфигурации:
CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
Модуль компилируется нормально, и я могу загрузить его, как только система загрузится без проблем:
[ 7.160000] DWC_otg: dwc_udc_start: g_ether
[ 7.168000] DWC_otg: bind to driver g_ether
[ 7.176000] DWC_otg: dwc_otg_pcd_alloc_request(e30171a4,208)
[ 7.184000] g_ether gadget: using random self ethernet address
[ 7.196000] usb0: MAC 52:e9:07:c2:0f:23
[ 7.204000] usb0: HOST MAC 82:cf:ce:fa:44:18
[ 7.212000] rndis_bind
[ 7.224000] DWC_otg: dwc_otg_pcd_alloc_request(e30171ec,208)
[ 7.232000] rndis_register: configNr = 0
[ 7.236000] rndis_set_param_medium: 0 0
[ 7.244000] DWC_otg: dwc_otg_pcd_alloc_request(e30171ec,208)
[ 7.252000] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
[ 7.264000] g_ether gadget: g_ether ready
[ 7.268000] DWC_otg: dwc_udc_start: registered gadget driver 'g_ether'
Моя цель - подключить этот встроенный компьютер к компьютеру под управлением Windows. Когда я подключаю встроенный компьютер, Windows сначала показывает "устройство" в диспетчере устройств как работающее должным образом, а затем обновляет, чтобы показать, что оно не работает с ошибкой:
This device cannot start. (Code 10)
Я попробовал несколько разных драйверов на стороне Windows, в том числе linux.inf
упоминается в документации по Linux USG Gadget, нескольким встроенным драйверам и одному драйверу, который я нашел на форуме.
Со стороны Linux, когда я подключаю USB-шнур, я вижу следующий вывод:
Aug 29 05:13:54 dot-8f2wktlxah kernel: [ 31.840000] g_ether gadget: init rndis
Aug 29 05:13:54 dot-8f2wktlxah kernel: [ 31.840000] g_ether gadget: RNDIS RX/TX early activation ...
Aug 29 05:13:54 dot-8f2wktlxah kernel: [ 32.116000] usb0: qlen 10
Aug 29 05:13:56 dot-8f2wktlxah kernel: [ 34.128000] g_ether gadget: rndis req21.00 v0000 i0000 l24
Aug 29 05:13:56 dot-8f2wktlxah kernel: [ 34.540000] g_ether gadget: rndis reqa1.01 v0000 i0000 l4096
Это соответствует стороне Windows (через USBPcap):
1226 29734.081932 host 2.1.0 USBCOM 36 SEND ENCAPSULATED COMMAND Request
1227 29735.362932 2.1.0 host USBCOM 52 SEND ENCAPSULATED COMMAND Response
1228 29735.362932 2.1.0 host USB 28 GET STATUS Status
1229 29735.810932 2.1.2 host USBCOM 35 NETWORK CONNECTION
1230 29735.810932 host 2.1.0 USBCOM 36 GET ENCAPSULATED RESPONSE Request
rndis req21
на стороне Linux соответствует SEND ENCAPSULATED COMMAND
на стороне Windows, и то же самое верно для rndis reqa1
а также GET ENCAPSULATED RESPONSE
,
Никаких других выходных данных после этих последних ответов / запросов нет.
Я понимаю, что Linux 3.4 очень устарел, но у меня нет возможности его обновить, поскольку это встроенный компьютер, и поэтому я обязан изготовителю чипов предоставить обновление.
Кто-нибудь успешно использовал g_ether
модуль ядра с Windows 7/8 и Linux 3.4, или знаете, почему эти запросы / ответы, кажется, просто останавливаются после этого последнего GET ENCAPSULATED RESPONSE
?