I am developing the firmware for a USB-based hardware device. The USB interface protocol requires that each device be assigned a vendor ID (VID) and product ID (PID).
How do I, as a device manufacturer/designer/developer, acquire a vendor ID? It is my understanding that the USB-IF assigns and policies these; is that correct? Do I need to buy a vendor ID from the USB-IF?
What happens if, instead, I just randomly pick a vendor ID to assign to my device, or just enter 0x0000, 0xFFFF?
Vendor IDs are a scarce resource, just like OUIs (top 3 octets of a MAC address) and IPv4 addresses are. They have to be allocated, so others don't use IDs/addresses that collide with yours. The cost just raises the barrier to allocation, so everybody doesn't landgrab willy-nilly.
It would be nice to have a "private" range, much like RFC 1918 addresses (10/8, 172.16/12, and 192.168/16), that people, who don't care about collisions, can use.