USB的VID和PID

Posted andy连长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
MTK0e8dQualcomm05c6Google18d1Huawei12d1HTC0bb4
Acer0502ASUS0b05Dell413cFoxconn0489Fujitsu04c5
Garmin-Asus091eHaier201EIntel8087K-Touch24e3KT Tech2116
Hisense109bFujitsu Toshiba04c5Kyocera0482Lenovo17efLG1004
Motorola22b8NEC0409Nook2080Nvidia0955OTGV2257
Pantech10a9Pegatron1d4dPhilips0471PMC-Sierra04daSK Telesys1f53
Samsung04e8Sharp04ddSony054cSony Ericsson0fceSony Mobile Communications0fce
Teleepoch2340Toshiba0930ZTE19d2

备注:

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

附录

List of USB Devices

USB Devices【点我】

List of USB IDs

USB IDs【点我】

以上是关于USB的VID和PID的主要内容,如果未能解决你的问题,请参考以下文章

如何查看usb的vid和pid

USB的VID和PID,以及分类(Class,SubClass,Protocol)

使用 pyserial 识别给定 USB VID 和 PID 的 USB 到串行端口

怎么查看U盘的PID和VID信息

USB转COM口驱动。

从 VID/PID 中查找 USB 驱动器号(XP 和更高版本需要)