Get your own USB PID
pid.codes
pid.codes
Is USB-IF aware of this[1]? Would they see this as a violation of the spirit of the current terms in the sense of the revenue loss, and come after pid.codes for every $500 application they feel you might owe them? I'm optimistically hoping that you've discussed this with USB-IF and that although they may not officially endorse or support, they won't actively try to stop what you're doing.
[1] >>This site is in no way supported or endorsed by USB-IF.
EDIT: I should have read the FAQ[2] where you address this question specifically under "Won’t you get in trouble?"
[1] http://www.usb.org/developers/vendor/
EDIT: Fortunately, other organizations have done something similar, such as OpenMoko[2], without incurring USB-IF's wrath.
I agree with you and hope as well that the USB-IF gives the open-source maker community a break. Although, recently, the Bluetooth SIG (Bluetooth equivalent of the USB-IF) started to charge fees to anyone utilizing Bluetooth in their products, even if you used a module that was already qualified and paid fees. Hopefully the USB-IF won't do the same.
I have only experimented a little, but it seems that unless your device requires a special driver, you can use the VID/PID of another device that doesn't require a special driver (e.g. some generic keyboards), there won't be any problems. There are probably horrible corner cases that I haven't encountered, though, so don't do this.
And I think Qi-Hardware Inc. does it as well.
They assert the same rational for selling PIDs under the old license.
ehh...
[1]: http://www.mcselec.com/index.php?page=shop.product_details&f...
Also, "open source" seems a bit underpowered (as usual). Why not use their position to guarantee that users can easily modify the software running on the device?
Because that's not an ideology that everyone supports.
My first instinct would probably have been to have a traditional SQL database of sorts. That database needs to run somewhere. If I don't want to manage the database manually, I further need a whole web interface running somewhere. Account management. Provisions for users to recover their password if they lose it. And so on.
If you just use GitHub, it's up to the users to create a GitHub account and just send you a pull request. If you like what you see, you merge it. Virtually no effort needed.
And the database in form of the repository has complete history and is easily replicated or moved, by design. It even makes it easy for someone else to pull the database into their own projects, should they feel a need.
If you're a small-volume project, then presumably people will need to have custom kernel patches anyway and will be unlikely to actually have a device with a conflicting ID.
It also assumes that your project isn't close enough to some existing one that you really need to define a completely new interface instead of just using or extending that of an existing device.
If you do out the math it turns out there's a 50% chance of collision after only 77,163 hashes.
[1] https://en.wikipedia.org/wiki/Birthday_problem
[2] 256 days=2^8, 16=2^4
[3] 365 days=2^8.51, 19=2^4.255
The whole USB PID/VID problem is a cruddy and unnecessary situation. Bluetooth seems to support full UUIDs, and that's a low bandwidth protocol!
What's the technical reason why this is part of the USB spec? Why do devices need unique identifiers, or what benefit does this provide?
dd if=/dev/urandom of=~/guid bs=64 count=1
od -t x1 ~/guid
# the following step optional
bitcoind sendtoaddress '1MCwBbhNGp5hRm5rC1Aims2YFRe2SXPYKt' '19.72'It's also user friendly for a device model to have an identifier (because this is the typical way to match up the driver).
I don't think there is really any technical enforcement of it (but that's based on what I remember from briefly fooling around with a non compliant device).
Edit: [I had something here that was wrong]
I don't know of any vendor ID that has exhausted their product ID space which includes companies like Microchip which give away PIDs on their VID when you use their USB chips (with under 10k units in production)