8910芯片USB描述符:3、接口描述符&端点描述符---RNDIS

目录

点击这里查看所有博文

三、RNDIS网卡

  RNDIS 是 Remote Network Driver Interface Specification(远程网络驱动程序接口规范) 的首字母缩写,实际上的作用为 TCP/IP over USB,也即视 USB 设备(如手机)为网卡,是基于USB实现RNDIS实际上就是TCP/IP over USB,从而使 Windows 可以通过 USB 设备连接网络。

  TCP/IP 协议族,简称为 TCP/IP, 其名称源于其最早的两个核心协议 TCP(Transmission Control Protocol,传输控制协议)和 IP (Internet Protocol,网际协议),它规定了设备连接网络的方式以及数据如何传输的标准。

  8910平台支持RNDIS功能,并且默认处于开启状态。模块只要能联网,正常情况下只要将模块接入电脑(windows、linux)电脑就会识别出来一块网卡,不需要经历ppp拨号那样复杂的流程就可以访问联网。

3.1、RNDIS接口关联描述符(8字节)

字段长度(位)偏移量(位)十六进制值说明
bLength8720x08描述符大小为8字节
bDescriptorType8800x0B接口类型
bFirstInterface8880x00起始接口号是0
bInterfaceCount8960x02接口数为2
bFunctionClass81040xE0该接口属于无线控制器类
bFunctionSubClass81120x01该接口属于RF控制器子类
bFunctionProtocol81200x03该接口使用设备线适配器同步流接口协议
iFunction81280x05接口字符串描述符索引为5

在这里插入图片描述

3.2、控制接口

3.2.1、RNDIS控制接口描述符(9字节)

字段长度(位)偏移量(位)十六进制值说明
bLength81360x09描述符大小为9字节
bDescriptorType81440x04接口描述符类型
bInterfaceNumber81520x00此接口号的索引为0。
bAlternateSetting81600x00用于选择此接口的备用设置的值为0
bNumEndpoints81680x01此接口使用的端点数为1(不包括端点0)
bInterfaceClass81760xE0接口实现无线控制器类
bInterfaceSubClass81840x01接口实现射频控制器子类
bInterfaceProtocol81920x03接口使用设备线适配器同步流接口协议
iInterface82000x03接口字符串描述符索引为3

在这里插入图片描述

3.2.2、RNDIS CDC Header功能描述符(5字节)

  Header功能描述符表示功能描述符的开始,其他紧跟的内容就是此设备的功能描述符的内容。bcdCDC表示的是CDC的版本。

字段长度(位)偏移量(位)十六进制值说明
bLength82080x05描述符的大小,以字节为单位
bDescriptorType82160x24描述符类型
bDescriptorSubType82240x00描述符子类型
bcdCDC162320x0110USB通信类定义通信规范1.10版

在这里插入图片描述

3.2.3、RNDIS CDC Call Management功能描述符(4字节)

  Call Management描述的就是电话相关的东西,AT指令集的支持情况。 bDataInterface表示如有电话时,电话数据内容对应的接口号。

字段长度(位)偏移量(位)十六进制值说明
bLength82480x05描述符的大小,以字节为单位
bDescriptorType82560x24描述符类型
bDescriptorSubType82640x01描述符子类型
bmCapabilities82720x00Bit0:设备是否自己处理呼叫管理1
Bit1:设备是否可以通过数据类接口发送/接收呼叫管理信息0
bDataInterface82800x01可选用于呼叫管理的数据类接口的接口号

在这里插入图片描述

3.2.4、RNDIS CDC ACM功能描述符(4字节)

  ACM(Abstract Control Model),即抽象控制模型,PSTN下,除了ACM模型还有还有DLM(Direct Line Mode), TCM(Telephone Control Model)。

字段长度(位)偏移量(位)十六进制值说明
bLength82880x04描述符的大小,以字节为单位
bDescriptorType82960x24描述符类型
bDescriptorSubType83040x02描述符子类型
bmCapabilities83120x00第0位:设备是否支持Set_Comm_Feature、Clear_Comm_Feature和Get_Comm_Feature的组合请求
第1位:设备是否支持Set_Line_Coding、Set_Control_Line_State、Get_Line_Coding和Serial_State 1的通知组合

在这里插入图片描述

3.2.5、RNDIS CDC Union功能描述符(5字节)

  Union描述符就是用来告诉主机端,哪些接口是联合在一起的,对应着一个功能,这个功能需要主机装载对应的驱动来实现,因此,功能与驱动是一对一的关系。这里bControlInterface值为0,则表示接口0为控制接口,bSubBoardinateInterface0值为1,表示接口1为控制接口0的下级接口,即数据接口。在CDC标准中,控制接口是必须的,而数据接口是可选的,因此,数据接口为控制接口的附属。

字段长度(位)偏移量(位)解码十六进制值说明
bLength83200x050x05描述符的大小,以字节为单位
bDescriptorType83280x240x24描述符类型
bDescriptorSubType83360x060x06描述符子类型
bControlInterface83440x000x00通信或数据类接口的接口号
bSubordinateInterface083520x010x01下级接口的接口号

在这里插入图片描述

3.2.6、RNDIS 通知端点描述符(7字节)

字段长度(位)偏移量(位)十六进制值说明
bLength83600x07描述符大小为7字节
bDescriptorType83680x05端点描述符类型
bEndpointAddress83760x82这是端点号为2的输入端点
bmAttributes83840x03类型-传输:中断
低功耗:无
Pkt大小调整:无
wMaxPacketSize163920x0008此终结点的最大数据包大小为8字节。如果是高速,则每帧增加0个事务
bInterval84080x09轮询间隔值为每9帧。如果高速,每256帧

在这里插入图片描述

3.3、数据接口

3.3.1、RNDIS数据接口描述符(9字节)

字段长度(位)偏移量(位)十六进制值说明
bLength84160x09描述符大小为9字节
bDescriptorType84240x04接口描述符类型
bAlternateSetting84320x01此接口号为1。
bAlternateSetting84400x00用于选择此接口的备用设置的值为0
bNumEndpoints84480x02此接口使用的端点数为2(不包括端点0)
bInterfaceClass84560x0A接口实现数据接口类
bInterfaceProtocol84720x00接口使用不需要特定于类的协议
bInterfaceSubClass84640x00子类编码为0
iInterface84800x04接口字符串描述符索引为4

在这里插入图片描述

3.3.2、RNDIS数据输入端点描述符(7字节)

字段长度(位)偏移量(位)十六进制值说明
bLength84880x07描述符大小为7字节
bDescriptorType84960x05端点描述符类型
bEndpointAddress85040x81这是端点号为1的IN端点
bmAttributes85120x02类型-传输:批量
包大小调整:否
wMaxPacketSize165200x0200此终结点的最大数据包大小为512字节。如果是高速,则每帧增加0个事务
bInterval85360x00轮询间隔值为每0帧。高速未定义

在这里插入图片描述

3.3.3、RNDIS数据输出端点描述符(7字节)

字段长度(位)偏移量(位)十六进制值说明
bLength85440x07描述符大小为7字节
bDescriptorType85520x05端点描述符类型
bEndpointAddress85600x01这是端点号为1的输出端点
bmAttributes85680x02类型-传输:批量
包大小调整:否
wMaxPacketSize165760x0200此终结点的最大数据包大小为512字节。如果是高速,则每帧增加0个事务
bInterval85920x00轮询间隔值为每0帧。

在这里插入图片描述

USB-RNDIS是一种用于连接计算机和移动设备之间进行数据传输的协议。它可以使计算机识别和通信移动设备,并且在Windows 10操作系统上使用时需要安装相应的驱动。 在Windows 10中,一般情况下,当我们将移动设备通过USB连接到计算机时,系统会自动识别设备并安装相应的驱动。但有时候可能会遇到USB-RNDIS驱动未安装成功的情况,导致无法正常进行数据传输。 为了解决这个问题,我们可以尝试以下步骤: 1. 确保移动设备的USB连接线正常工作,并正确连接到计算机。 2. 打开设备管理器。方法是按下Win + X键,然后选择设备管理器。 3. 在设备管理器中,查找“网络适配器”下的“RNDIS/Ethernet Gadget”设备。如果存在感叹号或问号的标记表示驱动程序未正常安装。 4. 右键单击“RNDIS/Ethernet Gadget”设备,选择“更新驱动程序”。 5. 在弹出的对话框中选择“自动搜索更新的驱动程序”。 系统将自动搜索和更新RNDIS驱动程序。如果更新成功,设备管理器中的标记将消失,并且我们可以正常使用USB-RNDIS进行数据传输。 如果自动搜索无法找到合适的驱动程序,我们可以尝试以下操作: 1. 访问设备制造商的官方网站,查找并下载适用于设备型号和Windows 10的USB-RNDIS驱动程序。 2. 下载后,执行驱动程序安装文件,按照提示进行驱动安装。 3. 安装完成后,重新连接移动设备,并重新打开设备管理器检查是否驱动安装成功。 如果以上方法都无法解决问题,我们可以尝试通过Windows 10自带的“设备和打印机”功能来检查和修复驱动程序问题,或者搜索并下载第三方的驱动管理软件来帮助解决问题。 综上所述,USB-RNDIS在Windows 10上需要安装相应的驱动程序才能正常工作。我们可以尝试自动更新驱动程序、手动下载驱动程序或者使用驱动管理软件来解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遇雪长安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值