Obtaining a VID and PID
Most people who have worked with USB for more than a few minutes have discovered its dirty little secret; you can’t sell a USB compatible/compliant (note there is a difference, the latter requires a large payment) devices without first obtaining a unique VID/PID combination for your product. A VID, or Vendor ID, is a 16-bit value which is supposed to identify the exact manufacturer of a USB device, via a gigantonormous lookup table from the USB-IF. A PID, or Product ID, is supposed to identify a particular product manufactured by the vendor, so that when used together it forms a 32-bit unique code for each and every USB product on the market.
Note that this value is unique for a particular product, not device — each device can optionally have a unique serial number, but the VID/PID alone simply identifies to the host what the device is (e.g. “Happy Fun Technologies’ USB Webcam Model E123″). The problem with this is that for such a scheme to work, you need the USB-IF to act as a central registry for VID values, so that no two manufacturers release products to the market with the same VID/PID pair.
This is a problem only because the USB-IF charges companies out the rear for a VID value. Each VID value grants a company the ability to make a full 65,536 different USB products, which is a good thing — but it means that tiny businesses with only one or two products get shafted, since they’re stuck picking up the tab for a large keyspace that they simply don’t use. While 65,536 products is a lot for a single company, having only 65,536 different VIDs available means that most of the possible VID/PID combinations are wasted.
A few years ago, some smart businessfolk came up with a good idea; pony up the US$2000 or so per year it takes to secure a VID, and then resell the PID values to private buyers in small blocks. That was great for them and great for the buyers, since they could sell blocks of 10 or so at a reasonable price, and small companies could then use the purchased PIDs in their small line of products. Unfortunately, the USB-IF, never one to be cheated out of milking developers dry, threatened to sue all such resellers, and attempted to retroactively add in a clause to their license preventing resale.
So where does this leave us? Up the USB creek with no VID/PID. If you’re not interested in having full USB-IF endorsement (and the rights to use the USB logo on your products, etc.) you can still find people willing to resell you a PID block who bought a VID from before the license was updated. You could also bite the bullet and fork over your first-born – plus around US$2000 – to the USB-IF to buy a whole VID. Other options would be to ask your USB chip vendor, as some such as Microchip and FTDI will hand them out for free to customers requiring them. Finally, you could purchase a license to use a USB stack where the vendor has bought a VID, since in that case you’re buying the rights to use the stack, and just get the PID “for free” as part of the deal.
Do I find it ironic that people are forced to buy a license to a software USB stack implementation, just so they can bin it and just use the included VID/PID combination with the completely free LUFA stack? Yes I do. Am I grumpy about it? Yes I am. The USB-IF’s daft implementation of the VID/PID combination scheme has brought untold irritation to developers worldwide. Had they used a GUID implementation like Microsoft uses (where there is no need for a central repository, as the keys are partly time based and the key space is massive) or even a reliance on unique vendor/product descriptor strings we wouldn’t all be in this mess.
So go forth people, and source your precious VID/PID. Just make sure you tell the USB-IF how unhappy you are about the situation, regardless of how you obtain it.