A couple of months ago I lamented the fact that historic USB documentation appears to have vanished from the face of the Earth. Today I finally found one such document, the USB 0.9 specification from April 13, 1995, published almost exactly nine months before the final USB 1.0 specification.
And where did I find the USB 0.9 specification, you may ask? Why of course, on my own hard drive. Not kidding. It’s been there the whole time. I really hate when that happens!
Anyway, back to USB. Back in December I complained that the Wikipedia article on USB claimed that USB 1.0 only specified the 1.5 Mbps low-speed transfer rate, and USB 1.1 added the 12 Mbps full-speed transfers. I also wrote that I had a vague memory of 12 Mbps being in fact defined first, and 1.5 Mbps added later, but I could find no evidence for that. Either way, USB 1.0 most certainly defined both speeds.
To recap, the March 20, 1995 issue of InfoWorld reported that “USB supports a 1.5MBps data transfer rate—compared to a standard serial port data transfer rate of approximately 400KBps”. A letter from the USB program manager at Intel published in the April 17, 1995 issue of InfoWorld stated that “USB supports a 12Mbps data transfer rate”. Note the capitalization.
In retrospect, it is apparent that InfoWorld simply screwed it up. When they wrote 1.5MBps for USB, they really meant 1.5 megabytes per second, which translates to 12 megabits per second. Except when they were talking about serial ports, they surely meant 400 kilobits per second.
After reviewing the USB 0.9 specification, I can say with certainty that the hints of low-speed USB transfers being a late addition are correct. The USB 0.9 specification defines only one transfer rate, 12 Mbps. There isn’t the slightest mention of any other transfer rate. That means the 1.5 Mbps low-speed transfers were probably added in the USB 0.99 specification in August 1995 (and yes, I checked, the USB 0.99 spec is not on my hard disk).
When did OEMs actually ship motherboards with usable USB ports anyway? I haven’t seen too many machines pre-Intel 430TX/PIIX4 that has a usable controller. Many 430VX boards were shipped with pin headers that were non-standard and some simply didn’t work with any USB supported OSes (the controllers either had the “!” mark in device manager, or weren’t seen at all).
The worst case had to have been when I wired up a 430VX board’s header to a USB breakout backplate back when I was a PC tech. I matched the pin connections to what was in the manual for the board and when I turned the machine on, the inside of the machine lit up like a Christmas tree from the fuse on the USB header burning out. After that we installed PCI USB cards for anyone who wanted USB. The best I could figure out is something was up with the port shielding on the breakouts we had and it was somehow shorting V+ to ground.
AFAIK newer steppings of the PIIX3 was better at USB support than older ones.
One could get lucky and find a 1996 motherboard whose USB ports would work with some USB devices. 1997, OSes, devices, and chipsets had improved to the point where it was unlikely to find a combination that didn’t work. Still had problems with not handling devices on boot and reacting badly to power saving.
I have a 440FX motherboard from 1997 that handled every USB peripheral I plugged into the motherboard connectors. I did add a USB 2.0 card once the price dropped to about $10.
Its likely that 440FX board had the later stepping of the PIIX3 and it was ATX avoiding the whole header issue. I can recall at least one circa 1996 product that was intended to ship with USB, but ultimately didn’t. One of my friend’s late-1996 HP Pavilion machines had knockout plates for 2xUSB ports on the case, but the ports themselves were not on the motherboard, which was 430HX based.
Speaking of USB specs, any reason why the motherboard headers were never added to later specs (or even the initial 1.0 spec as Baby AT motherboards were still popular)? You’d think they would have learned their lesson after the initial mess with USB 1.1/2.0 headers and defined a new header for USB 3.0 when it came out….. but they didn’t. USB Type-C appears on the market and once again, no header spec was defined.
PC Magazine Dec 17, 1996 points to the Toshiba Infinia 7200 as the first system with a working USB port. Though, at least in part, that is helped by Toshiba having the only USB device shipping. Gives an idea of the state of USB in mid-96 since the reviews would be done several months before the cover date.
Motherboard headers are defined in different documents. USB 3.1 FRONT -PANEL INTERNAL CABLE AND CONNECTOR is at the ORG site and explains a number different versions of 20 pin headers depending on whether one Type-C, one Type-A, or two Type-A connectors is needed and whether shielding to reduce EMI is necessary. Also covers a 40 pin header which doubles everything. Intel’s USB 3 motherboard headers are described in document titled USB 3.0 INTERNAL CONNECTOR AND CABLE SPECIFICATION which focuses on a 20 pin for 2 port design but suggests adding or removing pins to change the number of ports. Earlier, there were “Front Power I/O Connectivity Guide” and “Power Delivery Design Issues for High-Speed USB on Motherboards” which showed a number of suggested header designs including the omission of the over-current pin if the manufacturer declines to use a fuse.
The PIIX3 specification update says that boards with the initial A1 stepping of the PIIX3 chip should not have USB connectors installed, that’s how buggy it was. Out of the 15 total errata for PIIX3 (both A1 and B0 steppings), 13 are USB related (7 still in B0 stepping).
The B0 stepping was definitely much better. The A1 stepping was unusable, B1 merely required various software workarounds to avoid controller lock-ups. In addition, Selective Suspend was documented as effectively not usable (because resume didn’t work reliably).
That PC Mag article also covers the Pavilion 7000 series that my friend had. It also reminded me about how neat and exciting computers used to be.
I tracked down what could have been the first OEM systems with USB, and they appear to be IBM.
The IBM PC330/350 Type 6577/6578 was “available” June of 1996 featured two USB ports on a 430HX/PIIX3 motherboard.
The IBM Aptiva Type 2176 was “available” 5/20/1996 and featured one USB port on a 430VX/PIIX3 motherboard. Someone on VOGONS just got one that was built at least in June of 96 as that is when the HD is dated. When they reached customer hands is another question.
Windows 95 OSR2’s USB supplement was likely released in October of 1996 (going by timestamps on the original files), so these machines technically came with unsupported hardware from the factory.
I think that’s what we figured out last time… those IBMs would have been one of the very first USB-capable machines. How well they actually worked is the big question. Also, did the Windows 95 preinstall have any USB support or not? Hard to say.
Probably depending on when it was preinstalled. For comparison, Windows 95 OSR2 was released around August 1996 I think.
The Aptiva 2176 availability announcement was May 1996 but the actual date one could pick it up was Aug 1996. http://ps-2.kev009.com/pcpartnerinfo/ctstips/972e.htm
Note that the Aptiva 2176 came with two different system boards: A1 with smaller cache and no USB ports and A2 with larger cache and a USB port.
The Aptiva 2176 did not ship with USB drivers. http://ps-2.kev009.com/pcpartnerinfo/ctstips/f232.htm
There is an USB update to the Greek version of Win95 OSR2 which lists the 2176 as an applicable model. http://ps-2.kev009.com/pcpartnerinfo/ctstips/83e6.htm Note that the US equivalent update does not list the 2176. http://ps-2.kev009.com/pcpartnerinfo/ctstips/8e0e.htm This is confusing.
The Toshiba had the virtue of shipping with the InTouch module which required a working USB port. No idea if any other device worked with that USB port.
Thanks for the research. So the Aptiva was certainly among the first USB-capable systems… with no USB drivers. I hope they at least had the not-completely-broken PIIX3 chips 🙂
Looks like this Aptiva’s works (running OSR2+hacked USB storage drivers) https://imgur.com/a/VJkTPdB
Regarding OSR2, not every OEM was preloading it after it was released. I came across a few late 1996 Compaqs that were running OSR1 from the factory but shipped with OSR2 media in the box.
Glad to find out the port did work. Solves the confusion I had with IBM’s listing of support of USB for only some countries on that model.
Of course, the USB supplement support was based on WDM, which did not make it into NT4.
I wonder if this rumor is true:
USB had a prolonged rollout. For something that was supposed to be revolutionary, it appeared quietly on the market and had zero support. Its timing onto the market couldn’t be worse, it was released late enough to not be included in Windows 95. Anyway, here is how I remembered the rollout.
1996: Ports and motherboard headers appeared on some machines, but they usually weren’t advertised or the hardware flat out didn’t work.
1997: The ports and the drivers finally showed up in force thanks to wide deployment of OSR2 and the USB Supplement along with the reliable PIIX4 and 430TX/440LX chipsets. When I was servicing machines at the time, I mostly installed the USB support to get rid of the unknown devices in device manager and to get AGP support working on 440LX boards (despite being called a “USB” Supplement, it added other things too).
1998: Windows 98 (which I beta tested) finally showed up in June and companies started shipping products knowing that people could actually buy an OS with support. Most of the devices I setup as a PC tech at the time were printers and the occasional scanner. Once the iMac was released in August, mainstreaming of USB devices finally became a reality because iMac users had no other choice.
2000: “Legacy Free” PCs started to appear and were generally miserable when running Windows 9x/ME. If Windows didn’t detect your input devices and you had the login dialog enabled, it wouldn’t actually enumerate new devices at all…. and you couldn’t bypass the login dialog without an input device! I also recall one Gateway machine which wouldn’t work in BIOS setup without its original USB keyboard!
Personally I didn’t own an actual USB device until 2001 when I got a digital camera with USB Mass Storage Class support and it was one of the first models from Olympus with that!
Earlier cameras with USB used special drivers and pre-mass storage class devices tended to be evil and annoying in general. Why wasn’t that in the original spec?!
There is a beta of the USB supplement released in August 1996, just after the fixed PIIX3 stepping was arriving: https://www.betaarchive.com/forum/viewtopic.php?f=2&t=21883
The USB beta was far enough along for manufacturer testing but not really up to the task for consumer market as it only handled one device per type according to the documentation and really wasn’t even able to do that reliably. I think it took MS some time to realize that the USB abstract over simplified the challenges of implementing a working set of USB drivers which also required some changes to the base kernel.
Issues with USB continued through about 2005. Last major wide spread bug I can find listed on Usenet was in 2004 with a Linux problem where installing USB Zip drive disabled PS/2 mouse.
I had unusually good luck with early USB purchases but my memory isn’t good enough to pinpoint which month my office got its first USB card reader. (Which worked for about a year before new memory card standards obsoleted it.)
IMHO even today the MTP and similar “file share over USB” doesen’t work that well. You usually have to install drivers to your computer to be able to access your modern smart phone with as least day-to-day hassle as possible.
It also seems like different installs of the same OS does different things. I’ve had MP3 players that one XP (pro) machine treated as mass storage devices while another XP (home) machine treated as MTP. Problem was that the device itself didn’t show the root directory, only one level up especially dedicated to MTP, so I had to switch to mass storage to be able to see all existing files which I previously of course had stored in various directories in the root with the XP pro machine, as I had no indication that the device would show up as MTP on some XP machines. A minor mess.
Btw IIRC there are USB ports on the Digital Personal Workstation 500au, but at least with VMS they were never supported. It came out some time in 97 and is kind of like a PC but with an Alpha processor instead of the regular x86 processors.
I think an Olympus C-4040 was my first USB device… though I don’t remember when exactly. Early 2000s for sure.
USB device classes were never part of the core USB spec. It makes sense, they were written by different people and created for a different purpose. I think one of the major problems was that it took Microsoft so long to realize that they have to write the class drivers, and in fact if at all possible, the whole USB stack. Because if you buy a $5 or $10 USB device, the driver the vendor is going to give you for that price is going to be utter crap, that’s just Econ 101.
The various device class specs were also finalized relatively late, 1998-1999. Some of them (USB HID for example) are hideously complex.
My personal experience is that Windows 9x was nearly useless when it came to USB, and only Windows 2000/XP was truly usable. The “press a key to install driver for your new keyboard” idiocy really just highlighted what a joke Microsoft’s “Plug and Play” implementation was.
There’s a fair reason for MTP existing (how do you expose a smartphone’s internal memory as a blockdevice to a Windows PC when it’s probably ext4 underneath and the smartphone OS itself needs to access it constantly – file systems were hardly designed to cope with two adversarial block-level accesses), but you’re right, it works surprisingly badly considering how indispensable it is these days. And Apple does not care about Android, so they don’t bother bundling an MTP driver/client with their OS.
(Although I guess you *could* emulate a blockdevice with an (ex)FAT(32) filesystem towards the PC while translating file writes to native, but it would be a massive hack…)
> (Although I guess you *could* emulate a blockdevice with an (ex)FAT(32) filesystem towards the PC while translating file writes to native, but it would be a massive hack…)
Bochs and Qemu (and probably some other software too cool for me to have heard of) include code to present FAT filesystems of various types to the guest which are backed by your host’s filesystem, so perhaps there is somewhere there to steal some code from.
My recollection is of devices that would let you mount them as a block device, but then have to slowly re-scan the whole filesystem after you were done to work out what you did. Perhaps it was a Samsung Galaxy S that was the last device I had that didn’t force me to use MTP, and it had to re-generate its database of all my songs every time I unplugged from the PC, despite me not touching any of those files. So even if you could grant the PC exclusive access because it was (presumably) actually FAT, there were still drawbacks.
Well, yes, MTP is a good idea. But the implementation really sucks, at least using an Android phone together with Windows. Only one operation at the same time. As it’s flash and not mechanical disks that makes no sense performance wise, and from the users perspective it’s crap that you can’t navigate through the directory structure while a transfer is taking place.
Btw file systems accessed by more than one host is a part of VMS. Afaik VMS can even use disks shared this way to communicate between hosts, at least enough to use the disk as a way to gain more votes in the voting on forming a cluster 🙂
My old Samsung Android phone did block access to the microSD card only (which is FAT32), no access to the onboard flash file system at all. My current phones does MTP for everything… slowly, or can emulate a “digital camera”.
When I was referring to non-USB storage class devices, I was talking about early USB devices like external CD-RW drives, etc. that required proprietary drivers since the generic USB Storage Class didn’t exist yet.
MTP is awful – just getting the file listing takes forever (seems to load something like 5 files per second), and since it doesn’t work as a mountable drive, a bunch of things don’t work with it.
As for early USB devices, I think the first one I had was the Umax Astra 2100 scanner; I don’t remember having any problems with it, but I don’t remember what year I bought it either (I’m pretty sure I still had Windows 98 at the time).
The estimated sales of all USB peripherals in 1997 was 500,000. (Found the number in a 1998 PC Magazine article.) This counts the proprietary display controls, testing equipment, and some early hubs. Might be other items but quick checking through Google books ran into the problem that their scanner has decided that “1 GB” should be saved as “USB” leading to a lot of false positives.
On the other side of the issue, late arrivals to the USB party include AIX (2003) and OpenVMS* (2007). IBM announced that the Series i gained support for USB flash drives in 2013.
* The AlphaServers from 2003 could use USB keyboards and mice but not other devices with OpenVMS 8.3.
ender: There must be something wrong, so slow isn’t any of my MTP devices.
It not being “mountable” is a limitation in the operating system / driver. For example Windows XP presents it in the explorer but I don’t think that applications can access MTP files as if they were part of the file system. Crappy workaround-ish implementation.
I had an early Aptiva 2176 in 1996, ordered via IBM employee purchase. It had USB ports. The preinstalled Windows 95 had absolutely no support for them – not that anyone back then cared.
I can’t remember clearly, but I don’t think the BIOS had support for PS/2 “emulation” of USB keyboards and mice. The machine later got parked in a data centre at an ISP and eventually upgraded to 2.2-level Linux kernels; the Linux USB drivers printed the normal messages on boot up. I don’t think anyone ever plugged a USB peripheral into that thing.
I wonder if there are still any pre-1.0 prototypes around and how they would behave when plugged in to a modern machine. As low speed didn’t exist, did they even pull D+ up so they would get recogised as full speed?