10 ms·
Why USB sucks (2005)
- Hydraulix989 12y agohttp://i.imgur.com/kYGTLjc.png http://i.imgur.com/kYGTLjc.png
- hk__2 12y agoI never understood these jokes, I always put the USB key/cable in the good position. 99% of times you can rely on the USB logo (which has to be at the top).
- to3m 12y agoI do not understand the comment about the jokes. Where are the jokes here? But anyway, if you can see the USB logo, you are observing the device. Therefore, it will not be in the superposition state.
- insaneirish 12y agoTo quote John Siracusa (https://twitter.com/siracusa/status/302480597903884291 https://twitter.com/siracusa/status/302480597903884291): "You had one job." Externally symmetric yet internally asymmetric connectors demonstrate a fundamental incompetence of their designers. It baffles me that multiple people must have approved the USB connector design and we still ended up with the abomination that lives on 'til now.
- ghaff 12y agoFWIW, one of the key people involved with the USB spec (which is an incredible advance relative to serial, parallel, etc. BTW for anyone who remembers those times) told me once that the twiddling to get the right orientation was one of the main things he thought they got wrong with USB.
- spc476 12y agoI'm looking at a USB memory stick right now. On one side is the company name (Kingston). The other side has the device name (DataTraveler). There is no USB logo on the thing. So, which way does it plug in? Oh, and the USB ports on the front of my computer (tower) are vertical, nor horizontal.
- mirkules 12y agoEver tried reaching in the back of an iMac to plug in a USB drive? I have a 2011 iMac, and to this day I still have NO idea which way the slots are oriented. I usually just give up, stand up, and angle the entire computer just so I can plug it in.
- brownbat 12y agoSome of the complaints hold true, others just sound bizarre now: > But for the vast majority of devices, you had better have your driver disk handy Driver disks... yeah, I think I remember those? My biggest complaint with USB isn't there, the ports can be kind of fragile. Even without regular swapping (which the design seems to encourage), USB drives and cords slowly pry them out of position. Forget about the port if anyone bumps the USB stick or trips over the cord while it's plugged in.
- saganus 12y agoEven then, using USB devices WITH drivers beat the hell out of configuring IRQ and DMAs. I remember the ordeal it was when you wanted to add or change something and you had conflicting IRQs... pfff..
- julie1 12y agoBecause a perseverance in being stupid made the choice of a long series of bad choices. Motorola 68K and specialized high quality embedded units? (like amiga): no it will be overprices compared to the cough future price of an evolutive PC. Which final form are below average quality and overpriced embedded devices. Had you followed the way of the old wise and chosen motorola architecture, you would not have theses problems. :)
- rbanffy 12y agoThose old enough will remember the Apple II and its fully decoded, addressable expansion slots. Each slot with specific addresses for memory mapped IO and space for a small firmware (to boot a disk, output characters to a second screen and so on). The IBM PC looked remarkably primitive in comparison.
- jdboyd 12y agoWhen PCI replaced ISA (which was prior to USB taking off), dealing with IRQs and DMAs was a thing of the past, making that a poor reason to say USB is superior.
- 12y ago
- moron4hire 12y ago#1 is just the nature of cables. If you think blutooth is the answer, try using blutooth for a while. #2 is actually a really big deal with developing software to interact with anything USB. Well, I should say anything based on the FTDI chipset. I don't have any experience with anything else. Which is increasingly the case, given the modern proliferation of hobbyest hardware projects. There are no connection status events. RS-232 never developed any because a loss of connection with a cable that is physically bolted into the computer should be a catastrophic event. Oh, I cannot tell you how many hours of my life I'll never get back debugging connection status issues. And it doesn't necessarily have to be a physical break in the connection that causes the problem. It could be an every so small short in the connector that only triggers once in a blue moon when you shift yourself in your seat and accidentally bump the wire with your chair handle while also plugging in your headphones. Luckily, the latest versions of Windows (don't look at me, clients don't seem to care that they'd save a ton of money using Linux) are pretty robust to USB connection cycles. It used to be, if you lost a connection before closing the connection, you wouldn't be able to close the connection. The USB device would get assigned to the same COM port, which you couldn't open, because you still had it open. But couldn't close. Because you lost the connection. In the later days of XP, it often led to having shutting down the program, recycling the USB connection, and start the program again. In the early days of XP, it required a whole system reboot. #3 I don't actually begrudge anymore. It's a situation that occurred due to evolution. Regular B connectors are too big for small devices, so Mini-B was developed to accomodate. But it turned out that the design was significantly flawed, creating a board connector geometry that was not very robust against repeated pluggings and unpluggings. Micro-B was developed to be significantly stronger, to support a greater number of cycles (if you look closely, they aren't just a different shape, the pins are set in the plug completely differently). Then smartphones turned into micro-microcomputers and people started to want to plug devices into them. Suddenly, what was strictly a slave interface before, needed to have the option to become a master interface at will. USB-OTG was the result, and it's actually a rather clever compromise that maintains backwards compatibility well. #4 can be a significant problem when doing any sort of real-time data collection. It's nearly impossible to connect a variety of sensing devices to a PC and be able to synchronize the readings of them in time. For the most part, I take the system timestamp for everything, then generate a best-fit curve and use that for my calculations. There's just no confidence in the precision of the time resolution in USB. #5 isn't USB's fault, it's device manufacturers. Hardware developers are some of the worst programmers in the world (and yes, they will say the same thing about programmers and circuit design, but you don't see me designing circuits, now do you?). Your printer has a really shitty system for installing drivers because the driver developer can't be arsed to learn how the operating system works with drivers. And he can't be arsed because his manager is probably bugging him to "get back to real work". His list of new problems are largely obviated by FTDI. However, FTDI has its own problems, both technical and political.
- michaelt 12y agothe USB connectors have no locking mechanism. [...] users will scream in frustration when they realize their USB mouse has been inadvertently unplugged from the back of the computer because it wasn't locked into place. Is this really a problem, except for high-vibration industrial applications? I'd rather have USB than be fiddling around trying to reach thumbscrews on the back of my computer in the dark under my desk.
- baddox 12y agoI've encountered certain combinations of male and female USB plugs that fit extremely loosely, to the point that minor perturbation (like from a mouse cable) might eventually result in the plug falling out. It's pretty rare though, and it's probably just a matter of the manufacturing tolerances and how well the manufacture implements the physical spec.
- vernie 12y agoI don't know about you, but I really crank on my mouse. If your shoulder isn't moving you're not doing it right.
- jimmaswell 12y agoOnly my wrist seems to really move.
- ivanca 12y agoNot even that, now that I watch my hand truth is only my fingers do the motion but it's mostly because I like to work with a high sensitivity setting (less than 2cm to go through all the screen).
- sukuriant 12y agoThat mouse with the one and a half foot cable, right?
- mjcohen 12y agoThat's why I use a trackball.
- codeulike 12y agoThis seems odd to me, as a consumer I remember the days before USB was around, and it _really_ sucked. Maybe USB is less lovely if you are a driver developer, but thats because its pushing more work away from the consumer and onto the driver developer. As a consumer, USB has been pretty awesome. edit: I suppose you could argue that something much better than USB could have been possible, but thats how it is with technology, the standard that takes off isn't necessarily the best, its just one thats _good enough_ and gets traction somehow.
- Amadiro 12y agoDeveloping USB drivers is actually totally fantastically easy nowadays with libusb(x). You can more-or-less just pretend your USB device is a server you talk to through a socket. No need to even write a single line of kernel-code, you can do it all in python in userland, if you so desire. For many USB devices this is also a totally feasible thing to do, too, because most USB devices that are not providing some standard interface that the operating system takes care of (keyboard, mice, controllers, tablets, mass-storage, ...) just provide some sort of service that typically only one application would interact with, so just having the driver inside that application that interacts with it works well.
- Glyptodon 12y agoThe vendor ID device ID issue is/was real. I think there was a story here a while back about a manufacturer making it so hobbyists could use their ID or something.
- notthetup 12y agoThere is a great talk by Ian from Dangerous Prototypes on this from the 2012 Open Hardware Summit. http://www.youtube.com/watch?v=1pegVYODsn4 http://www.youtube.com/watch?v=1pegVYODsn4
- analog31 12y ago>>> I note that more than a few chip companies have created USB-to-serial bridges (with accompanying drivers). This is a sure sign of USB's technical failure. Which isn't to say that USB won't thrive. Here's my thought about those chips. I do a lot of simple prototyping, testing, data acquisition, and so forth. To these ends, I often build my own little gadgets that combine some sort of microcontroller with some analog electronics, etc. I wouldn't be insulted if you called me a hobbyist. Still, the stuff that I make works, and solves problems. There are "USB microcontrollers" that contain a built-in USB port. Then you have to wade through each manufacturer's peculiar documentation, and hope that their demo code does what you need, or prepare to roll your own on both the embedded and desktop sides. Or, you hook up a USB-to-serial bridge. There's nothing magic about serial, except that it only robs you of two pins, and setting it up is 100x easier. Also, the bridge chip runs independently, making it 100x easier to write real time code on the microcontroller. If I went to any other kind of interface, I'd use the same approach of a "bridge" module plus a microcontroller. There are such modules for virtually every conceivable interface. I've had the pleasure of watching my gadgets work on multiple platforms with no extra effort on my part. I think a platform needs to have at least one "people's port" and the FTDI chip meets that need nicely.
- cnvogel 12y agoExactly! While some people claim that this robs USB of some of its strength, surely having a 10 line cross platform python script control your ADC/blink the LEDs is the ultimate deal breaker for USB2uart. And even IF your micro comes with built in USB, it's just so convenient to just let it emulate a cdc compliant serial port working everywhere out of the box. Libusb is almost as good on non-windows (which needs some pseudo driver to allow the library to generically talk to the device)... but then one would need a serial-terminal substitute to send packets off data to arbitrary endpoints.
- myrmidon 12y ago> Libusb is almost as good on non-windows (which needs some pseudo driver to allow the library to generically talk to the device)... If it's your USB-device, you can add a WCID descriptor [1], and use the WinUSB/libusb API. No driver installation necessary post Vista (on XP you need to manually install the WCID driver, but only once). [1]: https://github.com/pbatard/libwdi/wiki/WCID-Devices https://github.com/pbatard/libwdi/wiki/WCID-Devices
- ISL 12y agoGrounding. That's why USB sucks. If you work with precision instrumentation, USB introduces ground loops and forces unpleasant grounding configurations. I've been looking for a USB 2.0 High-Speed (who came up with these names, where Full Speed is slower than High Speed?) opto-isolator for years. (Corning's new "3.Optical" cabling looks great, once it makes it to market) HN have any pointers? Edit: Looks like 3.Optical cables appeared for sale ten days ago! http://www.corning.com/news_center/news_releases/2014/2014041501.aspx http://www.corning.com/news_center/news_releases/2014/201404... , http://www.eaccu-tech.com/usb-3-0-optical-cables/usb-3-optical-cable-a-plug-to-a-receptacle-10-meter/ http://www.eaccu-tech.com/usb-3-0-optical-cables/usb-3-optic... Hm. They may be "for sale", but availability may be slim.
- tlb 12y agoA USB over twisted-pair extender, like [1] works. They just look like an extra hub to the USB stack. [1] http://www.digikey.com/product-detail/en/B203-101/B203-101-ND/4438264 http://www.digikey.com/product-detail/en/B203-101/B203-101-N...
- ISL 12y agoInteresting. Thanks!
- mindslight 12y agoI don't see any mention of isolation in that datasheet, nevermind an actual voltage spec. Granted I haven't looked super hard, but any USB isolator I've seen only ever does full speed. I recall seeing one chip from ADI that was meant for high speed USB isolation, but that's the closest I've come.
- ISL 12y agoEthernet is transformer-isolated [1]. If you just need to break a DC ground loop, a CAT-5 connection will do it. If you look at the Tripp-Lite's installation manual [2], you'll see that the external power supply is connected to the remote unit. [1] http://electronics.stackexchange.com/questions/27756/why-are-ethernet-rj45-sockets-magnetically-coupled http://electronics.stackexchange.com/questions/27756/why-are... [2] http://www.tripplite.com/shared/techdoc/Owners-Manual/933116.pdf http://www.tripplite.com/shared/techdoc/Owners-Manual/933116...
- foohbarbaz 12y agoFrom a developer standpoint. I could get a minimal output via a serial port with a few lines of assembly on a bare hardware. USB requires a lot more work and on Windows the API is atrocious. On Linux the API (libusb) quite a bit nicer, but still a bit of work. The plug and play part, device naming and unique identifiers are a special "joy" of USB. If serial port is sufficiently fast I'll take it any day over USB.
- byuu 12y agoI was able to build a serial bridge between an SNES and a PC on a simple breadboard with stock parts: http://i.imgur.com/sPKGvl.jpg http://i.imgur.com/sPKGvl.jpg (the output is from a Teensy that is running as a USB<>serial device, so the PC sees it as /dev/ttyUSB0 ... the input and passthru connect DB9 to the controller port on the console, and the switch allows the original controller to work in place of the comm board.) The Teensy driver code was around 10KB, and the PC code that opens /dev/ttyUSB0 was around 15KB. Have been trying for over a year to implement a true USB version so that we can take advantage of the full bandwidth capability of the system, which is 2.68MB/s, which only USB high speed can do, and it's been nothing but a nightmare. I will be really sad in the future when little toy projects like this are out of the hands of hobbyists due to costs and complexity. We've already lost that in the desktop operating system field, where video cards alone are more complex and undocumented than entire OS kernels these days.
- zokier 12y agoYou mean connecting to the EXT port at the bottom of SNES? I didn't even know that it had such thing. Sounds interesting, what are you trying to do?
- byuu 12y agoWell, we are currently connecting to the controller port because it's really easy to connect to those. But of course you can only hammer at those registers at around 40KB/s. So yeah, a friend made a PCB and found some female edge connectors we can cut to size to connect to the EXT port, where we can DMA at 2.68MB/s through using eight data lines. On the other side of the PCB, we just stuck a custom sized 28-pin IDE header. Easy to do whatever with that: wire to breadboard one-at-a-time or with an IDE cable. The hope would be to then have some device that monitors each clock rise, grab the eight bits on the data bus, and send it to the PC. It can buffer a bit and have some latency, that's not a big deal. But even with ICs that can latch the data quickly enough, we don't have enough bandwidth over serial nor USB1 to send 2.68MB/s of data. It'll have to be high-speed USB2, and will almost certainly need to be some kind of custom driver, as I doubt you can do some kind of super baud-rate of 16,000,000+bps.
- autokad 12y agoi was plugging in a usb into the back of my computer and i saw a firewire port. wow i forgot those existed, i remember they were all the rage and going to replace usb
- lttlrck 12y agoFireWire preceded USB by a couple of years.
- protomyth 12y agoRemembering the RS-232 ports and configuring for the devices speed, parity, etc. makes me think I can overlook a lot of flaws in USB.
- SixSigma 12y agoThe team that wrote the Plan9 Use code remarked "It's not Universal, it's not Serial and it's not a Bus"
- SixSigma 12y agos/Use/USB/
- rbobby 12y agoSeems to have forgotten that before USB any strange/unique device required an interface card. And resolving IRQ conflicts... what a giant pain. Oh and then they changed the interface bus (ISA, EISA, MCA, VLB, PCI, etc) every few years.