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?

0 ответов

Другие вопросы по тегам