Just as a quick foreword, this is a new series I’m planning on trying out. It’s aimed at beginners in the world of technology, computers, and hacking, but hopefully will teach everyone something new! Leave a comment down below of what you thought about this new type of post, if you have any questions about a term, and if you have any things you want explained!
USB – What is it?
Everyone uses USB. I mean everyone. It is the standard communication port for basically any type of data transfer.
The History of USB:
Originally released in January of 1996, USB stands for Universal Serial Bus. This is hearkening back to the days when basically every peripheral (anything that doesn’t come installed inside the PC’s case – printers, mice, keyboards, etc.) connected via Serial Ports. These weren’t very standard things, so one product from one company might have a different connector than one from another company. So, USB was developed as a high-speed, everyone-use-this connector.
Co-invented by and developed by a team including Ajay Bhatt, USB was backed in 1994 by seven big-name corporations, including Compaq, DEC, IBM, Intel, Microsoft, and Nortel. Ajay Bhatt was an engineer at Intel and it was Intel who created the first USB circuit boards in 1995.
USB went through several pre-release versions: USB 0.7 was released in November of 1994, 0.8 in December of 1994, 0.9 in April of 1995, then 0.99 in August of 1996, with the USB 1.0 Release Candidate in November of 1995.
The original USB 1.0 specification, released in January of 1996, stated that USB 1.0 had data transfer rates (how fast the data would move) of 1.5 Mbit/s at “Low Speed” and 12 Mbit/s at “Full Speed”. Use of USB wasn’t wide-spread until a later release of USB, USB 1.1, which came out in September 1998. The “Full Speed” data rate was meant for devices like disk drives that were transferring lots of data, while the “Low Speed” for devices like joysticks, mice, and keyboards.
Joint-leading the spearhead for the development of the higher speed transfer rate, Hewlett-Packard, Intel, Lucent Technologies (which is now known as Alcatel-Lucent), NEC and Philips brought to bear the USB 2.0 specification. USB 2.0 was released in April of 2000 and increased performance exponentially, achieving speeds 40 times that which USB 1.0 could reach. The new specification could reach speeds of up to 480 Mbit/s and was given the okay by the USB Implementers Forum (USB-IF) at the end of 2001.
USB 3.0 is the current generation of USB, the specification for which was published on the 12th of November, 2008. The new specification was meant to increase data transfer rates (now capable to reaching up to 5Gbit/s – over 10 times as fast as USB 2.0,) increase power output (make charging and powering devices easier,) but still remain backwards-compatible with USB 2.0.
Part of what makes USB 3.0 so much faster is that unlike the change from USB 1.1 to USB 2.0, the change from USB 2.0 to USB 3.0 changes the port a bit. USB 3.0 ports now incorporate extra pins, but in such a way that USB 3.0 cords can be used with USB 2.0 devices and vice-versa, albeit with decreased speeds. This new, higher speed bus is called SuperSpeed and the first USB 3.0 equipped devices were first available in January 2010.
Plenty more things have happened over the course of USB’s development, but they are more complicated than a Nutshell posts needs to include. If you want to learn more about the changes in the history of USB, the Wikipedia article on the topic of USB has a good list.
How does it work?
USB is actually a very complicated beast, with the current USB 3.1 specification being stored in a zip file 42 MB in size and the USB 2.0 specification at 650 pages at around the same file size. However, I’m going to try and explain how USB works in a basic sense.
The actual way that USB works is actually quite complicated, having to do with pipes, tokens, packets, hosts and slaves, and interfaces. Obviously, this is too complicated to go into length on here, but if you really want to learn the ins and outs of USB, you can read the USB in a NutShell series by BeyondLogic. Or, if you’re feeling really adventurous, you can attempt to read the USB 2.0 and USB 3.1 specifications from the USB Implementers Forum. However, I only suggest attempting the latter feat if you are laid up in bed and are exceptionally bored.
Basically put, USB has a host device, which is where the data transfer is being controlled from; down-steam USB ports, which are what allow you to connect the Host device and the peripheral device; and a peripheral device, the device that is being used by the host device. Here’s an illustration showing that in a simplified form:
Pipes are how the devices communicate; data is sent through pipes between the host device and the peripheral. A pipe is what a connection from the host controller to a logical entity transfers data through. The aforementioned logical entity is found on a device/peripheral and named as an endpoint, which is actually somewhat confusing, as the term endpoint is also sometimes used to refer to the entire pipe.
Pipes come in two forms, stream and message. Message pipes are bi-directional and are used for short, control transfers. These short messages are commands for the device and responses from the device as a result of those commands. A stream pipe is a one-way connection that connects to a one-way endpoint and is used for transferring large amounts of data. Within the stream type pipe there are three forms of transfer: isochronous, interrupt, or bulk.
- Isochronous: This is the type of transfer you use if you needs lots of data at a guaranteed, stable speed but exact duplicity isn’t a big deal and isn’t assured, such as is the case with music or video.
- Interrupt: This is used for devices that need guaranteed response times, such as a keyboard or a mouse, where you need to see the response as soon as possible.
- Bulk: This is used for large, sporadic transfers of data that are going to use up all of the available bandwidth and need to keep the data exactly intact.
Beyond this point it devolves into low-level routing of packages, endpoints, TOKEN packets, and much more complicated concepts which we won’t talk about.
Types of USB connectors
USB comes in many forms. There are two types in the original USB specification, Standard-A and Standard-B, both with plugs and receptacles. The Standard-B type was needed so you could plug the cable in to two separate devices, but still kept you from connecting two host devices.
Nothing really changed engineering-wise until the USB 2.0 specification, when the Mini-B plugs and receptacles were added. Then, the Mini-A and Micro-A plugs and receptacles were added, created and used most commonly for connecting to portable devices like cell phones and cameras.
Of course, now that USB 3.0 has been released, there are new connectors. The form-factors of the Standard-A and Standard-B have been retained, so USB 3.0 is backwards-compatible with USB 2.0. However, on USB 3.0 receptacles and cords, extra pins have been added, which is part of what allows the increased speed that USB 3.0 and USB 3.1 offer over USB 2.0.
The USB 3.0 Micro-B plug has the standard USB 2.0 Micro-B plug which allows the other end (Standard-B) to be backwards-compatible with a USB 2.0 port. However, it also has an extra 5 pin extension that, like the USB 3.0 Standard-B, allow for the increased speeds.
Now, there are plenty more details we could go into about USB: power standards, colors, cabling, proprietary connectors, Sleep-and-Charge ports; there are plenty of topics that we haven’t covered. However, this is supposed to be a nutshell series, and I think we’ve covered the basics well enough.
If you’ve made it this far and understand everything, very nice job! If you’ve managed to just read this far and only understand part of it, again, nice job! USB is a complicated beast, but since that means that devices usually just work, then that’s a good thing.
I hope you’ve learned something, I know I have while researching this topic. Again, make sure to leave a comment about thing you want explained and any questions you have!