RNDIS使用参考

Version 1.0


1. 概述

RNDIS是一种Microsoft提出的网络驱动程序接口规范,定义了一种标准的通信协议,用于在USB设备和计算机之间进行网络通信。在RNDIS规范中,USB设备被视为一个网络适配器,可以使用标准的网络协议(如TCP/IP)进行通信。计算机可以通过USB接口和设备进行通信,从而实现网络连接。

RNDIS直接对接LWIP库,LWIP库具体路径:rtk/proj/sc/middleware/tcpip/

RNDIS驱动路径:rtk/proj/sc/customer/usb_gadget/class/src/rndis.c


2. 配置


2.1. mak配置

在相应的product config中修改mak文件的配置,要保证CONFIG_USB_GADGET_SUPPORT = TRUE以及CONFIG_USB_GADGET_SSTAR_SUPPORT = TRUE基础USB编译打开。

启用选项CONFIG_USB_GADGET_RNDIS_SUPPORT = TRUE。由于需要对接LWIP库,因此这个选项也需要启用CONFIG_SW_NET_SUPPORT = TRUE

如果需要一启动便初始化RNDIS,需要配置CONFIG_USB_GADGET_APP_CUR_CLASS = "7"

注意mak修改完成后需要make clean下再make


2.2. 命令调试

  1. 板端启动后,确认端口有新增RNDIS设备:

    如果没有找到RNDIS设备,可在其他设备中查看是否有未识别的设备:

    如果出现,请自行更新RNDIS驱动,可尝试方法:设备管理器->选中未识别RNDIS设备->更新驱动程序->浏览我的计算机以查找驱动程序文件->让我从计算机上的可用驱动列表中选取->网络适配器。厂商选择“Microsoft”,型号选择“远程NDIS兼容设备”。

  2. 打开网络连接,确认识别到的RNDIS网络参数:

    本次调试以上图网络参数进行。

  3. 板端命令行输入ipconfig usb0来配置板端的网络参数:

    将网络参数配置成同网段的参数。

  4. PC上使用命令与板端通信,如下图:

  5. 板端上使用命令与PC通信:

    PC和板端能够通过RNDIS互相ping通。