@[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 | 设备配置描述符(09 02 de 00 05 01 00 c0 fa) |