Windows 7/8无法连接到Linux 3.4中的g_ether

时间:2016-08-30 21:40:07

标签: linux windows linux-device-driver rndis

我有一台运行Linux 3.4的嵌入式计算机,但不幸的是,目前还没有办法升级到4.x.y.

我使用以下配置选项将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)

FWIW我在Windows端尝试了几种不同的驱动程序,包括Linux USG Gadget文档中引用的linux.inf,几个内置驱动程序,以及我在论坛上找到的一个驱动程序。

从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

Linux端的rndis req21对应于Windows端的SEND ENCAPSULATED COMMANDrndis reqa1GET ENCAPSULATED RESPONSE也是如此。

在最后一次响应/请求之后,没有其他输出。

据我所知,Linux 3.4已经过时了,但我没有升级选项,因为这是一台嵌入式计算机,因此我很感谢芯片制造商提供更新。

有没有人成功地将g_ether内核模块用于Windows 7/8和Linux 3.4,或者知道为什么这些请求/响应似乎在最后GET ENCAPSULATED RESPONSE之后停止了?

0 个答案:

没有答案