Contribute
Register

Thunderbolt 4, modified firmware, Full Thunderbolt Bus tree

Without SSDT we do not have attached kext drivers for NHI... That mean Sleep issue is under this device, not on XHC3 :)


Good idea.. minimal mean at least thunderbolt property on UPSB & device-id/class-code/TBTFlags properties on NHI.

You also can try moving TBTFlags from 0x8 to 0xF.
Test 1 completed with minimal properties as shown:
  • No device-id spoofing for NHI0, hence no local node
  • class-code still present
  • TBTFlags still present
  • All other device names are same:
    • UPSB, DSB0, DSB1, DSB2, DSB3, NHI0
Result:
  • Sleep Works
  • USB-C hot plug works
  • No Thunderbolt hot plug
Screenshot 2024-04-08 at 10.26.43 AM.png
 
Test 2:
  • The only change was to inject device-id 0x15eb to NHI0
  • This enables Thunderbolt Local Node
Result:
  • Sleep Fails
This means NHI driver is most likely responsible.
 
@CaseySJ @gandem
I have attached GC-Maple Ridge firmware with port@C & port@D enabled (2 Downstream USB4 ports)... like on my firmware.. We could have another behaviour on Sleep ?!
I'll give this a try this evening. Can I use the current SSDT?
 
OMG! Is it possible to enable TH Bus on Gigabyte Z690 Aero D with built-in thunderbolt? I offer to do any necessary tests
@Talanga,
just saw your GB Z690 Aero D BIOS, you don't have a BIOS Thunderbolt auto-update. That mean like on previous Gigabyte board (Designare or Vision D), you should locate SOIC8 component that include Thunderbolt firmware (usually on bottom of the board around thunderbolt connectors, if not, on top under Gigabyte designed cover).

If you can read/write this component like done on Z390 Designare (CH341A method), you are invited to attach your stock firmware file and we will patch it for you and for all users that own this NICE mobo :)
 
I'll give this a try this evening. Can I use the current SSDT?
Thanks ! You can revert back to your first SSDT, you had better results.
 
Test 2:
  • The only change was to inject device-id 0x15eb to NHI0
  • This enables Thunderbolt Local Node
Result:
  • Sleep Fails
This means NHI driver is most likely responsible.
Which Apple platform are you using ? You can try moving to iMac20,2 like on my config... Sometimes, System platform can modify some behaviour ...
 
Which Apple platform are you using ? You can try moving to iMac20,2 like on my config... Sometimes, System platform can modify some behaviour ...
I'm using iMac19,1 at the moment. Can switch to 20,2 shortly.
 
I'm using iMac19,1 at the moment. Can switch to 20,2 shortly.
@Elias64Fr,

Switching to iMac20,2 didn't help. I'm thinking of trying different NHI device IDs. We have these to choose from (those with _NHI suffix of course):

C:
/*
 * PCI IDs used in this driver from Win Ridge forward. There is no
 * need for the PCI quirk anymore as we will use ICM also on Apple
 * hardware.
 */
#define PCI_DEVICE_ID_INTEL_MAPLE_RIDGE_2C_NHI        0x1134
#define PCI_DEVICE_ID_INTEL_MAPLE_RIDGE_4C_NHI        0x1137
#define PCI_DEVICE_ID_INTEL_WIN_RIDGE_2C_NHI            0x157d
#define PCI_DEVICE_ID_INTEL_WIN_RIDGE_2C_BRIDGE         0x157e
#define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_LP_NHI        0x15bf
#define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_LP_BRIDGE    0x15c0
#define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_4C_NHI    0x15d2
#define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_4C_BRIDGE    0x15d3
#define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_2C_NHI    0x15d9
#define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_2C_BRIDGE    0x15da
#define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_LP_USBONLY_NHI    0x15dc
#define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_USBONLY_NHI    0x15dd
#define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_USBONLY_NHI    0x15de
#define PCI_DEVICE_ID_INTEL_TITAN_RIDGE_2C_BRIDGE    0x15e7
#define PCI_DEVICE_ID_INTEL_TITAN_RIDGE_2C_NHI        0x15e8
#define PCI_DEVICE_ID_INTEL_TITAN_RIDGE_4C_BRIDGE    0x15ea
#define PCI_DEVICE_ID_INTEL_TITAN_RIDGE_4C_NHI        0x15eb
#define PCI_DEVICE_ID_INTEL_TITAN_RIDGE_DD_BRIDGE    0x15ef
#define PCI_DEVICE_ID_INTEL_ADL_NHI0            0x463e
#define PCI_DEVICE_ID_INTEL_ADL_NHI1            0x466d
#define PCI_DEVICE_ID_INTEL_BARLOW_RIDGE_HOST_80G_NHI    0x5781
#define PCI_DEVICE_ID_INTEL_BARLOW_RIDGE_HOST_40G_NHI    0x5784
#define PCI_DEVICE_ID_INTEL_BARLOW_RIDGE_HUB_80G_BRIDGE 0x5786
#define PCI_DEVICE_ID_INTEL_BARLOW_RIDGE_HUB_40G_BRIDGE 0x57a4
#define PCI_DEVICE_ID_INTEL_MTL_M_NHI0            0x7eb2
#define PCI_DEVICE_ID_INTEL_MTL_P_NHI0            0x7ec2
#define PCI_DEVICE_ID_INTEL_MTL_P_NHI1            0x7ec3
#define PCI_DEVICE_ID_INTEL_ICL_NHI1            0x8a0d
#define PCI_DEVICE_ID_INTEL_ICL_NHI0            0x8a17
#define PCI_DEVICE_ID_INTEL_TGL_NHI0            0x9a1b
#define PCI_DEVICE_ID_INTEL_TGL_NHI1            0x9a1d
#define PCI_DEVICE_ID_INTEL_TGL_H_NHI0            0x9a1f
#define PCI_DEVICE_ID_INTEL_TGL_H_NHI1            0x9a21
#define PCI_DEVICE_ID_INTEL_RPL_NHI0            0xa73e
#define PCI_DEVICE_ID_INTEL_RPL_NHI1            0xa76d
#define PCI_DEVICE_ID_INTEL_LNL_NHI0            0xa833
#define PCI_DEVICE_ID_INTEL_LNL_NHI1            0xa834
 
Thanks ! You can revert back to your first SSDT, you had better results.
With new firmware same SSDT, getting same sleep result.
System still hangs when attempting a restart while TB devices are plugged in.
 
@Talanga,
just saw your GB Z690 Aero D BIOS, you don't have a BIOS Thunderbolt auto-update. That mean like on previous Gigabyte board (Designare or Vision D), you should locate SOIC8 component that include Thunderbolt firmware (usually on bottom of the board around thunderbolt connectors, if not, on top under Gigabyte designed cover).

If you can read/write this component like done on Z390 Designare (CH341A method), you are invited to attach your stock firmware file and we will patch it for you and for all users that own this NICE mobo :)
Thanks for the input!
OK, so I have to get a CH341A programmer. I was researching in other forums to see if someone with the same motherboard had done it previously, but I guess I would be the first!
 
Back
Top