Contribute
Register

Thunderbolt 4, modified firmware, Full Thunderbolt Bus tree

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
Why does the new SSDT work to enable Thunderbolt bus and local node, bypassing the need to patch the NVM ?
 
Why does the new SSDT work to enable Thunderbolt bus and local node, bypassing the need to patch the NVM ?
This is my speculative answer:
  • As we know, there are write-once registers such as CFG-Lock
    • They can only be written to once, which then prevent further changes to these registers (and to the resources they control) until system is rebooted
  • It is possible that there's a write-once register that controls the ability to put a Thunderbolt Controller into either (a) ICM [Internal Connection Manager] or (b) Host Connection Manager mode
  • If so, Asus Thunderbolt drivers may be unique in not locking that register, which then allows macOS to toggle Host Connection Manager (i.e. Thunderbolt Local Node)
Linux source code and Apple's own Thunderbolt SSDT from iMac19,1 shows that a single bit in a Thunderbolt register switches between ICM and Host management modes.

In our early experiments, we actually succeeded in enabling Host connection manager (i.e. Thunderbolt Local Node) even on Gigabyte Z390 Designare using just SSDT.

Remember this post?

But we were never able to connect and disconnect devices reliably, or even recover them from sleep. And sometimes after 20 seconds, "something" would flip that register back to ICM, and Thunderbolt Local Node would disappear. But something in Asus' EFI firmware allows macOS to change whatever parameter it needs to change such that Local Node both activates and runs reliably.
 
Last edited:
This is my speculative answer:
  • As we know, there are write-once registers such as CFG-Lock
    • They can only be written to once, which then prevent further changes to these registers (and to the resources they control) until system is rebooted
  • It is possible that there's a write-once register that controls the ability to put a Thunderbolt Controller into either (a) ICM [Internal Connection Manager] or (b) Host Connection Manager mode
  • If so, Asus Thunderbolt drivers may be unique in not locking that register, which then allows macOS to toggle Host Connection Manager (i.e. Thunderbolt Local Node)
Linux source code and Apple's own Thunderbolt SSDT from iMac19,1 shows that a single bit in a Thunderbolt register switches between ICM and Host management modes.

In our early experiments, we actually succeeded in enabling Host connection manager (i.e. Thunderbolt Local Node) even on Gigabyte Z390 Designare using just SSDT.

Remember this post?

But we were never able to connect and disconnect devices reliably, or even recover them from sleep. And sometimes after 20 seconds, "something" would flip that register back to ICM, and Thunderbolt Local Node would disappear. But something in Asus' EFI firmware allows macOS to change whatever parameter it needs to change such that Local Node both activates and runs reliably.
Do you think is possible to achieve this by changing NVRAM variables with modGRUBShell.efi or RU.efi ?
 
Do you think is possible to achieve this by changing NVRAM variables with modGRUBShell.efi or RU.efi ?
Maybe we need to find-out if there is an auto option instead of setting manually the Thunderbolt controller to ICM or HCM...
 
This is my speculative answer:
  • As we know, there are write-once registers such as CFG-Lock
    • They can only be written to once, which then prevent further changes to these registers (and to the resources they control) until system is rebooted
  • It is possible that there's a write-once register that controls the ability to put a Thunderbolt Controller into either (a) ICM [Internal Connection Manager] or (b) Host Connection Manager mode
  • If so, Asus Thunderbolt drivers may be unique in not locking that register, which then allows macOS to toggle Host Connection Manager (i.e. Thunderbolt Local Node)
Linux source code and Apple's own Thunderbolt SSDT from iMac19,1 shows that a single bit in a Thunderbolt register switches between ICM and Host management modes.

In our early experiments, we actually succeeded in enabling Host connection manager (i.e. Thunderbolt Local Node) even on Gigabyte Z390 Designare using just SSDT.

Remember this post?

But we were never able to connect and disconnect devices reliably, or even recover them from sleep. And sometimes after 20 seconds, "something" would flip that register back to ICM, and Thunderbolt Local Node would disappear. But something in Asus' EFI firmware allows macOS to change whatever parameter it needs to change such that Local Node both activates and runs reliably.
Interesting. Doesn’t usb4 and maple ridge run in software connection manager mode (unlike titan ridge)? Also with memory protection from the IOMMU ?
 
Interesting. Doesn’t usb4 and maple ridge run in software connection manager mode (unlike titan ridge)? Also with memory protection from the IOMMU ?

Because macOS is unable to activate Local Node on Gigabyte motherboards even though the controller and firmware (NVM) are the same, it suggests that Gigabyte’s BIOS is not putting the Maple Ridge controller into the proper state.

When we examined Gigabyte Z690 BIOS almost two years ago we found a SSDT containing ACPI methods for supposedly switching between ICM and HCM. We tried to invoke those methods, but we weren’t successful. We also tried to replace the SSDT with a modified version, but that also failed. But maybe that experiment is worth redoing — because now we know that TBTFlags is the key (along with class-code and spoofing NHI device-id).
 
Last edited:
@Casey have you check-out Osy's repos at Github? There he talks about different aspects of Thunderbolt controller including ACPI related methods. I think he is very close...
 
Welcome back to the thread about thunderbolt 4. I found an old Gigabyte z590i board that has been sitting on the shelf for 3 years and I still have a chip tray soldered in it.

1713292676758.png



I also have a GC-MapleRidge and ordered an ASUS ThunderboltEX 4,

1713292892265.png

and an ASUS USB4 PCIe Gen4 Card.

1713292796508.png

Write if you need any from me.
 
Last edited:
Intel Maple Ridge. ASM4242. Fight!

(Not sure that, in this instance, "42" will be the answer to The Ultimate Question of Thunderbolt, Hackintoshing, and Everything.)
 
Welcome back to the thread about thunderbolt 4. I found an old Gigabyte z590i board that has been sitting on the shelf for 3 years and I still have a chip tray soldered in it.


I also have a GC-MapleRidge and ordered an ASUS ThunderboltEX 4,

and an ASUS USB4 PCIe Gen4 Card.

Write if you need any from me.
@ori69,

Some immediate questions/suggestions:
  • Have you tried installing GC-Maple Ridge into your Asus Z790-P WiFi with (a) original NVM firmware and (b) modified NVM firmware?
    • If so, for original NVM firmware, does Thunderbolt Local Node appear using just SSDT and cold start?
    • If modified NVM firmware has been flashed, does sleep work when Thunderbolt Local Node is enabled?
  • Regarding the Gigabyte Z590i board, is it assembled and ready to boot? Is it running macOS Sonoma?
    • Have you tried flashing the firmware?
    • If so, does sleep work?
    • Does hot plug work?
 
Back
Top