How Fast Again?

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.

This entry was posted in Documentation, USB. Bookmark the permalink.

31 Responses to How Fast Again?

  1. Darkstar says:

    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

  2. Michal Necasek says:

    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?

  3. Darkstar says:

    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

  4. bhtooefr says:

    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…

  5. Michal Necasek says:

    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.

  6. bhtooefr says:

    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.

  7. Michal Necasek says:

    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).

  8. Michal Necasek says:

    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.

  9. Richard Wells says:

    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.

  10. random lurker says:

    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.

  11. random lurker says:

    *could have been reduced to simple circuitry with hardly any disadvantages, I meant to say. On the CPU however, well…

  12. Michal Necasek says:

    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…

  13. Richard Wells says:

    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.

  14. DrScriptt says:

    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.

  15. Richard Wells says:

    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.

  16. Michal Necasek says:

    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).

  17. Michal Necasek says:

    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).

  18. Michal Necasek says:

    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.

  19. Fernando says:

    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?

  20. Cutter says:

    @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.

  21. Michal Necasek says:

    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.

  22. rasz_pl says:

    >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! 😉

  23. Michal Necasek says:

    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).

  24. bhtooefr says:

    > 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?

  25. Michal Necasek says:

    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.

  26. Michal Necasek says:

    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.

  27. Yuhong Bao says:

    Though it is worth mentioning how part of the reason why NSP was killed was the lack of support in Win95.

  28. MiaM says:

    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. 🙂

  29. Richard Wells says:

    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.

  30. Michal Necasek says:

    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).

  31. Michal Necasek says:

    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.

Leave a Reply

Your email address will not be published. Required fields are marked *