Or, Yet Another Wikipedia Mystery
Looking for something on the Wikipedia USB page, a detail caught my eye. In the version history section, both the table and the text claim that the original 1996 USB 1.0 specification defined 1.5 Mbps low speed transfer rate, and the 1998 USB 1.1 update added the much faster 12 Mbps full speed. I would like to say that that’s not how I remember it, but the truth is that I had no trouble completely ignoring the existence of USB until 2003 or so. Anyway, it certainly did not match what I had read elsewhere.
Finding authoritative information about the prehistory of USB is remarkably difficult for something that happened in the (early) age of the Internet. But finding a copy of the actual USB 1.0 specification is not that difficult. Sure enough, both full and low speed is defined there, so Wikipedia once again proves a questionable source of information. What mystifies me in this case is not so much how it’s possible that Wikipedia is wrong (with so much information, some of it is bound to be wrong) but how this particular error crept in. It’s something that is reasonably easy to verify, but more importantly, why would anyone even think that only the 1.5 Mbps low speed was originally defined? It’s not just a typo, it’s very specific misinformation.
I have a vague memory of reading somewhere that it was in fact low speed (1.5 Mbps) that was added to USB later, while full speed (12 Mbps) was the original speed. But either I’m remembering wrong or it happened before USB 1.0 was finalized; as mentioned above, information about USB prehistory is not easy to come by.
USB 1.0 full speed was capable of transfers in the 1 MB/s range. It was intended for floppy drives, printers, scanners, and similar devices. Low speed is much much slower and due to limitations on the USB packet size and transfer period, low-speed devices can only transfer a few hundred bytes of data per second. The advantage of low-speed devices is that they’re cheaper and use less power (slower controller chips), and the cables can be thinner (cheaper, more flexible) and longer because twisted pair conductors or shielding is not required. In other words, the USB 1.x low speed was meant for input devices such as keyboards and mice which need long and flexible cables but need not transfer much data.
The USB 1.1 specification in reality brought very few changes. Most notably there was no new USB 1.1 host controller hardware, the existing UHCI and OHCI controllers could handle USB 1.1 devices just fine. The updated USB specification largely clarified various details that were less than obvious in the USB 1.0 specification.
Note: Any pre-1.0 USB specification would be very welcome. It is clear that the USB specification goes back to at least 1994, but nothing from before 1996 appears to have survived, at least publicly. At least the USB 0.99 specification was public.
Apr 2022 Update: In the meantime, the USB 0.9 specification has been located. It is dated April 13, 1995. It never uses the terms full-speed or low-speed. But it clearly talks about them:
The standard USB cable will consist of one pair of 20-28 AWG wire for power distribution with another 28 AWG pair twisted, with a shield and overall jacket. This will be used for typical peripherals operating at the rated 12 Mb/s signaling.
An alternative cable of identical guage but without the twist or shield is under investigation. This will be used in a sub-channel proposal applicable to cost sensitive interactive peripherals and will be described in revision 1.0 of the specification.
In all other respects, the mechanical specifications for the sub-channel will be identical to the fully rated specification.
The “sub-channel” devices were clearly low-speed USB. The USB 0.9 specification confirms that the “full-speed” 12 Mbps USB was indeed specified first. In April 1995, low-speed USB was mentioned (though not by that name) but not defined except for cabling. The 0.9 specification in several places says things like “the data rate is 12 Mb/s” and it clearly was not fully updated to account for low-speed USB. There is no hint as to how fast the “sub-channel devices” might operate.
Why not correct Wikipedia’s error then? The error is actually only in the “USB 1.x” section, the “History” section shows the correct facts.
I went ahead and corrected the mistake in the “USB 1.x” section
The error was there twice, in the “Version History” section (table plus text). Yes, elsewhere on the same page the information was correct. That makes it all the more interesting — how did it get to be wrong in such a very specific manner when the very same page lists the correct information?
Probably people corrected the error (when they noticed it) only in the one section they read. I guess nobody reads the whole page when looking for just a tiny bit of information. So the error in other places stays since, usually, nobody checks whole articles for consistency
FWIW, InfoWorld from April 17, 1995, page 51 references USB being 12 Mbps, in a letter from James L. Pappas, USB program manager at Intel: https://books.google.com/books?id=pzoEAAAAMBAJ&lpg=PA51&dq=usb%20infoworld%201994&pg=PA51#v=onepage&q&f=false
That letter likely would’ve been written right before the release of the USB 0.9 specification, with 0.7 being, AFAIK, the first actual release (but probably not public?)
Also worth noting is that that was a correction to the USB info in the March 20, 1995 issue, which only references the 1.5 Mbps standard: https://books.google.com/books?id=lToEAAAAMBAJ&lpg=PA30&dq=infoworld%20march%2020%201995&pg=PA1#v=onepage&q=usb&f=false
Now I really want to see the 0.7 and 0.8 specs…
Fascinating. So in April 1995, 12 Mbps and 1.5 Mbps were presumably both specified. The USB 1.0 spec lists version 0.7 (Nov 11, 1994) as superseding 0.6e. From what I could find, work on USB started sometime in 1993, and in 1994 there was already a draft specification. What was in it… who knows.
The 0.99 spec was definitely public (but lost?), not sure about 0.9. I haven’t even been able to find something as trivial as the OHCI 1.0 (as opposed to 1.0a) specification, or Intel’s UHCI design guide older than revision 1.1.
Another thing that would be interesting is if someone can find someone else’s WinHEC ’95 coverage, to see if the 12 Mbps standard was mentioned there – as far as I can tell, that was the public unveiling of USB. (If the 12 Mbps standard wasn’t mentioned there, then it may be possible that 0.9 is where it was added.)
I did find an interesting piece, in which Intel’s Native Signal Processing initiative (which, as far as I can tell, failed in that form, but led to MMX (to support the processing demands) and AC’97 as its ultimate products) was railed against, but nothing about USB in that piece.
Intel’s NSP is a whole another sordid chapter in computing history. As far as I can tell, it was something Intel was extremely keen on pushing and Microsoft (Bill Gates) was strongly against, and succeeded in killing it. Seer Systems’ Satie soft synth (financed by Intel) was apparently one of the victims.
I found some USB-IF presentation from a Sep ’95 conference and of course both 12 and 1.5 Mbps speeds are mentioned at that point. But the presentations also place the beginnings of USB work in January 1993. See https://web.archive.org/web/19970414021743/http://www.usb.org/present.htm — for some reason the information was split across usb.org and teleport.com, and sadly the teleport.com bits weren’t archived at all.
I’ll have to see if I might have anything from WinHEC ’95 (likely not).
Ha, maybe my memory wasn’t wrong after all! https://www.intel.com/content/dam/www/public/us/en/documents/articles/usb-two-decades-of-plug-and-play-article.pdf
So yes, low-speed was a later addition focused on cost saving. The original USB speed was intended to be at least 5 Mbps. But “later addition” was probably sometime in 1994 if not earlier.
The UHCI Design Guide points to a difference between November 1995 (v1.0) and March 1996 (v1.1): the addition of Legacy Keyboard and Mouse support. Having low speed devices is rather moot if the planned low speed devices can’t be used. May have been a source of confusion.
I can’t say if they are connected but the general concept of NSP was very much alive in the form of Winmodems back in the late ’90s. To be honest, if only PCs had had a reprogrammable general purpose DSP (well documented and everything), modems and soundcards could have easily been reduced to simple circuitry. Sadly the concept never really delivered.
*could have been reduced to simple circuitry with hardly any disadvantages, I meant to say. On the CPU however, well…
Legacy keyboard/mouse support and USB input device support are different things. Legacy support means emulating a PS/2 keyboard/mouse controller, something orthogonal to the speed at which the USB devices communicate. That said, having the 1.0 spec would be useful…
Compaq pushed a general purpose DSP for sound and modem usage in a number of budget Presario models. Didn’t work too well nor did IBM’s MWave all-in-one DSP.
NSP looked like it would have been worse. Intel wanted NSP to do its thing when CPU was otherwise idle but decoding videos was a high CPU consumption task leaving very little CPU to handle the NSP’s generation of sound. Same applies to the beginnings of challenging internet scripting routines which would starve the NSP of the cycles needed for modem tasks.
Drive by mud slinging: I find it very odd (read: unbelievable) that the USB specifications are not available.
I thought the very nature of some of the specifications, particularly where they came from, meant that they would be available henceforth.
Perhaps they are behind a Pay Wall, and thus effectively unavailable.
That turned into an interesting rabbit hole. Websites got changed fast. The source for the erroneous claim in Wikipedia has it correct now but quickly checking the Internet Archive turns up that it remained incorrect* for about 8 years. AllUSB has a history section that has the 12 Mbit first and 1.1 introducing the 1.5 MBit which seems to be the only “reliable” source of 1.0 and 1.1 having different speeds.
* Doubly incorrect because it referred to speeds as megaBYTES per second which whoever edited Wikipedia corrected to megaBITS per second.
Some front panel USB ports were only capable of 1.5 MBit per second operation. I never managed to track down how that design related to the OHCI spec; the ports in question were all on Compaq systems.
No, what’s unavailable is the obsolete/unreleased specifications. The USB 1.0 specification was freely available when it was current, so was the USB 1.1 specification. Those were superseded by USB 2.0, which is still available. (USB 3.0 is a specification parallel to USB 2.0, extending but not replacing it).
Nice sleuthing, thanks for that! Boggles the mind that Wikipedia would base this kind of information on some random 3rd party site rather than the actual standard. I wish I could say it’s shocking but it’s really not.
If ports were only capable of low-speed transfers that suggests the extra conductors were missing, or wired incorrectly. I don’t think that has anything to do with OHCI, it’s to do with the USB electrical specs (and how low- vs. full-speed devices are detected based on voltage).
Not to mention 3D. It is doable software, but specialized hardware completely kills the software.
The closest thing to NSP is probably AC’97 and HDA, and even there the HW vendors can’t help but put custom circuitry for bass boosting, 3D enhancement, and who knows what else.
Excuse me if this is a lazy question. I haven’t studied the way that USB works.
I remember some comment that Intel chose to use the processor for the USB transfers instead of some kind of coprocessor, is this true?
@Fernando Not really, the processor does a lot of work managing the data, data queues and endpoints, but the actually transfer of the data is done by the USB hardware and not the processor.
Only somewhat true. The UHCI and EHCI controllers are what one might call semi-intelligent devices. They do a lot of work and handle all low-level communication details, but need quite a bit of help from the driver to implement the USB protocol. The newer xHCI controller is much more intelligent and more “fire and forget”.
One of the nastier “features” of old USB controllers is that they constantly poll host memory to see if there’s something to do. It’s pretty obvious that the old USB controllers were designed by people who were microcontroller experts, not by people who knew how to design modern PC peripherals.
>Intel’s NSP is a whole another sordid chapter in computing history. As far as I can tell, it was something Intel was extremely keen on pushing and Microsoft (Bill Gates) was strongly against, and succeeded in killing it.
Ironic, seeing as Vista killed EAX, DirectSound and audio hardware mixing.
Personally I never had any trouble using winmodems (under windows), performance hit was unnoticeable on ~1GHz ~2000 hardware.
>low-speed devices can only transfer a few hundred bytes of data per second
no, thats just most naive interrupt endpoint sending 8 byte every 10ms, aka basic HID keyboard. You can go up to 8 bytes every 1ms (8KB/s) like “gamer” 1KHz pooling keyboards/mice.
The trick is to use control endpoint (still 100% legit spec wise) and send/receive over 20KB/s in low-speed mode, half the floppy speed! 😉
Vista happened 10+ years after NSP was dead and buried… a whole another chapter. In a way it’s one of those cyclic things, at one time there are more transistors in the CPU, then in devices, then in CPU again.
Interrupt endpoints are not “naive” but standard HID device usage. Yes, you can transfer more over control endpoints (with custom drivers?)… or have a full-speed device, problem solved. The other issue is that yes, you can move 20KB/sec on low-speed control endpoints, but you chew up 160 KB/sec worth of full-speed bandwidth that way! It’s even worse if you’re on EHCI and sharing bus time with high-speed devices. Finally control transfers have no guaranteed bandwidth or latency, so the worst case behavior can be quite bad.
FWIW, I have one “regular” mouse which is a low-speed device, and one “gaming” mouse which is a full-speed device (and is in fact a composite device with 3 functions).
> Some front panel USB ports were only capable of 1.5 MBit per second operation. I never managed to track down how that design related to the OHCI spec; the ports in question were all on Compaq systems.
> If ports were only capable of low-speed transfers that suggests the extra conductors were missing, or wired incorrectly. I don’t think that has anything to do with OHCI, it’s to do with the USB electrical specs (and how low- vs. full-speed devices are detected based on voltage).
Except all the conductors have to be there – all I can think is, Compaq maybe didn’t shield those (therefore requiring low-speed), and then configured pull-ups/pull-downs to make the controller think anything attached was low-speed?
You’re right, the conductors all have to be there, differential signaling is always used whether twisted pair is used or not. Now I have to re-read how this works though, I was under the impression that there was no negotiation, a device simply reported whether it was low-speed or full-speed. Reading the spec I believe that to be correct. So if the port was wired such that it always detected a low-speed device, only low-speed devices should work in such port.
What allusb.org says today is still impressively wrong: “The USB 1.0 debuted in late 1995 and transferred data at a rate of 12 megabits per second. A revised version of this standard, USB 1.1, not only transferred data at a full speed rate of 12 megabits per second, but could also operate at a lower speed of 1.5 megabits per second for lower bandwidth devices. Due to its more efficient operation, USB 1.1 was used more by consumers than its predecessor.” The USB 1.0 spec was published on January 15, 1996, not in late 1995. As we established, low and full speeds were both supported from the beginning, and USB 1.1 is exactly as efficient as 1.0 was. The real reason why USB 1.1 was a lot more popular was that there was actual host and peripheral hardware (starting about late 1996), and Windows 98 finally had a mostly functioning USB stack. Not insignificant was also the fact that most USB device class specifications were finalized several years after USB 1.0.
Though it is worth mentioning how part of the reason why NSP was killed was the lack of support in Win95.
Speculation:
This kind of incorrect information could possibly have propagated from any source like an incorrect article written in a hurry in a non-english speaking magazine which then kind of caught on. As very few people actually used USB before version 1.1, even most computer interested people would not question an incorrect fact about an earlier version.
A reason for such incorrect facts sticking to Wikipedia for a long time is that this kind of information is mostly “fun facts” / archeology without much other practical usage.
Also Wikipedia is subject to vandalism – this is probably not vandalism but for example there were a known case were someone slightly altered the size of one of the states of USA and that slightly incorrect image were there for quite a while. 🙂
I may have been unclear in a previous post. The website with the inaccurate USB information with 1.5 Mbs being before 12 Mbs was https://www.qualitylogoproducts.com/lib/difference-between-usb1-usb2.htm You will need to go through the Internet Archive to get an earlier version of the page to see what Wikipedia used. AllUSB is a different website which seems at a quick glance to be accurate but is rife with mistakes. I apologize for the confusion.
I realize Wikipedia wants easy to read web sites for information but somehow a manufacturer of trade show swag is not the expected reference for technical explanations. There is something completely wrong with any erstwhile encyclopedia correcting obvious mistakes from their sources without acknowledging the adjustment with a “sic.”
Side note: USB capable motherboards were being sold in October 1995 according to Infoworld. I remember seeing a few Packard Bell systems from late 95 or early 96 with USB ports that were covered by a plate because the USB support chips were not working.
Ah, so there’s even more misinformation out there 🙂 (Wonder how much has been copied from Wikipedia.) Yes, I completely agree that using a site like qualitylogoproducts.com as a reference is just nuts. If that was the only reference about USB then perhaps, but it’s probably regurgitated third- if not fourth-hand information. No excuse for that when the actual primary source (USB 1.0/1.1 specification) is available. Using at least some book about USB as a reference would still be second-hand information but very unlikely to be wrong in any substantial way.
USB capable boards in October ’95? That’s a bit puzzling because it predates the USB 1.0 standard by several months. Of course if the chips weren’t really working then that might explain it!
One of the first truly USB capable systems I’ve seen referenced was the IBM PC 330/350 series, which appeared in June 1996 (the USB-capable models, that is).
Interestingly, IBM’s reference claims “1.5 MB/sec (max speed)” for the USB support. The machines used the 430HX chipset with PIIX3 southbridge. In September 1996, IBM had the IBM PC 365, Pentium Pro with 440FX chipset and the same PIIX3 southbridge and “one USB port / 12 Mbps / supports 127 devices”.
Actually… something occurs to me now which was likely at least a contributing factor in the confusion. For the PC 300GL, IBM lists “two USB ports / 1.5MB/sec (12Mbps) max speed”. 12 megabits per second of course is 1.5 megabytes per second. Confusing megabits with megabytes can easily happen, especially when the only difference is capitalization (MBps vs. Mbps).
Well, if you look at the Wikipedia page about USB, probably at least 90% of it has no practical use, it’s just historical or highly technical information of zero interest to a normal person. That may be a good reason not to have such information in an encyclopedia at all, but it’s not a reason to have blatantly wrong information there.
Pingback: USB 0.9 | OS/2 Museum
It seems the Wikipedia article got updated. It now has the correct speeds for 1.0. Additionally, it mentions low speed being added to allow for cheap unshielded cables, and the original speed was to be 5 Mbit. However I cannot find the source for that claim.
A reference sure would be nice to have. I don’t recall seeing 5Mbps mentioned, then again it’s entirely possible that in 1993 or so that was the speed they were working with.
As far as I know 12Mbps was (more or less) always “the” USB speed. I am guessing it was chosen in part so that USB would not be slower than parallel port.
I realize this original article was written a long time ago, but I just came across it. Just thought I’d share a couple of interesting things I’ve read/heard about USB (but am not sure if they are actually true).
The first is that Microsoft was the one who made the request to the USB organization to introduce the 1.5 Mbps speed. USB originally had no intention of using anything less than 12 Mbps. Microsoft wanted to use cheaper/more flexible cable on their mice that couldn’t support 12 Mbps, and of course mice don’t require a high-speed interface anyway. So 1.5 Mbps USB was born.
The second rumor is that in at least one of the earlier USB specifications (I don’t remember which one(s)), the spec didn’t actually say anything about requiring USB ports to plug external devices into. Supposedly, some manufacturers installed USB controllers and no ports, and I’m not sure those computers even had any internal USB devices attached which would make the entire USB implementation completely worthless.
Again, unsubstantiated rumors but I wouldn’t be surprised if one or both of them are true.
The thing about mice I’ve come across several times, and it makes perfect sense. I don’t even think cheaper cables were the main issue, but USB cables for full/high speed devices aren’t all that flexible and shouldn’t be long. Mice need relatively long and thin/flexible cables, and that was a problem. Mice (and keyboards) also don’t need much bandwidth, given that existing pre-USB models used something in the 10 kbps range. It is possible that cost was a factor in that a cable that was long/thin/flexible and capable of full-speed transfers would have been significantly more expensive. In the end I believe low-speed USB made perfect sense for input devices. It has 1/8 of the full bandwidth but it’s a good fit for devices that have no need to transfer large amounts of data. How it actually went down and how much of it was Microsoft I don’t know. Given that it’s in the specs, it’s safe to assume that other companies weren’t dead set against it. I would rate it as “true”.
The other thing sounds very plausible. The earliest boards with USB weren’t even ATX yet, so they had no back panel. There was a USB header on the board, but whoever built the PC was in no way obligated to put in the appropriate bracket with USB ports and internal cabling. I don’t know how widespread this was, but if someone told me that there never was a PC with a USB controller and no ports, I wouldn’t believe them. It is something the USB specs had no influence over. It’s also important to keep in mind that this would have been circa 1996 or 1997, when there was not a whole lot one could plug into a USB port, and it was probably way more trouble than it was worth, if it even worked at all (OS support).
I’ve also updated the article with a note about the USB 0.9 specification which confirms that low-speed USB was a late addition for “cost-sensitive interactive devices”.