Contribute
Register

Thunderbolt 4, modified firmware, Full Thunderbolt Bus tree

I had a feeling this was going to an intel only party.

I just tried flashing Thunderbolt firmware on my AMD Ryzen system (Asus X670E Gene) using TbtNvmDrvShellUpdate.efi and it bricked the controller. I've added a warning to this post:


I'll attempt to recover with a CH341a programmer because TbtNvmDrvShellUpdate.efi no longer detects a Thunderbolt controller.
 
I just tried flashing Thunderbolt firmware on my AMD Ryzen system (Asus X670E Gene) using TbtNvmDrvShellUpdate.efi and it bricked the controller. I've added a warning to this post:


I'll attempt to recover with a CH341a programmer because TbtNvmDrvShellUpdate.efi no longer detects a Thunderbolt controller.
Sorry to hear the sad tales from the bleeding edge. Thanks so much for your efforts! Good luck with restoration!
I know everyone appreciates your efforts.
 
I just tried flashing Thunderbolt firmware on my AMD Ryzen system (Asus X670E Gene) using TbtNvmDrvShellUpdate.efi and it bricked the controller. I've added a warning to this post:


I'll attempt to recover with a CH341a programmer because TbtNvmDrvShellUpdate.efi no longer detects a Thunderbolt controller.

** Recovery Successful **

Using an external CH341a programmer, it was quite straightforward to read, restore, and write back the Thunderbolt firmware on my Asus X670E Gene (AMD Ryzen). Restore means undoing the changes I made to Thunderbolt header and DROM section of NVM38 firmware, in effect restoring it back to original.

The SSDT method alone is not sufficient to enable Thunderbolt Local Node, and neither apparently is the actual firmware flashing method. Ouch.

Screenshot 2024-04-13 at 1.27.04 PM.png


The Thunderbolt firmware chip (MXIC flash ROM) is located on the back of the motherboard. It was very easy to get to it -- didn't have to remove motherboard from the chassis.

IMG_2943_resize.jpg
IMG_2942_resize.jpg
IMG_2940_resize.jpg
 
Quick data point -- I kept having the same issue you are reporting and eventually my Thunderbolt devices wouldn't show up when connected. The solution for me was to remove the kernel patches, reboot, still didn't show up quite right, but then I generated a DROM from NVM 38 firmware bin and added to my SSDT which has resolved the issue for me.

Attached is the updated SSDT I used.

Furthermore, I see there is a minor difference between your thunderbolt bus device list and mine. I see that your Port (Upstream) doesn't have a Link Controller Firmware Version at the very bottom of the window.

View attachment 581354

View attachment 581355
What BIOS Version? On my board I had issues with anything over BIOS 3101 which for your board looks to be the equivalent of 1801 as those are booth versions when they patched LogoFail vulnerabilities and added PCIe bandwidth bifurcation configuration as well as updating Intel ME to version 16.1.30.2307
 
That may be a function of the enclosure itself not enumerating a firmware version. I've plugged the enlosure into a M2 Pro MBP and it connects as USB4 without any issue running 13.6.6

On the ProArt Z690, I can only get it to show up in the system profiler after a warm boot usually and sometimes it doesn't show up at all in there but it does show up in the USB section of system profiler as a USB 3.1 device. It's as if the computer/port picks USB 3.1 mode before attempting to connect to it as a USB4 device?

I don't have any proper TB3/4 devices here to test but it seems like you guys are on it. I figured I'd add my experience with USB4 devices which isn't as common.
You can find a working experiment USB4 devices with SSDT only TBT bus here from @dehjomz

Detected as Thunderbolt 4 downstream … plus USB4 mode enabled on System information :)
 
Working for me on Monterey 12.7.2, iMacPro1,1.
All i did was add the SSDT, reset and boom, popped up. No kernel patches (do i need to?)

Few notes;
- Sleep/wake works, feels like it takes slightly longer but not by much (will test again).
- External SSD that is connected to the second TB port is not showing as "connected" under Thunderbolt. But it is showing in USB tab as USB 3.1 device.
- External SSD pop-up message saying the SSD wasn't "EJECTED properly" after wake. <-- Any ideas?


View attachment 581277

BEFORE SLEEP
View attachment 581278

AFTER SLEEP
View attachment 581279

Great work everyone, cheers!
Hi @Sabbz, I'm trying to get Thunderbolt Bus activated also with iMacPro1.1 but I can't
Could you share your EFI, please?
 
Hi @Sabbz, I'm trying to get Thunderbolt Bus activated also with iMacPro1.1 but I can't
Could you share your EFI, please?
Two SSDTs are needed:
Please try adding and enabling both of these. We should also disable any previous Thunderbolt SSDT.

Then perform a cold start, which means:
  • Shutdown the computer
  • Flip power switch on PSU to off position for 15 seconds
  • Power it back on
Optionally we can add the three kext patches shown in this post (set Count = 1 for all three):
 
Last edited:
It's no surprise, but for the sake of keeping a record I should mention that my Asus ROG Strix Z690-I Gaming mini-ITX system also gets Thunderbolt Local Node with just the SSDT, and sleep still works (macOS Sonoma 14.5).
Screenshot 2024-04-15 at 1.46.06 PM.png

UPDATE 1:
  • With BIOS 2004, hot plug does not work even though Thunderbolt Local Node is enabled
    • Doesn't matter if 3 kernel patches are enabled or disabled
  • Thunderbolt devices will work if connected before boot
  • Thunderbolt 2 devices (when connected before boot and via Apple Thunderbolt 3 to Thunderbolt 2 adapter) will cause Local Node to shut down, but the device will work
  • Will try a newer BIOS soon...
UPDATE 2:
  • With the next available BIOS 2103, hot plug works with some limitations:
    • Top Thunderbolt port DSB1 works reliably with TB3 devices, but Thunderbolt 1/2 devices do not work such as Apple Gigabit Ethernet to Thunderbolt adapter connected via Apple TB3 to TB2 adapter
    • Bottom Thunderbolt port DSB3 does not hot plug successfully
  • System Information -> Thunderbolt/USB4 does not update properly when a Thunderbolt device is connected or disconnected
Screenshot 2024-04-15 at 2.58.25 PM.png
 
Last edited:
It's no surprise, but for the sake of keeping a record I should mention that my Asus ROG Strix Z690-I Gaming mini-ITX system also gets Thunderbolt Local Node with just the SSDT, and sleep still works (macOS Sonoma 14.5).
View attachment 581429
Now we need to find out what's the secrete sauce with ASUS motherboards. :idea:
 
Now we need to find out what's the secrete sauce with ASUS motherboards. :idea:
Fortunately there are just a couple of Thunderbolt DXE/EFI drivers in BIOS. We could extract them from Asus BIOS and insert them in Gigabyte BIOS to see what happens... @Elias64Fr
 
Back
Top