Hacker News new | past | comments | ask | show | jobs | submit login
USB Product ID Allocations for Free Software / Open Hardware (github.com/openmoko)
132 points by seba_dos1 on June 11, 2018 | hide | past | favorite | 45 comments



I wish either (a) USB-IF would stop being evil and start assigning small PID blocks for a reasonable price, or (b) someone would sue the fuck out of USB-IF for antitrust violations.


There's also http://pid.codes


But can I apply before my project is published under a FOSS license?


No, as is clearly stated.

(I know you are joking, but I'm giving a serious answer in case people come along and read the comments here before/without following the link)


> Do not apply before your project is published under a FOSS license!

Well, you could of course try to apply before your project is published under a FOSS license! Who knows!


That's what people do with https://www.eff.org/awards/coop/rules (we continue to get claims regularly that ignore every single required element, warning, and instruction).


> that ignore every single required element, warning, and instruction

I suspect it isn't that they've read and ignored the instructions. More likely it is complete ignorance: that they have not even bothered to read that document properly, if at all.

It is easier to throw out an attempt and hope for the best, than to make an actual effort to be compliant. After first refusal people will either give in ("it was worth a try, but I really don't care that much"), make more of an effort second time around ("the lazy way didn't work, so maybe I'll make some effort") or bitch & moan about how unfair the system is like a child who isn't allowed more cookies until he tidies his room.

Very few people care to take the time to read the rules on public facilities. They even openly admit it: hence all the forum posts that start "please delete if not allowed" which basically means "I don't care if this is allowed or not, I want to post it so I'm going to whatever your rules say so fuck you".


they said it five times, so a quintuple-negative makes it still a negative if you multiply them up...


You can also just squat on one. As long as you avoid using the trademarks ("usb" and the logo) there is nothing that can be done to you even in the US. This is basically what most Chinese products do.


Yeah... please don't do this. There exist better options than polluting a shared namespace. It's just like putting your private network in IP space you don't own.


Not at all. Because it does not cost you $5,000 to get an IP address.


Even a relatively small subnet (/22 - 1024 IPs) will cost you $1-2000/year under most NICs.


Yes, yes it can. It's 5k for a Vendor ID. That's like a /16 subnet allocation in IPv4, which could easily cost far more than than a Vendor ID.


Yes but most people don't need an entire Vendor ID, but that's the minimum you can buy. They even banned vendors from selling individual product IDs.

USB IF are dicks.


What is the advantage of applying for one as a FOSS project as opposed to squatting?


You will get your product name visible in lsusb that way.


Well-behaved devices won't step on allocated IDs, so you can safely associate your device ID with your corresponding driver.


Not everybody wants to open source and give away for free everything they do, nor pay $5,000 to license something that is actually just a number. This is especially true for USB devices that follow the hid spec. They don't need drivers, so even if you happen to have one associated with that vendor ID and product id, the OS will not load it.


I have seen devices that used 0000 as VID/PID. It generally worked, but some software don't like this. (eg. virtualbox usb passthrough)


It is how Chinese you can get 100 Chinese wireless devices all with one MAC


MAC is different because you need one by device, so having to buy them in "bulk" is a lot more reasonable. USBIDs ought to be purchasable individually (or large enough that you wouldn't have to purchase them).


Yeah, if they were focused on what is best for users then at some point they would have added the option to use a UUID.


There are also the free shared PID/VID numbers from https://github.com/obdev/v-usb/blob/master/usbdrv/USB-IDs-fo.... They don’t have any licensing requirements.


I wonder if either openmoko or pid.codes actually check that the open hardware in the applications actually exist and work as advertised.

Like, I could create a stub project and publish it under an FOSS/OSHW license, but nothing in it actually works yet. Wouldn't it be a waste to allocate a PID to such project?


Of course it would. But the truth is that while 65000 is a small number cryptographically, it's still a lot of throwaway toy open source projects.


I know that pid.codes checks that you have actual, published open source code before he'll allocate you one. There's no reason to have one before that point anyway: you can always use a test code. It's only once the general public will be using it that you need a real, unique code.


That would only escalate the war. People would start out as an open source hardware project with minimal commits/docs and turn "evil" the moment they got assigned a code. Then they would have to account for that. War escalates again, go to step 1.


Does anyone know of a low cost way of getting a Product ID for a commercial product? I've been working on software for an embedded board and am using the USB port as a debug port. It works fine now as a USB serial link, but it would be nice to have our own PID, just not worth $5000 for a single product.



You can license PIDs inexpensively from MCS Electronics in the Netherlands. They bought VID 16D0 before the USB IF prohibited reselling product IDs.

At this point I believe 16D0 has been revoked by the asshats at USB IF, but that's not the customer's problem. It's not as if they'll ever be able to assign VID 16D0 to anyone else.


You can buy one from a dutch company that got their VID before the terrorists of the USB-IF tried to unilaterally change contract terms after the fact to prevent subrange resale: https://www.mcselec.com/index.php?page=shop.product_details&...


I have two of those OpenMoko USB IDs that I use for commercial products - they're open source of course



USB IDs are idiotic and should 100% be just squatted on. There is no reason such a stupid design should be enforced by any open source organisation.

If you want to have an identification for a device, standardise capabilities tags and provide some free form fields for perhaps at least manufacturer and description.


The trouble with free-form text fields is that they end up getting filled with lies for compatibility reasons like web browser User-Agents.


Who doesn't want "IBM/5.0 (Windows; U; en-US) GoogleUsbKit/42 (KUSB, like Geeko)" ?


Do you even know what USB IDs are ? You can not identify an USB device without them.


What's stupid is that USB IDs should have a large enough range that allocation wouldn't have to be centralized and monetized. Something like a UUID. I doubt the overhead would be significant enough to justify saving a few bytes. This is artificial scarcity.


Sure you can - you can look at the manufacturer / product strings. And for standard device classes (eg mass storage or CDC ACM, aka USB serial) you can just use interface descriptors to identify them.

Would be nice if more systems used the strings embedded in the device, like eg FreeBSD does, instead of looking up PID/VID in a static table.


> Sure you can - you can look at the manufacturer / product strings.

Sure, you can. Does not mean that the vendors will. If I had a dollar for each board identifying itself as "To be filled by O.E.M."...


Yes you can. On Mac you can use userspace USB drivers by default so you can use any other method to identify your device. On Windows you can use WCID to get it to automatically install WinUSB (Windows' userspace USB driver) irrespective of the product / vendor ID. On Linux I believe you just have to set up some udev rule and then you can use libusb.

Once you have userspace access there's basically no downside to squatting. The only minor one is if you happen to squat on an ID that also happens to have a kernel driver. But just pick a long defunct vendor and that's pretty damn unlikely.


As Raymond Chen would say, what if two devices did this? Suppose you have Widget A, which is squatting on ID 1234:5678, and Widget B, which is also squatting on ID 1234:5678. You plug both on the same computer. How would the driver, no matter whether kernel or userspace, know a newly plugged device with that ID is Widget A and not Widget B?


That's an argument for coordination between squatters, not against squatting.


Maybe they should start some sort of USB Implementers Forum to coordinate or something...


Why should they just be squatted on? How does squatting fix the problem?




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: