Thunderbolt on PC is a compatibility nightmare

Nick K
10 min readJan 4, 2024

I always thought of myself as somewhat of a Thunderbolt expert, however I will acknowledge that most of my experience with it (up until 2023) has been on Mac, and not PC. All that changed recently, when I decided to give one of HP’s mini PCs a try, the Z2 Mini G9.

The Z2 Mini G9 uses Thunderbolt FlexIO modules that are specifically designed by HP for a select lineup of their computers. The way these modules are marketed is a bit confusing, as there is technically no such thing as “Thunderbolt 3 with USB4” — I’m not sure why they would even mention the term USB4, as every version of the module thus far uses Intel silicon.

https://www.hp.com/us-en/shop/pdp/hp-z2-g9-mini-workstation-customizable-4y5z0av-mb
https://h20195.www2.hp.com/v2/getpdf.aspx/c08109685.pdf
https://www.hp.com/za-en/products/accessories/product-details/2100895700

The current version of the Thunderbolt FlexIO module (HP part number 440A5AA) uses an Intel JHL 8340 Maple Ridge Thunderbolt 4 (not Thunderbolt 3) chip. It looks like the previous version (which is still shown in all of the web photos I could find) uses an Intel JHL 7340, which is actually a Titan Ridge Thunderbolt 3 chip, although I can find no evidence of this module ever existing, aside from the web photos. You’ll see in a moment why that matters, as Thunderbolt 3 is a bit different than Thunderbolt 4, on PC anyway.

The current wording of Intel’s Thunderbolt FAQ as of January 2024

Intel states on their current Thunderbolt FAQ that Thunderbolt 3 PCs are backwards compatible with Thunderbolt 1&2 devices, as long as an adapter is used. Note that they speficially say PCs, with no mention at all of Mac compatibility.

The previous wording, changed in October of 2021

Just as I was writing this, I noticed the part about “except Intel platforms launched in 2020 and later” — that wasn’t there prior to October of 2021. I’m not sure what the implications of this are, as I don’t have a Thunderbolt 3 PC (or the previous Thunderbolt 3 FlexIO module from HP) to test with at the moment. I currently have an Intel 12th gen Alder Lake i5–12500 in my Z2 Mini G9, and so according to Intel, even if I did have the older Thunderbolt 3 FlexIO module, Thunderbolt 1&2 devices shouldn’t work.

Apple (left) and StarTech (right) Thunderbolt1&2 to USB-C adapters

Regarding the adapter that Intel mentions, Apple makes one version, and there’s another made by StarTech. Both adapters convert the mini DisplayPort connector used by Thunderbolt 1&2 devices to the USB-C connector used by Thunderbolt 3 / Thunderbolt 4 / USB4 hosts.

I should point out that while the Apple adapter is actually bidirectional, the StarTech adapter is not, meaning it only works one way…the USB-C side must be plugged into a host, not an endpoint. The StarTech adapter also shows up as a Falcon Ridge device on PC, so I’m thinking that it is more designed like a dock, while the Apple adapter is more designed like a signal re-timer.

The screenshot above is from an M1 Mac Mini with two older Thunderbolt 1&2 devices connected and daisy chained

When using either adapter (I have both of them) on any modern Intel or Apple Silicon Mac with Thunderbolt enabled USB-C ports, whether it’s marketed by Apple as Thunderbolt 3, Thunderbolt 4, or USB 4, all of my Thunderbolt 1&2 devices show up in system profiler and work fine. I can see all of my devices, what speed they’re connected at, and the topology of each Thunderbolt bus. Daisy chaining and hot-plugging works as expected. In other words, you get full functionality and full backwards compatibility with Thunderbolt 1&2 devices on all Thunderbolt enabled USB-C equipped Macs, including even the latest Apple Silicon Macs.

Back to my HP Z2 Mini G9…the first thing I noticed is that when I use either the Apple or StarTech adapter, and try to connect Thunderbolt 1&2 devices, hot-plugging doesn’t work at all. In order for devices to be recognized in device manager on Windows (or lspci on Linux), I have to cold boot with my devices turned on and already plugged in. Also, even when my Thunderbolt 1&2 devices are recognized and have their drivers loaded, they don’t show up in the Windows Thunderbolt Control Center app (or in the Thunderbolt bus sysfs nodes on Linux).

This was added to the Thunderbolt FAQ after the launch of Thunderbolt 4

Other than those two quirks (which are annoying, but not show stopping bugs by any means), all of my Thunderbolt 1&2 devices worked on both Windows and Linux. Which, is pretty much what Intel said when they first launched Thunderbolt 4 in the summer of 2020. Then, something changed.

In October of 2021, over a year after the launch of Thunderbolt 4, Intel updated their Thunderbolt FAQ again with a new message about Thunderbolt 1&2 device compatibility on Thunderbolt 4 PCs. Note how they specifically mention PCs yet again, and not Macs.

Last week, I decided to update the system BIOS for my HP Z2 Mini G9. I didn’t know it at the time, but there was a new Thunderbolt 4 NVM firmware version embedded within the system BIOS update from HP. There was no mention of this in any of HP’s release notes for the BIOS update.

Originally, my Thunderbolt 4 NVM firmware version showed 31.0 in the Windows Thunderbolt Control Center app.

On NVM firmware version 31.0, Thunderbolt 1&2 devices worked, minus hot-plug and Thunderbolt Control Center visibility functionality

Once I had updated my system BIOS and rebooted, I discovered that none of my Thunderbolt 1&2 devices worked anymore. The culprit was the new Thunderbolt 4 NVM firmware version 39.3.

After a system BIOS update, NVM firmware version shows 39.3, and now Thunderbolt 1&2 devices no longer work at all

Naturally, I tried reverting my system BIOS to the previous release, to no avail. The older Thunderbolt NVM firmware version is not packaged inside any of the older system BIOS releases from HP, unfortunately.

As I have come to find out, Intel have indeed pushed out these newer NVM firmwares for Thunderbolt 4 PCs that permanently disable compatibility with Thunderbolt 1&2 devices, with no option to enable any kind of compatibility mode. For other OEMs, the updated Thunderbolt 4 NVM firmware version may be different, but I have discovered in my research that any Thunderbolt 4 NVM firmware version beyond 31.0 on any Thunderbolt 4 equipped PC (Asus, HP, Lenovo, etc.) will permanently disable compatibility with Thunderbolt 1&2 devices.

Some OEMs like Asus actually put a warning in their BIOS updates now…however with HP, like I said, there’s nothing.

So, let’s recap…

1.) Intel seemingly intended to support Thunderbolt 1&2 devices at the launch of Thunderbolt 4.

2.) For some yet unknown reason, Intel developed a new Thunderbolt 4 NVM firmware version over a year later after the launch of Thunderbolt 4 that deliberately disabled Thunderbolt 1&2 device compatibility on PCs (and not Macs), and started pushing it out to OEMs shortly thereafter, and as such updated the FAQ on their website in October of 2021.

3.) There are no Thunderbolt compatibility issues with Macs, even on the latest Apple Silicon Macs…Thunderbolt 1&2 devices continue to function as expected, and with none of the hot-plugging or device listing issues that plagued the original Thunderbolt 4 NVM firmware version 31.0 and prior on PC.

Some folks on Reddit have suggested that the reason Intel have made this change was due to some security vulnerabilities (not specifically relating to the security level or SL setting, at least that is my understanding), but I don’t have any additional information at this time.

What I do know is that on modern Macs, a software (not firmware) based connection manager is used, and that is primarily the reason why Macs seem to work so much better, at least when it comes to compatibility.

So what can you do about this, if you’re currently in the same situation, where you updated your system BIOS and found that the system BIOS update also updated your Thunderbolt 4 NVM firmware version, and now you have no way to go back to the previous version that worked with Thunderbolt 1&2 devices?

Digging through various forum posts about this issue, I saw that one Asus user reported that they asked Asus for a custom packaged flasher that could revert to the older Thunderbolt 4 NVM firmware version on their particular device, and Asus actually provided it. Another user reached out to me, and said that they had contacted MSI support, and was told that there was nothing that could be done, and the support case was subsequently closed.

I am currently working with HP support in hopes to achieve this for my HP Z2 Mini G9, but I am not very hopeful that HP are going to step up and help out.

Udate 1/16/24:

HP tech support has officially refused to help. Their stance is that it doesn’t matter that it worked with the older firmware version. Thunderbolt 1&2 devices are not supported, period. They have also refused to provide the older firmware.

The only other thing I can think of trying is ordering another Thunderbolt FlexIO module from HP and hope that it ships with the older NVM firmware version. I placed the order a few days ago, they’re backordered everywhere, and the individual resellers have to order them directly from distribution…so who knows how long it will take to arrive.

Until then, I’ve got over $20,000 worth of Thunderbolt 1&2 gear that I can’t use on my Thunderbolt 4 PC anymore thanks to Intel and this new Thunderbolt 4 NVM firmware version.

In the USB 4 and Thunderbolt guide from the Linux kernel documentation, they provide examples on how to manually perform NVM firmware version updates, however on my HP Z2 Mini G9, there is no “nvm_non_active” node in the Thunderbolt bus sysfs entries.

There is an nvm_active node, so it is possible to read and dump the current firmware (which I have done already, for the newer 39.3 firmware), but not write or flash a firmware.

I ended up checking the Linux kernel source code, and sure enough, Maple Ridge Thunderbolt 4 chips deliberately set the nvm firmware as read only; so not seeing any “nvm_non_active” nodes is the expected behavior.

Intel provides a Windows flash utility, but it was designed for their NUC lineup, and as far as I can tell, it only works on Thunderbolt 3 devices, not Thunderbolt 4. I tried using it to flash the firmware I had just dumped under Linux, and it gave me an error. It’s entirely possible that this tool could be modified / hex edited to support Maple Ridge, so that firmwares could be upgraded on Windows.

There appears to be a SPI EEPROM chip directly on the HP Thunderbolt FlexIO module. There should be a similar chip on other Thunderbolt enabled devices from other OEMs.

With the proper interface and a programmer (which I currently don’t have access to), it’s entirely possible that the chip could be downgraded manually, provided you actually have access to the older NVM firmware image.

This looks to me like a SPI EEPROM, most likely where the NVM firmware is stored for the Thunderbolt controller

If anyone has any other information or suggestions, please leave a comment below.

For now though, for any Thunderbolt 4 PC users, if you have any workflows that require the use of older Thunderbolt 1&2 devices, be extremely careful about updating your system BIOS.

Update 1/23/24:

I received the new HP Thunderbolt FlexIO module today, and thankfully it shipped with the older NVM firmware version 31.0.

Update 4/16/24:

Significant updates have happened recently, and they’re all positive!

First, the Linux kernel has been patched to support nvm firmware changes on Maple Ridge. The reason why it was initially left out was because Intel wanted OEMs to distribute updates via UEFI bundles, however the existing Thunderbolt update flows are fully compatible with Maple Ridge. I’ve tested it, and it works. If you want to go this route, you’ll need to add that one liner to the source, and rebuild your kernel.

You’ll also need access to the older firmware version for your specific device. This can be tricky, as some vendors (like HP!) may not be forthcoming. I was able to find some Asus and MSI Maple Ridge nvm firmwares posted on a couple different osx86 community forums, so give that a shot and check there as well if your vendor is giving you the runaround, or flat out refusing to offer any assistance.

You’ll also want to check if it’s posted inside of a system BIOS UEFI bundle for your specific platform…you may need to break out an app like UEFITool and / or a hex editor and extract it, though.

Or, if you’re currently running the older nvm firmware and you want to dump it, you can do that easily on Linux, even with an unpatched kernel.

But — you can’t just write that nvm firmware dump directly, even with a patched kernel. You’ll have to format it properly in a hex editor first.

You can check how I’ve got my nvm firmwares formatted below, and use them as templates. If you’re on macOS, I suggest Hex Fiend. All vendors for Maple Ridge should be using the same formatting. At offset 0, there should be a little-endian 32-bit int pointing to the active region, which starts at 0x4000, followed by 4092 bytes of padding.

Example of writeable nvm firmware, at offset 0 you can see the pointer
And then at 0x4000, the active nvm region starts

As far as I know, linked below are all three publicly released nvm firmwares for the Z2 Mini G9’s “Viserra” Maple Ridge TB4 FlexIO module, packaged by me, tested and working, extracted from nvm firmware dumps and / or publicly released HP system UEFI firmware bundles, and formatted to be written directly via dd using the Linux Kernel USB4 and Thunderbolt admin guide.

Again, Thunderbolt 1&2 devices will only work on v310. The later two releases break Thunderbolt 1&2 compatibility. Also, ASMedia USB4 devices will not work with V310, but will work with the later two versions.

v310:

https://drive.google.com/file/d/1qa_rV16bpCt7SnxzUzLSVmrBdheJqJ2_/view?usp=share_link

V3983:
https://drive.google.com/file/d/1oEs1PRQzaZs2lrMY0Kz7lNQr_rK8lkZw/view?usp=share_link

V4383:
https://drive.google.com/file/d/1Xn4DSbwsBjArH8nP8HOVkzcKP5ehTZEr/view?usp=share_link

--

--