Sunday, 9 February 2014

usb device - Is a valid USB VID/PID necessary for strictly embedded use of the Bus?


So the system of USB VID/PIDs as far as I understand it is to avoid conflicts between devices and the USB-IF is handling the distribution of these IDs and wants a fee if you need a VID and a corresponding PID block.


Now how is the situation looking if you have an enclosed device where systems within that device talk via USB but the device itself does not expose a USB port or advertise USB compliance or the use of USB in any way, it is just used for internal communication like you would use SPI or I2C.


Do I still need a VID/PID from the USB-IF? If yes is it allowed to then just use the prototype VID 6666?


The USB Host device in this system is running Linux. So a driver is in use, the end user just can't plug in any more USB devices to this host. I have the ability to chose the VID for every device connected to avoid any conflict.



Answer




It will work, if that's what you're asking. And there is no law saying you must buy a VID from the USB-IF in order to use USB - you only get in trouble if you use the name and logo without permission. Some things to consider:



  • If you do want to insert a computer, to do debugging or something, life will be easier if you have a unique VID/PID combo and can write drivers accordingly.

  • At some point one of your customers will take the product apart and, if they see a USB port inside, plug it into a computer. They shouldn't have any drivers for that VID, but they might. You'll want to make sure that can't damage anything, or just stick a "warranty void if opened" sticker on it.

  • The same is true if the user can plug random hardware into the USB host within the device. They shouldn't have any hardware with that VID, but they might. And you don't want the host to brick that hardware by accident. If there are no external USB ports, then the warranty void sticker works here too.

  • Some dodgy USB sticks and other cheap clone devices use VID=6666 and PID=8888, and maybe others. It's probably worth checking and avoiding those PIDs.

  • You can buy single PIDs from MCS electronics for about $15. The USB-IF do not approve, but legally it seems they cannot stop it. Some manufacturers of USB hardware also give out PIDs from their VID.


That said, I'd probably just do what you propose, and use VID=6666 with some random (i.e. not 1111 or BEEF etc) PID which doesn't have any google hits.


No comments:

Post a Comment

arduino - Can I use TI's cc2541 BLE as micro controller to perform operations/ processing instead of ATmega328P AU to save cost?

I am using arduino pro mini (which contains Atmega328p AU ) along with cc2541(HM-10) to process and transfer data over BLE to smartphone. I...