The problem with Thunderbolt

11 Mar 2019

Given the news at the end of last week about Thunderbolt being added to make USB 4 I’m going to have a little rant about what I dislike about Thunderbolt, as most of the tech press just say how wonderful it is.

First though I need to cover USB.

Its specification covers everything from physical connectors, electrical signals all the way up to and including the software side. Due to this the spec isn’t short, but it is all there.

The major downside to USB is it’s all controlled by the host, nothing happens without it saying so first. If a device wants to send data to the host it has to wait until it’s asked.

There are ways to get reliable transfers (e.g. isochronous transfers) but latency can be high (under USB Full-speed the interval is 1ms, under High/Super-speed is 150uS). This always requires the CPU to be involved so it’s not ideal for devices with slow processors, but even most mobiles wouldn’t have a problem these days.

Thunderbolt is a very different thing.

First off, it isn’t really a full specification, just a way of combining two existing ones in a single cable, those being DisplayPort and PCI-Express. The interfaces chips, which until this point were only available from Intel, just take those busses and put them onto a cable.

Nothing really talks Thunderbolt, they just talk over it, which has some issues I’ll get to in a minute.

The major benefit of Thunderbolt over USB is DMA (Direct Memory Access). What this means is the host just sets up a chunk of memory and lets the device get on with reading/writing to it, via PCI-Express. The CPU only gets involved when something needs to change of when the read/write is completed.

The downside of this is unless the hardware/OS are carefully written a malicious device could get access to everything in memory, and it turns out this is the case.

The other major issue with Thunderbolt is drivers. You see, in USB there’s something called class drivers.

These are defined in the spec and support a wide range of things: Human Interface Devices (HID, mice, keyboards), Audio, Video, Mass Storage and some others. Most OSs implement all the class drivers so if you make a device that says it supports a class driver then it works without requiring you to write one yourself.

This is my problem with Thunderbolt, there’s no class drivers for PCI-Express, so if there isn’t a driver for the exact device you have it does nothing.

Now if you have a specialist bit of hardware then this risk is worth it as the class drivers are never going to cover everything, but if everything requires a driver then even simple stuff won’t work.

That’s the problem, an external Thunderbolt Hard-disk is just a SATA disk, connected to a SATA PCI-Express interface, thats then connected to a Thunderbolt interface chip.

If your OS doesn’t have a driver for that SATA chip then it might as well be a door-stop.

I can take a 10-year-old USB Flash disk and put it in a machine and it works fine. I don’t think that’ll be the case with a Thunderbolt device.

What happens when the OS changes enough to require driver modifications and the manufacturer has either gone, or doesn’t support the chip anymore? Or what happens if the manufacturer decides to change CPU architecture (as the rumours are that Apple will do in the next few years)?

If you need the bandwidth or low latency then something based off PCI-Express is going to be a better option than USB, but for most stuff there’s no real benefit to Thunderbolt and a much higher chance that one day it’ll just stop working.