Android rndis网卡支持调试

本文介绍了如何在Linux内核中启用USBRNDIS功能,包括在defconfig中配置宏,检查设备描述符匹配,以及修改config.xml和init.rc文件以确保USB设备获得IP地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在defconfig中开启如下两个宏:

CONFIG_USB_USBNET=y

CONFIG_USB_NET_RNDIS_HOST=y

开启之后编译验证

方式一 、使用ifconfig -a查看是否存在一个usb0的设备

方式二、查看/sys/class/net/下是否存在usb0的设备

如果不存在usb0,就要检查usb设备描述符是否匹配,确认设备是否是rdnis设备

首先,USB RNDIS 设备描述符结构如下:

  1. bLength:描述符的长度,一般为 0x12。

  2. bDescriptorType:描述符类型,一般为 0x01。

  3. bcdUSB:支持的 USB 协议版本号,例如 0x0200 表示 USB 2.0。

  4. bDeviceClass:设备类代码,RNDIS 设备通常被识别为 CDC(Communication Device Class)设备,因此该值为 0x02。

  5. bDeviceSubClass:设备子类代码,RNDIS 设备通常为 0x02

  6. bDeviceProtocol:设备协议代码,RNDIS 设备通常为 0xff,

  7. bMaxPacketSize0:默认数据包尺寸,一般为 0x40。

  8. idVendor:供应商 ID,由 USB 实现论坛授权分配。

  9. idProduct:产品 ID,由制造商自行决定。

  10. bcdDevice:设备版本号,由制造商自行决定。

  11. iManufacturer:制造商名称的字符串描述符索引。

  12. iProduct:产品名称的字符串描述符索引。

  13. iSerialNumber:设备序列号的字符串描述符索引。

  14. bNumConfigurations:设备支持的配置数目,一般为 0x01。

查看代码中是否存在和设备相同的设备描述符 bDeviceClass、bDeviceSubClass、bDeviceProtocol

kernel4.14\drivers\net\usb\rndis_host.c

如上面存在usb0,但是ifconfig看不到,没有ip,则需要修改下面的地方

修改frameworks\base\core\res\res\values\config.xml文件

<string translatable="false" name="config_ethernet_iface_regex">eth\\d</string>

改成

<string translatable="false" name="config_ethernet_iface_regex">eth\\d|usb\\d</string>

在对应平台的init.rc中添加,不知道修改那个文件,可以搜索对应平台的dhcpcd_eth0是在哪里添加,直接复制粘贴即可。

service dhcpcd_usb0 /system/bin/dhcpcd -ABKLG
    class late_start
    disabled
    oneshot

service iprenew_usb0 /system/bin/dhcpcd -n
    class late_start
    disabled
    oneshot

修改完成后验证如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值