720模块USB描述符详解

@[TOC]
#Air720系列模块简介
**
Air720系列模块是合宙出品的4G LTE模块,拥有丰富功能模块以及完善AT指令,用户可以通过AT指令实现所需的功能,也可以插上PC的USB当作网卡使用,也可以使用PPP拨号等等。这些功能都可以用720的USB设备实现,下面就介绍下Air720系列模块强大的USB设备。
**
#Air720系列模块USB功能介绍

接口名 功能
NDIS RNDIS网卡接口
AT 发送AT指令
modem PPP拨号和发送AT指令
diag 调试抓log接口

#Air720系列模块USB描述符
##设备描述符
Offset|Name|Description|Value
—|—|—|—
1|bLength|此描述符的字节数|0x12
2|bDescriptorType|描述符类型|0x01
3|bcdUSB|此设备与描述表兼容的USB设备说明版本号|0x0002
5|bDeviceClass|设备类码|0xef
6|bDeviceSubClass|子类掩码(根据设备类码查看)|0x02
7|bDeviceProtocol|协议码|0x01
8|bMaxPacketSize0|端点0的最大包大小|0x40
9|idVendor|厂商标志|0x1286
11|idProduct|产品标志|0x4e3d
13|bcdDevice|设备发行号(BCD码)|0x0001
15|iManufacturer|描述厂商信息的字符串描述符的索引值。|0x01
16|iProduct|描述产品信息的字串描述符的索引值t|0x02
17|iSerialNumber|描述设备序列号信息的字串描述符的索引值|0x03
18|bNumConfigurations|可能的配置描述符数目|0x01
##配置描述符
Offset|Name|Description|Value
—|—|—|—
1|bLength|此描述符的字节数|0x09
2|bDescriptorType|描述符类型|0x02
3|wTotalLength|此配置信息的总长|0xde00
5|bNumInterfaces|此配置所支持的接口个数|0x05
6|bConfigurationValue|在SetConfiguration()请求中用作参数来选定此配置|0x01
7|iConfiguration|描述此配置的字串描述表索引|0x00
8|bmAttributes|配置特性:D6:自给电源, D5:远程唤醒|0xc0
9|MaxPower| 在此配置下的总线电源耗费量 (mA)|0xfa

#Air720系列模块USB接口描述符
##RNDIS接口组合描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x08
|2|bDescriptorType|描述符类型(IAD描述符类型)|0x0b
|3|bFirstInterface|起始接口|0x00
|4|bInterfaceCount|接口数|0x02
|5|bFunctionClass|类型码|0xe0
|6|bFunctionSubClass|子类型码|0x01
|7|bFunctionProtocol|协议码|0x03
|8|Index|描述字符串索引|0x05
###RNDIS 通信类接口描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x09
|2|bDescriptorType|描述符类型|0x04
|3|bInterfaceNumber|此接口的索引|0x00
|4|bAlternateSetting|可选设置的索引值|0x00
|5|bNumEndpoints|此接口用的端点数量|0x01
|6|bInterfaceClass|无线控制器类|0xe0
|7|bInterfaceSubclass|抽象控制模型|0x01
|8|bInterfaceprotocol|协议码|0x03
|9|iInterface|描述此接口的字串描述表的索引值|0x05
###RNDIS 数据类接口描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x09
|2|bDescriptorType|描述符类型|0x04
|3|bInterfaceNumber|此接口的索引|0x01
|4|bAlternateSetting|可选设置的索引值|0x00
|5|bNumEndpoints|此接口用的端点数量|0x02
|6|bInterfaceClass|CDC数据类|0x0a
|7|bInterfaceSubclass|抽象控制模型|0x00
|8|bInterfaceprotocol|协议码|0x00
|9|iInterface|描述此接口的字串描述表的索引值|0x05
###RNDIS端点描述符
####通知端点描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x07
|2|bDescriptorType|描述符类型(端点描述符)|0x05
|3|bEndpointAddress|端点号及传输方向|0x85
|4|bmAttributes|端点特性(批传送)|0x02
|5|wMaxPacketSize|端点支持的最大数据包长度|0x1000
|7|bInterval|端点数据传输的访问间隔|0x10
####输入端点描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x07
|2|bDescriptorType|描述符类型(端点描述符)|0x05
|3|bEndpointAddress|端点号及传输方向|0x06
|4|bmAttributes|端点特性(批传送)|0x02
|5|wMaxPacketSize|端点支持的最大数据包长度|0x0002
|7|bInterval|端点数据传输的访问间隔|0x00
####输出端点描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x07
|2|bDescriptorType|描述符类型(端点描述符)|0x05
|3|bEndpointAddress|端点号及传输方向|0x87
|4|bmAttributes|端点特性(批传送)|0x02
|5|wMaxPacketSize|端点支持的最大数据包长度|0x0002
|7|bInterval|端点数据传输的访问间隔|0x00

##AT接口
###AT接口描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x09
|2|bDescriptorType|描述符类型|0x04
|3|bInterfaceNumber|此接口的索引|0x02
|4|bAlternateSetting|可选设置的索引值|0x00
|5|bNumEndpoints|此接口用的端点数量|0x03
|6|bInterfaceClass|厂商定义的设备|0xFF
|7|bInterfaceSubClass|设备子类码|0x00
|8|bInterfaceProtocol|协议码|0x00
|9|iInterface|描述此接口的字串描述表的索引值|0x0B
###AT接口端点描述符
####通知端点描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x07
|2|bDescriptorType|描述符类型(端点描述符)|0x05
|3|bEndpointAddress|端点号及传输方向|0x8c
|4|bmAttributes|端点特性(中断传送)|0x03
|5|wMaxPacketSize|端点支持的最大数据包长度|0x1000
|7|bInterval|端点数据传输的访问间隔|0x10
####输入端点描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x07
|2|bDescriptorType|描述符类型(端点描述符)|0x05
|3|bEndpointAddress|端点号及传输方向|0x0d
|4|bmAttributes|端点特性(批传送)|0x02
|5|wMaxPacketSize|端点支持的最大数据包长度|0x0002
|7|bInterval|端点数据传输的访问间隔|0x00
####输出终结点描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x07
|2|bDescriptorType|描述符类型(端点描述符)|0x05
|3|bEndpointAddress|端点号及传输方向|0x8e
|4|bmAttributes|端点特性(批传送)|0x02
|5|wMaxPacketSize|端点支持的最大数据包长度|0x0002
|7|bInterval|端点数据传输的访问间隔|0x00
##MODEM接口
###MODEM接口描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x09
|2|bDescriptorType|描述符类型|0x04
|3|bInterfaceNumber|此接口的索引|0x03
|4|bAlternateSetting|可选设置的索引值|0x00
|5|bNumEndpoints|此接口用的端点数量|0x03
|6|bInterfaceClass|厂商定义的设备|0xFF
|7|bInterfaceSubClass|设备子类码|0x00
|8|bInterfaceProtocol|协议码|0x00
|9|iInterface|描述此接口的字串描述表的索引值|0x08
###MODEM接口端点描述符
####通知端点描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x07
|2|bDescriptorType|描述符类型(端点描述符)|0x05
|3|bEndpointAddress|端点号及传输方向|0x8a
|4|bmAttributes|端点特性(中断传送)|0x03
|5|wMaxPacketSize|端点支持的最大数据包长度|0x10000
|7|bInterval|端点数据传输的访问间隔|0x10
####输入端点描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x07
|2|bDescriptorType|描述符类型(端点描述符)|0x05
|3|bEndpointAddress|端点号及传输方向|0x01
|4|bmAttributes|端点特性(批传送)|0x02
|5|wMaxPacketSize|端点支持的最大数据包长度|0x0002
|7|bInterval|端点数据传输的访问间隔|0x00
####输出端点描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x07
|2|bDescriptorType|描述符类型(端点描述符)|0x05
|3|bEndpointAddress|端点号及传输方向|0x82
|4|bmAttributes|端点特性(批传送)|0x02
|5|wMaxPacketSize|端点支持的最大数据包长度|0x0002
|7|bInterval|端点数据传输的访问间隔|0x00
##DIAG接口
###DIAG接口描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x09
|2|bDescriptorType|描述符类型|0x04
|3|bInterfaceNumber|此接口的索引|0x04
|4|bAlternateSetting|可选设置的索引值|0x00
|5|bNumEndpoints|此接口用的端点数量|0x03
|6|bInterfaceClass|厂商定义的设备|0xFF
|7|bInterfaceSubClass|设备子类码|0x00
|8|bInterfaceProtocol|协议码|0x00
|9|iInterface|描述此接口的字串描述表的索引值|0x0B
###DIAG接口端点描述符
####通知端点描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x07
|2|bDescriptorType|描述符类型(端点描述符)|0x05
|3|bEndpointAddress|端点号及传输方向|0x8b
|4|bmAttributes|端点特性(中断传送)|0x03
|5|wMaxPacketSize|端点支持的最大数据包长度|0x0010
|7|bInterval|端点数据传输的访问间隔|0x10
####输入端点描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x07
|2|bDescriptorType|描述符类型(端点描述符)|0x05
|3|bEndpointAddress|端点号及传输方向|0x03
|4|bmAttributes|端点特性(批传送)|0x02
|5|wMaxPacketSize|端点支持的最大数据包长度|0x0200
|7|bInterval|端点数据传输的访问间隔|0x00
####输出端点描述符
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|此描述符的字节数|0x84
|2|bDescriptorType|描述符类型(端点描述符)|0x05
|3|bEndpointAddress|端点号及传输方向|0x0d
|4|bmAttributes|端点特性(批传送)|0x02
|5|wMaxPacketSize|端点支持的最大数据包长度|0x0200
|7|bInterval|端点数据传输的访问间隔|0x00
##功能描述符
详细参数请查看USB-CDC类相关文档。
###Header Functional Descriptor
|Offset|Name|Description|Value
|—|—|—|—
|1|bLength|表示该描述符的长度|0x05
|2|bDescriptorType|CS_INTERFACE|0x24
|3|bDescriptorSubtype|Header Func Desc|0x00
|4|bcdCDC|BCD编码CDC版本号字段|0x1001
###Call Managment Functional Descriptor
|Offset|Name|Description|Value
|—|—|—|—
|1|bFunctionLength |FunctionLength|0x05
|2|bDescriptorType|CS_INTERFACE |0x24
|3|bDescriptorSubtype| Call Management Func Desc|0x01
|4|bmCapabilities||0x00
|5|bDataInterface||0x01
###ACM Functional Descriptor
|Offset|Name|Description|Value
|—|—|—|—
|1|bFunctionLength |FunctionLength|0x04
|2|bDescriptorType|CS_INTERFACE |0x24
|3|bDescriptorSubtype|Abstract Control Management desc|0x02
|4|bmCapabilities|D0:The device does not handle call management D1:self handle|0x00
###Union Functional Descriptor
|Offset|Name|Description|Value
|—|—|—|—
|1|bFunctionLength |FunctionLength|0x05
|2|bDescriptorType|CS_INTERFACE |0x24
|3|bDescriptorSubtype|Union func desc|0x06
|4|bControlInterface|The interface number designated as the controlling interface for the union|0x00
|5|bSubordinateInterface0|Interface number of first subordinate interfacein the union|0x01
#Air720系列模块USB抓包分析

使用工具:BusHound
如上图所示:CTL是HOST发送的获取描述符的请求,IN是设备的回复。数据是横向解读。依次是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
设备配置描述符(09 02 de 00 05 01 00 c0 fa)
NDIS接口组合描述符(08 0b 00 02 e0 01 03 05)
NDIS通信类接口描述符(09 04 00 00 01 e0 01 03 05)
功能描述符(05 24 00 10 01 05 24 01 00 01 04 24 02 00 05 24 06 00 01)
通知端点描述符(07 05 85 03 10 00 10)
NDIS数据类接口描述符(09 04 01 00 02 0a 00 00 05)
输出端点描述符(07 05 87 02 00 02 00
输入端点描述符(07 05 06 02 00 02 00)
AT接口描述符(09 04 02 00 03 ff 00 00 0b)
功能描述符(05 24 00 10 01 05 24 01 00 00 04 24 02 02 05 24 06 00 00)
通知端点描述符(07 05 8c 03 10 00 10)
输出端点描述符(07 05 8e 02 00 02 00)
输入端点描述符(07 05 0d 02 00 02 00)
MODEM接口描述符(09 04 03 00 03 ff 00 00 08)
功能描述符(05 24 00 10 01 05 24 01 00 00 04 24 0202 05 24 06 00 00)
通知端点描述符(07 05 8a 03 10 00 10)
输出端点描述符(07 05 82 02 00 02 00)
输入端点描述符(07 05 01 02 00 02 00)
DIAG接口描述符(09 04 04 00 03 ff 00 00 0b)
功能描述符(05 24 00 10 01 05 24 01 00 00 04 24 02 02 05 24 06 00 00)
通知端点描述符(07 05 8b 03 10 00 10)
输出端点描述符(07 05 84 02 00 02 00)
输入端点描述符(07 05 03 02 00 02 00)

上次更新 2021-01-28