Contribute
Register

Thunderbolt 4, modified firmware, Full Thunderbolt Bus tree

I do not have this issue?! Tested on Ventura and Sonoma, with and without kernel patches...

Somes questions :
  • Which wake reason appears : "Wake from Normal Sleep [CDNVA] : due to ..."

Hi @Elias64Fr,

I just rebooted the system and manually selected Sleep from the Apple menu. The entire pmset -g log for this is attached. The system went to sleep for about 2 seconds, then woke up automatically without turning on the display (i.e., Dark Wake), after which I pressed a key on keyboard. So you might see "User Activity" as the wake reason, but that is for the final wake.

  • Could you share your current SSDT ? I will test it on my config
SSDT is attached. I wonder if _PRW(0x69, 0x03) is incorrect and/or should be removed.

  • This sleep issue appears with and without plugged devices ?
Yes, sleep issue happens with and without plugged devices.

  • Could you try a Cold boot with Power supply switched off until all mobo LED switch off ?
Will try this shortly. Update: Cold boot did not resolve sleep issue.

  • On your BIOS Setting, have you something like "Wake from thunderbolt...enabled/disabled" ?
Will check and update this post. Update: Wake from Thunderbolt devices was enabled in BIOS, but disabling it also did not resolve sleep issue (most likely because I'm not using Thunderbolt header).
 

Attachments

  • SleepLog-APR-6.rtf.zip
    5.9 KB · Views: 3
  • SSDT-TB3-PEG1-PEGP.aml
    2 KB · Views: 7
Last edited:
If you have TB1/TB2 dropped support, you should have NVM36 included on your BIOS firmware. You can try same @CaseySJ flashing method with TbtNvmDrvShellUpdate.efi and YOUR extracted Thunderbolt firmware NVM31 (by YOUR, I mean for your Z790 mobo) found on previous BIOS version.
I actually don't have a GC-MAPLE-RIDGE - someone asked me if I had NVM firmware for it that supported TB2 devices (their card came with NVM32 preinstalled).

FWIW, my Z790-CREATOR has NVM38 (going back to the first BIOS version). I downgraded it to NVM31 (extracted from an older Z690-CREATOR BIOS version) via Linux.
 
Last edited:
SSDT is attached. I wonder if _PRW(0x69, 0x03) is incorrect and/or should be removed.
I have tried your SSDT by changing PEG1 to RP05 and PEGP to PXSX. No sleep issue !

Is your SSDT for internal Thunderbolt is the same ?! I mean your shared SSDT on PEG1 is only for GC-MapleRidge.

FYI, this my _L69 method on DSDT, because of CustomBIOS (all Apple ACPI required modifications are included on my BIOS firmware, nothing on OpenCore)
Method (_L69, 0, Serialized) // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
{
If (_OSI ("Darwin"))
{
Notify (\_SB.PCI0.PEG0, 0x02) // Device Wake
Notify (\_SB.PCI0.RP03, 0x02) // Device Wake
Notify (\_SB.PCI0.RP05, 0x02) // Device Wake
Notify (\_SB.PCI0.RP09, 0x02) // Device Wake
Notify (\_SB.PCI0.RP19, 0x02) // Device Wake
Notify (\_SB.PCI0.RP21, 0x02) // Device Wake
Notify (\_SB.PCI0.RP19.ARPT, 0x02) // Device Wake
}
Else
{
\_SB.PCI0.RP01.HPME ()
\_SB.PCI0.RP02.HPME ()
\_SB.PCI0.RP03.HPME ()
\_SB.PCI0.RP04.HPME ()
\_SB.PCI0.RP05.HPME ()
\_SB.PCI0.RP06.HPME ()
\_SB.PCI0.RP07.HPME ()
\_SB.PCI0.RP08.HPME ()
\_SB.PCI0.RP09.HPME ()
\_SB.PCI0.RP10.HPME ()
\_SB.PCI0.RP11.HPME ()
\_SB.PCI0.RP12.HPME ()
\_SB.PCI0.RP13.HPME ()
\_SB.PCI0.RP14.HPME ()
\_SB.PCI0.RP15.HPME ()
\_SB.PCI0.RP16.HPME ()
\_SB.PCI0.RP17.HPME ()
\_SB.PCI0.RP18.HPME ()
\_SB.PCI0.RP19.HPME ()
\_SB.PCI0.RP20.HPME ()
\_SB.PCI0.RP21.HPME ()
\_SB.PCI0.RP22.HPME ()
\_SB.PCI0.RP23.HPME ()
\_SB.PCI0.RP24.HPME ()
If ((\_SB.PCI0.D1F0 == One))
{
\_SB.PCI0.PEG0.HPME ()
Notify (\_SB.PCI0.PEG0, 0x02) // Device Wake
Notify (\_SB.PCI0.PEG0.GFX0, 0x02) // Device Wake
}

If ((\_SB.PCI0.D1F1 == One))
{
\_SB.PCI0.PEG1.HPME ()
Notify (\_SB.PCI0.PEG1, 0x02) // Device Wake
}

If ((\_SB.PCI0.D1F2 == One))
{
\_SB.PCI0.PEG2.HPME ()
Notify (\_SB.PCI0.PEG2, 0x02) // Device Wake
}
}
}
 
Will check and update this post. Update: Wake from Thunderbolt devices was enabled in BIOS, but disabling it also did not resolve sleep issue (most likely because I'm not using Thunderbolt header).
OK, we should have another tester guy with a GC-Maple Ridge, to confirm this sleep issue.
I think about @gandem to flash modified firmware and keep us informed about Sleep state on another system.
 
OK, we should have another tester guy with a GC-Maple Ridge, to confirm this sleep issue.
I think about @gandem to flash modified firmware and keep us informed about Sleep state on another system.
I can flash to my GC-Maple Ridge. One note, I'm running latest Ventura, have not upgraded to Sonoma. Please specify the bin and ssdt to test. Also, should I disable on-board Maple Ridge?
 
I actually don't have a GC-MAPLE-RIDGE - someone asked me if I had NVM firmware for it that supported TB2 devices (their card came with NVM32 preinstalled).

FWIW, my Z790-CREATOR has NVM38 (going back to the first BIOS version). I downgraded it to NVM31 (extracted from an older Z690-CREATOR BIOS version) via Linux.
Hi, @racermaster
How do you extract NVM firmware from BIOS CAP file via Linux ?
 
I have tried your SSDT by changing PEG1 to RP05 and PEGP to PXSX. No sleep issue !
To somewhat duplicate your configuration, I swapped two components:
  • Moved 10GbE card (GC-AQC113C) from bottom long slot RP21 to PEG1
  • Moved GC-Maple Ridge from PEG1 to bottom long slot RP21
But no change... :)

I have also tried these changes to SSDT in various combinations, but did not solve sleep problem:
  • Spoofed DSB2 device ID to 0x15EA similar to Titan Ridge
  • Spoofed DSB2.XHC3 device ID to 0x15EC similar to Titan Ridge
  • Spoofed UPSB device ID to 0x15EA similar to Titan Ridge
  • Spoofed DSB0, DSB1, DSB2, DSB3 device IDs all to 0x15EA similar to Titan Ridge
  • Removed RHUB section from DSB2.XHC3
  • Added ThunderboltConfig to SSDT

Is your SSDT for internal Thunderbolt is the same ?! I mean your shared SSDT on PEG1 is only for GC-MapleRidge.
I'm using two separate SSDTs, one for Titan Ridge and the other for Maple Ridge. I tested sleep/wake after disabling on-board Thunderbolt, but that did not solve the sleep problem.

FYI, this my _L69 method on DSDT, because of CustomBIOS (all Apple ACPI required modifications are included on my BIOS firmware, nothing on OpenCore)
...
I could create a separate SSDT for _L69 and patch DSDT to XL69, but I think _L69 is invoked when a wake is signaled. In this case, something is signaling a wake when it shouldn't be signaled...
 
Last edited:
I can flash to my GC-Maple Ridge. One note, I'm running latest Ventura, have not upgraded to Sonoma. Please specify the bin and ssdt to test. Also, should I disable on-board Maple Ridge?
Thanks for helping with this.
  • Attached is the firmware that I flashed gc-maple-1-modified.bin, which incorporates all the required changes
  • Also attached are two SSDTs:
    • One is for root port PEG1 SSDT-TB3-PEG1-PEGP.aml
    • One is for root port RP21 SSDT-TB3-RP21.aml
Simply pick one of the SSDTs and modify root port to accommodate the specific slot you'll be using.

I also bridged the top and middle pins of the vertical 5-pin J1 header. This forces the card to power on.

Instructions for flashing via 3.3V CH341a USB programmer:
 

Attachments

  • gc-maple-1-modified.bin.zip
    224.9 KB · Views: 15
  • SSDT-TB3-PEG1-PEGP.aml
    2 KB · Views: 13
  • SSDT-TB3-RP21.aml
    2 KB · Views: 16
Last edited:
...

FYI, this my _L69 method on DSDT, because of CustomBIOS (all Apple ACPI required modifications are included on my BIOS firmware, nothing on OpenCore)
...

...

I could create a separate SSDT for _L69 and patch DSDT to XL69, but I think _L69 is invoked when a wake is signaled. In this case, something is signaling a wake when it shouldn't be signaled...

I tried this experiment by adding _L69 to SSDT-TB3-RP21.aml and adding an ACPI patch in config.plist to rename _L69 to XL69.
Screenshot 2024-04-06 at 3.38.59 PM.png


Alas we get the same result where system sleeps for about 2 seconds, then automatically wakes.

The extended SSDT is attached.
 

Attachments

  • SSDT-TB3-RP21.aml
    3.6 KB · Views: 6
Back
Top