Fixing Thunderbolt USB Dock for Dell Precision 5510

30 November 2023

About a 2-minute read

I bought a Thunderbolt dock, the Dell WD22TB4. As the name hints, this dock came out in 2022 and sports Thunderbolt 4, while my Precision 5510 laptop from 2017 has Thunderbolt 3. Fortunately, like USB, Thunderbolt is backwards-compatible, so this dock should work with my laptop. I used the same dock with a work laptop, a five-generations-newer Precision 5560 also running Linux, and it worked great, delivering smooth 4K60 video and USB ports.

Unfortunately, while my Precision 5510 could charge from the dock and pass video through it, it couldn’t use the USB ports. This incompatibility was just minor enough for me to keep using the new dock with its better video bitrate even while having to plug USB devices into the laptop directly again, a step backwards in convience compared to the previous USB-C dock with its worse video framerate. Thus began a months-long albeit intermittent search for the problem, and I am happy to report I found the solution!

TLDR: The Precision 5510’s Thunderbolt firmware is buggy, and updating it fixes the USB port issues on Linux. I found the latest firmware on LVFS, installed it with fwupdmgr, and now the USB ports on my dock work great! Here are the steps to do the same:

  1. Identify the version of Thunderbolt controller firmware on your Precision 5510:

      > fwupdmgr get-devices
    
      Precision 5510
      │
      └─Thunderbolt host controller:
            Device ID:          cfad6899e91b587ba93beb78d57bae8001bd305b
            Summary:            Unmatched performance for high-speed I/O
            Current version:    12.00
            Vendor:             Dell (THUNDERBOLT:0x00D4, TBT:0x00D4)
            Update State:       Success
            GUIDs:              febe4287-5bce-5310-a1d4-32ed973cd977
                                351e2f41-8007-59d6-8dc8-1a00a83e8ea5
                                17c9727e-0343-5eb3-bd40-c54b1ed85e27
                                4b0fa34e-5dd2-5ee0-9112-94e951a74823
            Device Flags:       • Internal device
                                • Updatable
                                • System requires external power source
                                • Device stages updates
                                • Signed Payload

    That Thunderbolt host controller is the part responsible for handling Thunderbolt peripheral connections. Notice that it’s version 12.00? The current version is actually supposed to be 16!

  2. Download the firmware from LVFS. Dell distributes their official firmware images for Linux through LVFS. At the time of writing, this was the latest version. It has a filename like 8FDJ2_NVM16.00.cab.

  3. Install the firmware with fwupdmgr:

    > fwupdmgr install 8FDJ2_NVM16.00.cab

    fwupdmgr will automatically unpack this CAB file, find the appropriate device to apply it to, install it, and restart the Thunderbolt controller.


That’s it! After months of searching for a problem in the Linux kernel, looking through the Arch forums, StackOverflow, UbuntuForums, and AskUbuntu, it turns out that Linux wasn’t the issue at all.

This laptop came out early in the Thunderbolt 3 days, when Linux support for Thunderbolt was just getting started and even support on Windows was hit or miss. Since then, Thunderbolt drivers on Linux have come a long way, and the experience is generally excellent for simple things like a USB dock.

Thunderbolt is such a complex interface that it feels like we are in a new era of hardware-software abstraction leaks, where it’s harder than ever to trust drivers for formerly-basic peripherals. Because Thunderbolt exposes a whole PCI bus to the outside world, there are tons of new edge cases, many of which seem to happen in the firmware. The mere capability to update the firmware in the Thunderbolt controller feels like a hint that there will be issues, a concession to not getting it just right the first time around.

In contrast to something like USB, where the controller chip either does its job or you toss it out and find a new one, Thunderbolt controllers offer some sliding scale of capability and compatibility that requires much deeper analysis, with debugging tools that I don’t have, and updating the firmware can change those capabilities.

Hopefully, as support for Thunderbolt matures and the edge cases are better understood, using Thunderbolt will be entirely mundane. Maybe on newever hardware like the Precision 5560 I used, we’re already in that future. In the meantime, getting Thunderbolt working on this old laptop was an excercise in archaeology, because the firmware of the Thunderbolt controller lies outside the reach of kernel patches and doesn’t benefit from the regular updates to the rest of my OS.

Comments