USB的VID和PID

USB的VID和PID

1.USB定义,VID是什么,PID是什么,他们有什么用?

USB(Universal Serial BUS,通用串行总线);
VID(Vender ID供应商识别码)和PID(Product ID产品识别码);
每一个USB设备都有VID和PID,PID/VID唯一标识一个设备,HardwareID是为了给系统识别的 ,他是根据PID/VID而生成的。
VID是由供应商向USB-IF(Implementers Forum 应用者论坛)申请。每一个供应商的VID是唯一。
PID是由供应商自行决定;
主机通过VID和PID来识别不同的设备,根据他们(以及设备的版本号),可以给设备加载或安装相应的驱动程序。
这个与序列号没什么关系,序列号一般都是厂家固化到芯片中的信息而已。GUID只是为了标志你安装的设备是属于一个什么类当中,这个类可以显示再设备管理器中。
比如:你可以定义一个类,当然这个类有与系统中任何类都不同的GUID,然后选择一个图标和类名,就可以同网卡等其他设备一起显示在设备管理器下的根目录中了。
根据USB规范的规定,所有的USB设备都有供应商ID(VID)和产品识别码(PID),主机通过不同的VID和PID来区别不同的设备,VID和PID都是两个字节长,其中,供应商ID(VID)由供应商向USB执行论坛申请,每个供应商的VID是唯一的,PID由供应商自行决定,理论上来说,不同的产品、相同产品的不同型号、相同型号的不同设计的产品最好采用不同的PID,以便区别相同厂家的不同设备。
由于VID和PID重复并不会对产品的使用带来严重影响,很多USB设备生产商(山寨厂居多)为了方便,并不会向USB执行论坛申请自己的VID,而是依然沿用主控生产商的VID或随便向产品写入VID和PID;同时,正规厂家只需要申请VID,PID由厂家自行确定,所以存在相同型号的产品,可能采用了不同的主控(商业需要,很正常),而他们的PID是一样的,基于上述原因通过VID和PID就不能准确识别USB设备的主控型号,这个问题大家在使用USB设备的过程中需要注意。

VID和PID有两种存储方式

第一种是主控制生厂商的VID和PID,存储在主控的bootcode中;
第二种是设备生厂商的VID和PID,该VID和PID存储在主控外的非易失存储设备中(EEPROM或Flash)的设备固件中;
当USB设备连接主机时,如果固件中有设备生产商的VID和PID报告给主机,而是忽略主控生产商的VID和PID;
理论上一个USB存储设备的VID是设备生厂商的VID,而不是主控生厂商的VID,这两个VID应该是不同的(主控生厂商自己生产的设备除外);

常见供应商的VID和PID

厂商 VID 厂商 VID 厂商 VID 厂商 VID 厂商 VID
MTK 0e8d Qualcomm 05c6 Google 18d1 Huawei 12d1 HTC 0bb4
Acer 0502 ASUS 0b05 Dell 413c Foxconn 0489 Fujitsu 04c5
Garmin-Asus 091e Haier 201E Intel 8087 K-Touch 24e3 KT Tech 2116
Hisense 109b Fujitsu Toshiba 04c5 Kyocera 0482 Lenovo 17ef LG 1004
Motorola 22b8 NEC 0409 Nook 2080 Nvidia 0955 OTGV 2257
Pantech 10a9 Pegatron 1d4d Philips 0471 PMC-Sierra 04da SK Telesys 1f53
Samsung 04e8 Sharp 04dd Sony 054c Sony Ericsson 0fce Sony Mobile Communications 0fce
Teleepoch 2340 Toshiba 0930 ZTE 19d2

备注:

列表仅仅列了一些比较常用的,如果找不到你想要的,可以参照附录的链接进行查找,总能找到你想要的。

附录

List of USB Devices

USB Devices【点我】

List of USB IDs

USB IDs【点我】

你可能感兴趣的:(android应用开发,android系统开发)