前言
AirCat1系列模块是合宙出品的4G cat1 LTE模块,拥有丰富功能模块以及完善AT指令,用户可以通过AT指令实现所需的功能,也可以插上PC的USB当作网卡使用,也可以使用PPP拨号等等。这些功能都可以用模块的USB设备实现,下面就介绍下AirCat1系列模块强大的USB设备。
AirCat1模块USB功能默认支持NDIS网卡和ECM网卡,但同时只能支持一个,用户可以根据自己的实际需要自行切换。ecm网卡一般是在linux上面会用到,windows默认不带ecm驱动。除了网卡外,还默认支持三个虚拟串口。如下图所示:
接口名 | 功能 |
---|---|
NDIS | RNDIS网卡接口(默认) |
ECM | ECM网卡接口 |
modem | PPP拨号和发送AT指令 |
AT | 发送AT指令 |
ap | 调试抓log接口 |
本系列文章将会按照USB的枚举顺序依次对模块的USB描述符进行简要分析。
一、设备描述符&配置描述符
1.1、设备描述符(18字节)
设备描述符是USB设备的第一个描述符,每个USB设备都得具有设备描述符,且只能拥有一个。
| 字段 | 长度(位) | 偏移量(位) | 十六进制值 | 说明 |
| ———————- | ———- | ———— | ———- | ——————————– |
| bLength | 8 | 0 | 0x12 | 描述符大小为18字节 |
| bDescriptorType | 8 | 8 | 0x01 | 设备描述符类型 |
| bcdUSB | 16 | 16 | 0x0200 | USB规范版本2.00 |
| bDeviceClass | 8 | 32 | 0x00 | 驱动类型 |
| bDeviceSubClass | 8 | 40 | 0x00 | 驱动子类 |
| bDeviceProtocol | 8 | 48 | 0x00 | 无协议设备基础 |
| bMaxPacketSize0 | 8 | 56 | 0x40 | 端点0的最大数据包大小为64 |
| idVendor | 16 | 64 | 0x1782 | 供应商ID为6018:展讯香港有限公司 |
| idProduct | 16 | 80 | 0x4E00 | 产品ID为19968 |
| bcdDevice | 16 | 96 | 0x0000 | 设备版本号为0.00 |
| iManufacturer | 8 | 112 | 0x01 | 制造商字符串描述符索引为1 |
| iProduct | 8 | 120 | 0x02 | 产品字符串描述符索引为2 |
| iSerialNumber | 8 | 128 | 0x00 | 设备没有描述序列号的字符串描述符 |
| bNumConfigurations | 8 | 136 | 0x01 | 设备有1种可能的配置 |
1.2、配置描述符(9字节)
配置描述符定义了设备的配置信息,一个设备可以有多个配置描述符。
大部分的USB设备只有一个配置描这符,设备存在多个配置描述符时,系统会自动弹出对话框让用户选择。
配置描述符在USB设备的枚举过程中,需要获取两次:
第一次只获取配置描这符的基本长度9字节,获取后从wTotalLength字节中解析出配置描述符的总长度,然后再次获取全部的描述符。
配置描述数据中不仅包括配置描述符本身,也包括其下的接口描述符和端点描述符。
字段 | 长度(位) | 偏移量(位) | 十六进制值 | 说明 |
---|---|---|---|---|
bLength | 8 | 0 | 0x09 | 描述符大小为9字节 |
bDescriptorType | 8 | 8 | 0x02 | 配置描述符类型 |
wTotalLength | 16 | 16 | 0x0090 | 此配置的数据总长度为144。 这包括返回的所有描述符的组合长度警告:wTotalLength的值不等于实际长度 |
bNumInterfaces | 8 | 32 | 0x05 | 此配置支持5个接口 |
bConfigurationValue | 8 | 40 | 0x01 | 值1应用于选择此配置 |
iConfiguration | 8 | 48 | 0x00 | 设备没有描述此配置的字符串描述符 |
bmAttributes | 8 | 56 | 0xE0 | 配置特征: 位7:保留(设置为一个)1 位6:自供电1 位5:远程唤醒1 |
bMaxPower | 8 | 64 | 0xC8 | 此配置中设备的最大功耗为400 mA |