For the longest time. one of the major barriers to hobbyists and very small companies selling hardware with a USB port is the USB Implementers Forum. Each USB device sold requires a vendor ID (VID) and a product ID (PID) to be certified as USB compliant. Adafruit, Sparkfun, and the other big guys in the hobbyist market have all paid the USB Implementers Forum for a USB VID, but that doesn’t help the guy in his garage hoping to sell a few hundred homebrew USB devices.
Arachnid Labs had an interesting idea to solve this problem. Since other USB device vendors such as Microchip and FTDI give away USB PIDs for free, a not for profit foundation could buy a VID, give PIDs away to foundation members making open source hardware, and we would all live in a magical world of homebrew devices that are certified as USB compliant.
This idea did not sit well with VTM Group, the people serving as the management, PR, legal, and membership and licensing department of the USB Implementers Forum. In a slightly disproportionate response, the VTM Group told Arachnid Labs to,
Please immediately cease and desist raising funds to purchase a unique USB VID for the purpose of transferring, reselling or sublicensing PIDs and delete all references to the USB-IF, VIDs and PIDs for transfer, resale or sublicense from your website and other marketing materials.
Interestingly, Arachnid Labs’ and scores of other requests for an open source USB VID haven’t hit the desk of anyone at the USB Implementers Forum, the people who are actually in charge of designating USB VIDs and PIDs. There are a number of ideas to get around VTM Group that include squatting on USB VID 0xF055, but we’re at a loss why there couldn’t be a foundation that gives out open source USB PIDs. Microchip, FTDI, and Openmoko do the same, so perhaps it’s time to email some key people at HP, Intel, and Microsoft
Here’s my short and open letter to a few of large members of USB-IF, who have recently showed a lot of love and support to maker community http://www.rrkb.lv/musings/?p=156
“we’re at a loss why there couldn’t be a foundation that gives out open source USB PIDs”
Money and power. With that proposal the USB-IF (and therefor VTM) have less of both. This is clearly not something they will be keen on.
I thought that there was an effectively “dead” VID out there and that somebody had setup a de-facto registry for the PID’s in it since that VID wouldn’t be used again? If not, why not? As long as it doesn’t state that it’s a “USB Registry” or some such, it’s just a list of numbers. Call it a GSB VID/PID – Galaxial Serial Bus, not quite Universal but still pretty big.
That literally it and there’s nothing else to discuss. They’re making money off of who can say they conform to the standard and they don’t want to lose that control.
There’s a couple of things close to what you describe: Openmoko offers PIDs on their VID to anyone with an open source project, which the USB-IF doesn’t seem to have flipped out about.
A couple of others such as mcs electronics started selling PIDs on their VID, which is what started all this; USB-IF came down on them and ‘revoked’ their VID, a fairly meaningless gesture, and they still sell ‘unofficial’ PIDs on that VID.
Sometimes, I like to think you’re on the right track if you’re stirring up C&D letters.
Trying to squeeze the last bucks on something that is to fall down by the way side, soon?! Open source is now unstoppable ! Period ! And end of paragraph ! lol
Appalling
USB isn’t exactly a dying technology. I don’t see USB2 falling aside anytime soon, either. It’s a simpler protocol than USB3, and takes fewer wires to boot.
It’s fairly simple… they assign numbers so that there aren’t collisions etc
They also refuse do deal with people who just want one number but won’t allow you to buy a big expensive block and carve it up for individuals.
Basically what they’re saying is “we hate USB, please break it by creating lots of collisions”
(it’s possible they live in some parallel universe and don’t think that this is what will happen. Perhaps in their universe the IEEE don’t sell MAC addresses that way so they just don’t realise people will make numbers up instead)
Eventhough it is quite easy and reasonably cheap to buy an ethernet OID from IEEE, a lot of noname vendors never bother and either just pick a random OID or just use 00:00:00.
I have ethernet hardware right here from noname vendors with 00:00:00 as the prefix and the low order bytes probably being a serial number of sorts.
It could just be that no one buys OIDs from the IEEE because the IEEE doesn’t use them, name them, or created them. Ethernet OIDs don’t even exist at all. Ethernet uses MAC addresses and nothing else. It is right in the standard.
The first 3 octets of a MAC address are the organizational unique identifier.
http://en.wikipedia.org/wiki/Organizationally_Unique_Identifier
Here is the current list of OUIs:
http://standards.ieee.org/develop/regauth/oui/oui.txt
TLDR: you are very wrong.
This may be pedantic, but OP said OID (http://en.wikipedia.org/wiki/Object_identifier) which is governed by ITU (http://en.wikipedia.org/wiki/ITU-T) while OUI is IEEE. OIDs are not used in Ethernet MAC.
Except IEEE doesn’t care if you leach off of someone’s OUI. It’s not uncommon for a chip-on-board NIC to use the NIC vendor’s OUI rather than a unique one for the manufacturer. The only requirement (afaik) is that the address is globally unique.
USB-IF started out policing the USB world by limiting VID distribution and logo certification to companies who play nicely with their certification process. Now they’re just being dicks. Expect Google, Intel, or some other big open source player to force their hand.
“The only requirement (afaik) is that the address is globally unique.”
Nah, it is just assumed that there probably will not be a collision. It is why NICs can have software defined MAC addresses in the first place. Generally manufacturers cycle through their block so that by the time an address is reused, it has been many years since original issue. Using this method the odds of both devices ending up on the same local link is only slightly less likely as unicorns being created by a narwhal fetishist that owns a ranch.
Yeah, as long as the multiple MAC devices don’t end up on the same layer 1 or 2 network (hub or switch) then they will be fine. I’ve had several devices in my house share a MAC (network testing purposes) and if they weren’t on at the same time, or were each connected to a different router and DHCP, than the network doesn’t care.
But put them on the same switch, and boy can things get strange quickly.
I heard of this actually happening once, but was from the same batch of NICs. must have been a mistake in manufacturing.
Old war story here.
Must have been late ’80s or early ’90s.
We were consulting for a big customer who had lots of SCADA scattered around and was trying to consolidate its network. There was this newfangled Siemens (S5, I think. May have been S7) with an Ethernet port at one end, so we could communicate with the SCADA network via TCP/IP.
The first one was installed, we wrote programs, things went more or less as usual.
Some day a second S5 came in. We told the SCADA guys “configure this one as the first one, except the IP address should be ww.xx.yy.zz”.
Boy he did. We had a couple of days chasing ghosts in the (IP) network (tcpdump and a Linux box were a great help there) until we realized that there were… two devices with the same MAC address.
Only then we noticed that the configuration GUI for those boxes had an entry for the MAC address. Didn’t I say that the SCADA guy followed our instructions?
Wow someone is worried about their retirement fund. Honestly they would be better off helping us in the open source community, frankly nearly every major tech company has in one way or another supported us, so why write c&d’s when someone else is willing to provide a good resolution. I guess spoofing is the only way around it :)
USB started as an interface designed to be simple, stupid and cheap. Especialy stupid and cheap, that’s the root of all the overly-fudged clusterfuck we have now, including USB3.
Miss the days when standards were made to be adopted, not to rip license fees.
Hey a little bit of reality for you (trying to keep it simple and stupid so you understand): the USB foundation needs money to function. They have employees and do work on the standard. They do so by requiring companies to join them to be able to use the registered USB symbols and name. They also have a fee to get a registered vendor number. Both of those kind of fees are reasonable for even small commercial projects unlike some other standards I could mention. Trying to bypass their rules in a way that sounds suspiciously (at least at a cursory look) like a commercial idea essentially forced their hand with the expected result. Nothing strange, evil or something else. In the land of the lawsuit this is how everyone would react (sadly).
The correct way to do it is probably to try to convince one of the core members to design a open source registration of some kind – Intel perhaps would be interested in this?
Furthermore USB was originally made to be cheap. It isn’t stupid though so I think you are just projecting…
I don’t think anyone’s arguing the USB-IF can’t charge fees. We’re just upset with the level of those fees – they recently escalated from $2000 for a VID to $5000, as if the former wasn’t already fairly pricey – and their unwillingness to work with FOSS projects and smaller manufacturers in any fashion whatsoever.
Besides which, I’m fairly certain that the bulk of their income comes from the yearly fee to be a member of the USB-IF, which most larger companies are in order to use their logo.
Ultimaker BV has a USB ID. And we are thinking about “giving away numbers” to open-source projects, while the USB forum does not allow this, I’m pretty sure there are work-arounds.
For example, we would not license the use of the number to you. You could turn it around, on paper, you license the design to us, we put in the number. Pretty sure there is a legal workaround for this. (Next to that you cannot copyright/trademark a number)
If you are interested in this, drop me an email at d.braam@ultimaker.com
Another option I’ve heard suggested is “negative rights”: you don’t allocate me an ID, you simply promise that you won’t use a certain ID yourself. And possibly document that promise along with my product’s name somewhere.
If there is a legal workaround for us to get it for free, then why should a large company pay?
The reason why the industry didn’t go with Firewire is because they didn’t want to pay $1 to Apple for every device they sold.
The license for the block *has* been paid. It’s about giving parts of this block (either for free or for a small fee) to small (free software, open hardware) developers who’ll never need a whole block. What’s your (or Megol’s) problem?
But you can patent a number (a string of bits) with a software patent.
No you can’t.
He is making fun of software patents. It seems that the patent office cannot understand logic chains of two or more links. To wit!
Software, at it’s purest and usable form, is nothing more than a string of numbers. Software can be patented, ergo numbers can be patented. Despite it being distinctly against the rules of course.
So he is the best kind of correct: technically correct.
“technically correct”
… which is the best kind of correct!
In the US, yes, maybe. But we are outside of the US.
this may be ignorant, but i prefer that usb devices work when i plug them in. Im not interested in dealing with the loads of bullpoop I imagine would be required to use multiple devices with the same id on the same computer.
I don’t think anyone was suggesting that, were they?
As long as every product still uses a unique PID, this shouldn’t be an issue.
Luckily, devices have both Vendor IDs (which are unique for every manufacturer), and Device IDs (unique to the individual device). The VID and PID together give the device its identity, and helps prevent device ID conflicts across vendors.
As an example, if they got approval and you got a product ID from them for your creation, it would be known in the USB world as the “Arachnid Labs Jim Turner USBWidget”. If you also got a product ID from OpenMoko, it would be the “OpenMoko Jim Turner USBWidget”. Even if both vendors gave you the same PID, both versions of the USBWidget will have different device IDs.
Plug-and-play is a completely different animal though; that’s all OS-level driver support.
Plugfests are a sham, especially if you don’t run Windows n-1. If you think otherwise, please explain the many Cypress EZ-USB based gadgets that were logo certified over the years.
You want USB to “just work?”
Good luck with that.
As for that C&D letter; that makes me furious. . . presently I am needlessly sticking a FTDI chip in a design for the VID.
-Robot
Why not just create a new (open source) plug type that is faster and 3D printable. Using fiber optics for data and two wires for power.
Probably because it is not exactly easy to do compared to this :)
You left out the part where you’d have to convince all major computer vendors to include this port on their equipment.
ok so we buy one USB device license and mane an adapter. when people start asking why cant we use this with out adapter then the computer company will make it standard.
Hahahaha, this is so “underpants gnomes.”
Step 1:collect underpants
Step 3: profit
… What’s step two? –uhh
That one exists already. USB to RS-232.
and what matters most.. RS232 is still alive :D
Texas instruments could get off its arse and release all firewire microcode/code to world gratis opensource and let us all at it. Fxck Intel thunderbolt is borkefd. Usb is borked. Firewire was one standard that was most sensible and outside the world of the pc (which includes shit apple products)
All the kiddies are using laptops and tablets rather than desktops now. How do you add a new port? Where does the expansion card go?
The easiest solution would be to… make an USB adapter!
Thank you. That made me smile!
Lol
Now we need a USB2 to USB3 full speed adapter!:)
In the expansion card slot!
Yes, let’s “just” do that. It should “just” be “5 minutes work for a smart fellow like you”.
Sometimes people just have to do a thing and worry later about whether it was supposed to be possible.
A useful thing to do in the interim is assign a few PIDs to generic class compliant open source projects. many OSS projects are generic HID or serial projects, it won’t matter if they share vendor and product ids with other serial or HID projects since they will use the same generic drivers. The free form manufacturer and product fields can be used to further identify the device within the community, there is enough room for a domain name and/or UUID in the manufacturer field to ensure distinctness without a central system.
For instance, we can assign one to ‘generic open source serial programmer’ which we can create a rule for to create /dev/programmerXX files with the appropriate permissions.
We would just need a few of the openmoko or other open ids to do so to fit broad roles.
This will have the added benefit of allowing linux distributions to include rules for these default devices so no more hacking udev rules for each programmer you install to ensure you get permissions.
if anyone want to start a mass messaging im in. At least one VID designed for “unliscencied stuff” is a requirement. USB is everywhere of course small devellopper want to have them in project sometime
USB only became the standard because we let it. WE the people can choose a new one. example DVD replaced with blue ray. Make a faster cheaper better plug and the people will follow.
The thing is: I don’t think USB vanish anytime soon, because we have today a lot of gadgets out there relying on it. We might find a new formfactor (dualside-lightning-like-plug-for-the-win) but the idea would be the same I guess: plus, minus, Data+, Data-What else should a serial connection need? The idea of a 4 wire communication in a small package is so dead simple, that it would took a lot of effort to replace it with something even more simple (maybe dualside, 2 wire perhaps?)
What else a connection would need?
May be separate rx and tx pair? It would be easier and faster.
Mortimer did specify a serial connection. I’m not actually clear why we started moving away from parallel to serial interfaces for peripheral devices, but that’s certainly happened.
Now, personally, I’m very much in favour of creating and popularising what one might call UPB – Universal Parallel Bus – especially since one could claim it was several steps ahead of USB.
Unfortunately, however, it is very much easier said than done.
That said, there’s no reason a carefully-designed UPB couldn’t be fully capable of running USB devices using a very simple solid-state adaptor. Hell, if we did it very carefully one (dualside, naturally) UPB port could have a solid-state adaptor that used the tx and rx pairs as independent USB data pairs, allowing two USB ports per UPB port.
If you see what I mean.
The problem, though – as I mentioned – is that I’m essentially building castles in the air here.
Why won’t we create a new kind of connector? Perhaps a more efficient than the current usb. If many new boards come with it, it would be easier to convince some big corporation to include it.
What is your definition of “many”?
I went through the USB certification process with an audio device developed by [unnamed European company], and it is more than just getting a VID/PID and plugging them into the device firmware.
Power usage, sleep states, bus electrical characteristics, proper device state reporting – these are all considerations when applying for certification. I haven’t done any work on USB since USB2.0, but I can imagine the requirements for 3.0 are even more strict.
Ever see those chinese made ‘laptop lights’ that plug into the USB? All they do is leech power without properly reporting usage. So – the next time your USB hub shuts down due to an overdraw of current, or if you system no longer enters or returns from ‘sleep’ properly, that USB light is probably the culprit.
A set VID/PID could be used, with a unique sub product ID to distinguish between various implementations. The problem is when you take the design from development to mass-production, to sell or even give away, you will be required to take the device through the certification process. The USB committee is worried about USB devices that behave badly causing issues for the end-user.
So, while I understand the frustration the maker community is feeling, I also understand the concerns of the USB committee.
“So, while I understand the frustration the maker community is feeling, I also understand the concerns of the USB committee.”
Well, as you mention, the “Chinese USB Light” problem already exists, in spite of the USB committee’s diligent efforts. So I fail to understand their argument against providing a USB VID to a company that might issue PIDs to hobbyists and small operations. Where do they draw the line? If you pay the registration fee, are you by definition legitimate, or is there some other criteria? I suspect there are many VID holders whose equipment doesn’t meet the USB spec…
Honestly, these industry trade groups are a real PITA to deal with. They charge ungodly amounts of money for access to the specification, provide little or no support services and seem to exist only in order to hold semi-annual meetings where the big wheel members argue for their proprietary extensions to be adopted, so that everyone will have to pay them for whatever unique part they’ve managed to get written into the spec (e.g.: the AMP Ethernet “slide latch” AUI connector).
Disclaimer: I’m currently designing a USB interface, but plan to use the Cypress USB 3.0 chip, as I suspect many will. I think our client has a VID/PID which they will provide to us.
And by “ungodly amount of money” you mean: can be downloaded for free without registration from the USB implementers forum here:
http://www.usb.org/developers/docs/
Noted. I apologise to USB — they seem to be doing the right thing here.
I wish all interface specs were as easily downloadable.
This isn’t quite true: certification is only required if you want to display the USB logo on your product (for which you have to be a USB-IF member, yearly fee and all). You can obtain a VID for your exclusive use, and produce USB devices (sans logo) for a one off fee of $5000 – still way outside the reach of most makers.
Well a single VID set aside for “hobbyists” sounds like a good idea to me. Make sure that people are limited to say 200 PIDs in a lifetime and they have to be labeled hobbyists devices.
Squatting VID 0xF055 (or an abandoned VID) makes the most sense. If it’s a defacto/well known VID for open source use, the VTM can do all they want to revoke/re-assign it to some other paying company. But no paying company would accept such a VID. If I am paying $$ for a VID, I want it unique and not recycled or re-assigned with any potential for conflicts.
Yeah, this is the solution. Just don’t use their trademarks, chose a VID and they can’t do anything about it.
What’s so important about the specification anyway? Why can’t you make compliant stuff and not bother?
Well, to be compliant, you need to know what the parameters are, and those are in the spec.
I’m just wondering: What law or contract or TOS did they break by trying to raise funds for this purpose? And what purpose does it serve to send a broad C&D like that? They can just deny the application when it comes in, right?
I don’t understand lawyers.
It’s pretty easy to understand the lawyer. By taking a role in the process (writing the C&D) he gets paid. If they just denied the application then why pay the lawyer?
It’s the VTM Group whose behavior is a little harder to explain. Why did they get the lawyer involved? No doubt they wanted to stop this before it had any more exposure. Obviously they don’t undertand the Streissand effect.
LOL, wait until someone in a government figures out how to use the atom bomb effect.
But yeah, isn’t it possible to layer protocols over USB, anyways? Just have something like a memory-mapped device model with custom fields in a known location like many expansion card formats. You write to the USB device’s memory and give it a command in a standard language to send to an internal CPU. In fact, this is a lot like MCU’s do now but with an extra layer. ;)
All of this squatting and “just handing out numbers, no need to mention USB” is transparent and will never work. We need someone to buy a PID and make a few products, and then discover that hobbyists are squatting on it. The nerve! The gall! Time to shame those hobbyists by posting the number they squatted and their stupid product name. Some of these mean old hobbyists are so cocky, they send in their own information to get on the shame list!
And all of this because someone thought that it is much better idea to sell 65536 VIDs for $2000/$5000 each, than to sell individual PIDs for, let’s say $200. I somehow think they would make a lot more money that way and at the same time getting PID for your project would be a lot more affordable.
Anyone that has bought a device off of dx or a generic MID can tell you why they are so tight with the VID and PID. It is one of those last sticker tm bastions before the flood of penny electronics and why I just bought a crappy android charger at 5below to get a cheap female microusb port to fix a phone. Hmmm $3.00 from jameco and wait or buy something that has been on a boat for months from the other side of the world and it is still cheaper. It seems like they should be turning cargo ships away at the port and sending e-packet tariff skipping changs to the gulag. It will never happen. Not as long as China is at the helm. We already buy substandard electronics at target and walmart that then eat the cost of the return as the crappy product breaks in two weeks. This happens so often and guess what happens? There are return/refurb houses over here to trickle down the repair process and resell. Most are in Texas to take advantage of maquilladora labor. At no point in time is the original Shenzen Coffee Maker Consortium ever charged another penny for shipping a crappy product and the loss is eaten by our own greedy corporations. Eventually, they too will run out of money. Hovering at a true 48% unemployment rate and nearly 65% UNDERemployed and there isn’t anything to put back into the coffers. Same reason why we are paying for Medicare out of pocket instead of it being a taxable item for the masses. Too many leeches. Best of luck USB consortium and hopefully you will actually enforce your bunkum on the ones it was created for and not the tinkerer.
Route around the damage. Make new standard called XSB or whatever. Copy the USB functionality. A logo like the hackaday logo lets everyone know the score. Pick an abandoned VID and just start using it. It’s the bus for those who don’t want or need industry blessing. It’s not USB, but by a remarkable coincidence everything just happens to work.
There are some practical difficulties there. USB is not just funny connectors and shielded 4-way cable. There’s a lot of cleverly designed silicon involved in order to make it work as well as it does, and then there’s kernel drivers to write (for all the OS’s).
Someone would have to take it upon themselves to design, implement, manufacture and test the new numerous silicon designs that would be required to support your open source USB replacement. And before anyone suggests doing it all in PLDs or FPGAs, consider the $cost of such things compared to dedicated silicon.
please consider silicon functionality getting cheaper every year. Check out the MachXO2 for a few bucks a pop. It’s all happening there. Basically we don’t need USB to the full extent. We’d just need something better than RS232.
Would you please grant me the courtesy of at least reading carefully what I said: “but by a remarkable coincidence everything just happens to work” I’m NOT talking about re-engineering anything. I’m talking about a compatible/identical spec that just doesn’t happen to have the USB logo on it.
Hey, I have this friend in China who can make them cheap, too! ;)
When you have open source software on host device, you are holding proverbial “both the bread and the slicer”. We can make our host devices completely ignore the VID and propose a handshaking protocol above port enumeration to recognize open devices which are compliant to it. Then just any VID would do. A sort of hot-wiring the USB …
Or else, do a complete ground up design of open fast interconnection standard.
Personally I would like one where devices tell everything about themselves (large flash memories being cheap), to the point the host can easily configure its parametrized universal device driver to talk to them, and also carry user manual, own firmware source and blueprints – complete DNA, in a way. You wouldn’t have to track down manufacturer site or installation media – it would carry within itself all information you would ever need.
That would be stuff from the future – like in Sci-Fi novels and space opera movies (e.g. StarWars universe) where you aggregate any module with any system and it is instantly ready to operate. Well, I guess for that interconnection needs to be unconstrained by geometry – some local contactless or single point communication is in order, but I digress.
In conclusion, we don’t yet have any standard which is both tailored to fit spirit of openness and retains speed of communication and ease of use. The world needs it. Relying on locked-in, gated community standards is holding back our development. The way of the hacker is the way of modification, override and reuse, but we can also just completely make things up, using cheapest and most mass produced and available components among those whose specs fit our needs. Most of the times, the two largely overlap.
Cisco sells wifi adapters that have a built-in USB mass storage device with the drivers and manuals on it. When you plug it in the first time, you can install the driver and the manual. After the driver installs, the device shows up as a wifi device and you are off to the races.
Instead of starting over from scratch a little imagination will let you get what you want with existing tech.
That would be awesome. Imagine your mouse telling you that its broken and showing you how to fix it. Maybe do it the Cisco way for now, over the existing USB port, but have the OS detect that its not just USB but the “Special USB” and let it do some magic.
Maybe later have a fully open, high speed connection that you can plug in upside down without looking ;)
A man can dream though, a man can dream.
This idea has merit – we could cybersquat on one VID/PID pair as an ‘initialisation’ PID, and then have the host report what VID/PIDs are not currently free. The client device then reinitialises with a new VID/PID picked from the unused set. Think of it as DHCP for USB devices.
Can anyone tell me technical reasons why this could not work?
If you’re interested in working on this project, drop me a line: paul.pounds@gmail.com
One gotcha – better make sure they don’t buy a device that happens to have the same values, then plug it in _after_ yours.
What about having NO VID or PID and let the end user “fill in the blanks” after purchase? Explaining to them why and how to do it.
Time to flood some inboxes.
I heard that the “budget” electronics manufacturer Coby just closed its doors. Perhaps we can use their VID (1e74).
Has anyone thought of creating a USB device that can change it’s VID/PID on the fly through user control. E.G. Make a device that has no VID/PID with instructions to the user along the lines of “make up a number combination”.?
My project works more less this way (http://inputstick.com/). Device configuration (what obviously includes PID/VID) is uploaded at runtime form Android app, so if you want to, there is a possibility to allows user to manually set any PID/VID combination.
i find it interesting how many more people comment on open source oriented articles than your average article… probably because everyone loves open source.
It’s just awesome, what can I say :P
Yep. “Certified U5B” Startup an opensource project to shim into the USB enumeration process on all platforms (udev rule on osx and linux to check 0xf055 list when a VID 0xf055 is detected, some kind of similar hook into windows’ usb enumeration process). Best part is 0xf055 could not only keep track of P1D5, but also a driver database for easy plug+pray functionality. I like it! :)
The simple solution is to NOT pay for an ID. That way nobody owns it, so there is nobody to send letters to. Just choose a vendor ID that looks free, and all start using that ID. They can’t sell that ID any-more, so there won’t be collisions.
Or just call it USB4. USB4 standard: “exactly the same as, and hardware-compatible with USB3, but 10% of the vendor ID’s are reserved for open source projects, for the other 90% we may or may not follow the USB3 vendor ID’s”
Well, the correct solution is to move to a distributed rather than centralized system to assign unique ids. Luckily, one already exists called UUIDs which can be generated locally and are distinct. Just choose a single PID/VID for all projects that indicates the actual vendor id is a UUID in the manufacterer freeform field. Make it of the form
[Developer UUID]:[Product id]: freeform text/developer name
This will bypass the entire need for centralized number assignment and would only require the community acquiring a single vid/paid pair.
No big deal:
– If you are making your own USB dongle and not releasing
it, find a free/defunc VID/PID from the database.
– If you are making an open source USB dongle, ask OpenMoto nicely for a
VID/PID.
– If you are thinking of developing/selling a USB dongle, ask for an
extra $5k on kickstarter to buy a proper VID.
My code for using descriptor string as an additional unique ID. This would
help open source project to share same PID/VID. This is required to use the
VID/PID provided by V-USB project. libusb code – Use it & improve it as you wish.
// Match VID/PID and actual Strings as per V-USB “Free PID” requirement
if ((dev->descriptor.idVendor == *((uint16_t *) Vendor_ID)) &&
(dev->descriptor.idProduct == *((uint16_t *) Product_ID)))
{
usb_handle=usb_open(dev);
if(usb_handle)
{ Match=1;
for(i=1;i<=2;i++)
{
len=usb_get_string(usb_handle,i,0x0409,(char *)DescriptStr, sizeof(DescriptStr));
DescriptStr[len/2]=0;
Match = Match && !wcscmp(DescriptStr+1,ID_String[i-1]);
}
if(Match)
{
return usb_handle;
}
}
Their response is most certainly out of proportion but I don’t fully understand the motivation of Arachnid Labs, given that openmoko seems to be a viable solution to getting a VID/PID for an open source project. What am I missing?
Ahem…. Not a hack!
Thanks.
Where is the arduino? :P
VTM makes no rules regarding USB or it’s adopters. They just enforce the rules and the will of the USB-IF. Take all the shots at them you want but you are just shooting the messenger.
Having worked with a lot of USB devices in the past I can understand their point. There are so many dodgy devices out there claiming to be compliant, when they are not even close. They’re really just trying to protect a brand and a standard, and I can’t blame them for that.
Not the case at all – USB certification is entirely separate to the allocation of vendor IDs.
can we go after UPCs next plz??
Yes plz
How about this bunch of ars*s? http://en.wikipedia.org/wiki/PCI-SIG
… PCI-SIG specifications are available to members of the organization as free downloads.[1] Non-members can purchase hard-copy specifications for between US$1000 and $3500, or a CD with all specifications in soft-copy for US$5000.[2]
… Seems to me RS232 and ISA are way better in freedom aspect, than USB and PCI.
How about just using the Openmoko range?
http://wiki.openmoko.org/wiki/USB_Product_IDs
The last company I worked for manufactured USB devices, and we simply picked a VID/PID combination at random. I didn’t say it was a long story…
I’m surprised no one mentionned the already existing VOTI shared VID:PID. This has been available for years:
http://www.voti.nl/pids/pidfaq.html
V-USB has bought a subclass of it and set some rules on how to share it for multiple devices: http://svn.anu.edu.au/staff/bob/public/AVR/usbdrv/USBID-License.txt
Basically they require your drivers to also check the vendor string which should be an URL or e-mail address you own (this is much easier and cheaper than a VID registration).
I’m a bit confused…
VOTI has been selling PIDs subclasses for like, years: http://www.voti.nl/pids/pidfaq.html
And the V-USB USB stack for AVR bought one and found a way to share it between all users by using the vendor string to tell them apart: http://pouet.net/n.anu.edu.au/staff/bob/public/AVR/usbdrv/USBID-License.txt
Why would we need yet another VID for that, then ?
RE VOTI: http://www.voti.nl/shop/catalog.html “The USB organisation has threatened me with legal action, so I had to stop the sale of USB PIDs. Check usb-pid for alternatives.”
Distinguishing based on vendor string works in Linux, but it’s not an option for Windows drivers.
Yet… And yeah, the idea was so obvious, I wasn’t exactly the first (or even 100th) to think of it. The memory-mapped solution (defined ROM/RAM areas that are rather huge) would be interesting.
Just use a blank VID/PID and let the user enter it via DIP switches or something,. Should be hard to legally fight right?
If I understand it correctly, the “no reselling/sublicensing PIDs” clause is a more recent (in the last 3-5 years?) addition to the licensee terms. Those that already bought their VID under the old terms are not bound by the updated terms (that, and they are generally big enough that USB-IF won’t try just sending them a letter anyway). This is why some companies are still safely sublicensing individual IDs, while new applicants are getting spanked for it.
The real issue is, whose crackbrained idea was it to limit the vendor address space to 16 bits? This when a typical set of USB descriptors runs easily into thousands of bits. 65,535 unique vendors might sound like a lot, but between the churn rate of here-and-then-not Chinese sellers and hobby/OSS/small companies ponying up for a VID to sell just one or two products, they could exhaust pretty quickly.
Someone should have told that to Apple back in the ProDOS days. ;)