11
\$\begingroup\$

I am trying to develop a portable device that will allow me to transfer data from one USB storage device to another without a using PC/Laptop. I was reading the developers guide by Jan Axelson where I came across a section that said that one must buy a USB vendor ID/product ID in order to make any USB device. I read the same on the USB Implementers Forum. I am unsure of the importance of this product ID in my project.

  • Is it something like a MAC address for computers/laptops and will I need it?

  • Is it something required only for developing peripheral devices and not devices like what I wish to implement(which I guess is more like a host)?

\$\endgroup\$
  • \$\begingroup\$ It sounds like you'll be acting as a host in that case so you won't require one as per Wouter's answer. \$\endgroup\$ – PeterJ Aug 31 '13 at 10:53
  • \$\begingroup\$ @PeterJ I am sorry for bringing this in late but I also plan to develop a touch screen interface to overlook and manage device transfer. Am I still good to go without a vendor ID/product ID? \$\endgroup\$ – Infusion of Wormwood n Asfodel Aug 31 '13 at 10:56
  • \$\begingroup\$ If that connected via USB to the same host device it would be a device and need one. See here for pricing: usb.org/developers/vendor. You really only need one to use the logo and for production, if you're just at a concept / testing stage you can just make one up. No official vendor ID 666 as been allocated for example I noticed a while back. Plus I'm not 100% sure you'd need one anyway, conflicts wouldn't be a problem if it's not meant to connect to a PC and you probably wouldn't need a USB logo, although I'm not sure on the legal side of things. \$\endgroup\$ – PeterJ Aug 31 '13 at 11:09
  • \$\begingroup\$ I plan to incorporate it in the same device like a touch screen on a smart phone.Will that make it liable to the said fee? \$\endgroup\$ – Infusion of Wormwood n Asfodel Aug 31 '13 at 11:19
  • \$\begingroup\$ No that will be fine. It's really only all about compatibility relating to end-user products when they get plugged into a PC directly. \$\endgroup\$ – PeterJ Aug 31 '13 at 11:21
12
\$\begingroup\$

I am not sure what exactly you want to make, but if it is a host device you indeed don't need an USB VID/PID.

The USB VID/PID of a slave device is used by the host to identify the driver(s) to be used for the slave device. A host device does not need to identify itself to the slave, hence it does not need a VID/PID.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ A device that can be used to transfer data from one USB storage device(pen drive) to another thus eliminating a laptop/pc which are mostly used to accomplish this. \$\endgroup\$ – Infusion of Wormwood n Asfodel Aug 31 '13 at 10:37
  • \$\begingroup\$ I've reworded the first sentence in case it felt ambiguous. \$\endgroup\$ – Infusion of Wormwood n Asfodel Aug 31 '13 at 10:40
  • \$\begingroup\$ This ignores OTG devices, which can be both host or slave. \$\endgroup\$ – Passerby Aug 31 '13 at 21:46
  • \$\begingroup\$ @Passerby: When an OTG device is a device it needs a VID and PID, When it's a host it doesn't. So you need to purchase a VID for the times its a device. \$\endgroup\$ – Warren Hill Sep 1 '13 at 9:04
5
\$\begingroup\$

Only devices need a VID and PID not hosts.

The Vendor ID or VID is a 16-bit number which you have to buy from the USB Foundation. If you want to make USB device (and fully play by the rules) the VID identifies your organisation.

The Product ID or PID is also a 16-bit number but is under your control. When you purchase a VID you have the right to use that with every possible PID so this gives you 65536 possible VID:PID combinations. The intention is that a VID:PID combination should uniquely identify a particular poduct globally.

This guarantees that no PC can ever see two different devices with the same VID and PID as the PC uses these to identify the device otherwise a conflict could occur.

Note: Unlike a MAC-ID the purpose of a VID:PID combination is to uniquely identify a device type to the extent that the operating system knows what drivers to use it's not always necessary to be able to distinguish between two identical devices. For example two USB memory sticks has the computer not only knows what the device is it knows which port its plugged into.

When you plug a USB device in the OS asks the device for its VID and PID and gives the device an address which it will continue to use until the device is removed (or the computer switched off).

Once the PC knows the VID and PID it checks to see if it knows these already. If it does it loads the correct drivers for it; if not you are given the opportunity to install any relevant drivers. This process is called enumeration.

On the other hand a MAC-ID does not in its self provide any information about what a device is (computer, printer, router, etc.) but does uniquely identify a device: two identical PCs will have different MAC-IDs as if they both get plugged into the same Ethernet network it wont work correctly. Two identical USB memory sticks however will have identical VID and PID.

If I want to make and sell 1 million identical USB devices I only need to buy one VID. If I want to make and sell 1 million Ethernet devices I have to buy 1 million MAC-IDs

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Why didn't they simply issue a discoverable usb device ID like Bluetooth address in Bluetooth devices or even MAC addresses in Laptops? \$\endgroup\$ – Infusion of Wormwood n Asfodel Aug 31 '13 at 17:17
  • \$\begingroup\$ @StaceyMyers I have extended my answer to explain the difference in what a USB VID:PID combination is trying to achieve as opposed to a MAC-ID. I've never designed a Bluetooth device so I don't understand it well enough to comment. \$\endgroup\$ – Warren Hill Aug 31 '13 at 17:54
  • \$\begingroup\$ This is very useful info for general USB knowledge (thus I upvoted, too), but I don't think it answers the OP's question (as the accepted answer does), since the thing the OP wants to design would be a USB host. I'm not suggesting any edits at this point, though - just FYI. \$\endgroup\$ – cp.engr Jan 3 '17 at 20:01
2
\$\begingroup\$

Note that some hardware vendors, such as Microchip, as willing to sublicense their own Vendor ID to theirs customers, for free.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ You will generally be limited to producing 10,000 units of your device max if you're sub-licensing a microcontroller vendor's VID in this way. \$\endgroup\$ – cp.engr Jan 3 '17 at 19:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.