Contribute
Register

Z690 Chipset Motherboards and Alder Lake CPU

Hi all,
I am using an Asus Z690 Strix A D4 with USB fully mapped. I get instant wake if I don't use the GPRW --> XPRW patch . However using this patch would prevent me from wake via USB Keyboard event (I have to press the power button to wake it up).

I discovered that the instant wake is caused by the XDCI device:
" Wake from Normal Sleep [CDNVA] : due to XDCI CNVW USBW/User Using AC (Charge:0%)"

so I am thinking I can modify the DSDT directly to return 0x00 for the XDCI's GPRW method:

Name (_DDN, "ICL PCH XDCI controller") // _DDN: DOS Device Name
Name (_STR, Unicode ("ICL PCH XDCI controller")) // _STR: Description String
Method (_S0W, 0, NotSerialized) // _S0W: S0 Device Wake State
{
Return (0x03)
}

Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{
Return (GPRW (0x6D, 0x04)) <-- Change to 0x04 from 0x00
}

However, I can't compile the full DSDT.aml since it has syntax error. Anyone know how I can approach this by either helping me fix the DSDT.dsl syntax or another way to fix XDCI device from instant waking up my PC. Thank you!

I attached the full DSDT (using clover f4) in the .zip
This can be achieved with (a) an ACPI patch that selectively renames only the _PRW method for this device, and (b) a SSDT that implements the modified version.

I can make the changes later this morning. How sure are you that this will fix the instant wake problem? Could there be a USB device in the system that is causing the problem? Perhaps something connected to one of the internal USB 2 headers?
 
I discovered that the instant wake is caused by the XDCI device:
" Wake from Normal Sleep [CDNVA] : due to XDCI CNVW USBW/User Using AC (Charge:0%)"

so I am thinking I can modify the DSDT directly to return 0x00 for the XDCI's GPRW method:
Nice detective work! It looks like SSDT-GPRW, as provided in the generic EFI folder (from @CaseySJ builds), combined with the GPRW->XPRW patch would do what you want. Did you use this SSDT?
Or do you want to modify only _SB.PC00.XDCI._PRW and no other call to GRPW()?
 

Attachments

  • SSDT-GPRW.aml
    105 bytes · Views: 42
Nice detective work! It looks like SSDT-GPRW, as provided in the generic EFI folder (from @CaseySJ builds), combined with the GPRW->XPRW patch would do what you want. Did you use this SSDT?
Or do you want to modify only _SB.PC00.XDCI._PRW and no other call to GRPW()?
I’ve already tried the GPRW->XPRW patch and SSDT . It works to fix instant wake. However, it breaks wake from USB events. So that’s why I want to try to target XDCI only.
 
This can be achieved with (a) an ACPI patch that selectively renames only the _PRW method for this device, and (b) a SSDT that implements the modified version.

I can make the changes later this morning. How sure are you that this will fix the instant wake problem? Could there be a USB device in the system that is causing the problem? Perhaps something connected to one of the internal USB 2 headers?
The only internal USB2.0 header I am using is the one for the Broadcom Fenvi Bluetooth which is already USB map as an internal 0xff device type . I have disabled the built in Wi-Fi /Bluetooth in the motherboard BIOS. I am hoping this could be the fix or else I won't know what to do next !
 
The only internal USB2.0 header I am using is the one for the Broadcom Fenvi Bluetooth which is already USB map as an internal 0xff device type . I have disabled the built in Wi-Fi /Bluetooth in the motherboard BIOS. I am hoping this could be the fix or else I won't know what to do next !
Please try the following, which consists of (a) ACPI patch and (b) SSDT.

ACPI Patch:
  • Table Signature: DSDT
  • Find: 6C 00 6C 00 65 00 72 00 00 00 14 09 5F 53 30 57 00 A4 0A 03 14 0F 5F 50 52 57
  • Replace: 6C 00 6C 00 65 00 72 00 00 00 14 09 5F 53 30 57 00 A4 0A 03 14 0F 58 50 52 57
  • Comment: Change _PRW to XPRW for XDCI
  • Count: 1
  • Enabled: True
SSDT:
  • Add the attached SSDT-XDCI-PRW.aml to ACPI section of config.plist.

Note:
  • In your original post you say "change to 0x04 from 0x00". But the standard DSDT already sets this to 0x04.
  • The attached SSDT sets it instead to 0x00. If this is not the desired behavior, please let me know.
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{
Return (GPRW (0x6D, 0x04)) <-- Change to 0x04 from 0x00
}
 

Attachments

  • SSDT-XDCI-PRW.aml
    122 bytes · Views: 57
Please try the following, which consists of (a) ACPI patch and (b) SSDT.

ACPI Patch:
  • Table Signature: DSDT
  • Find: 6C 00 6C 00 65 00 72 00 00 00 14 09 5F 53 30 57 00 A4 0A 03 14 0F 5F 50 52 57
  • Replace: 6C 00 6C 00 65 00 72 00 00 00 14 09 5F 53 30 57 00 A4 0A 03 14 0F 58 50 52 57
  • Comment: Change _PRW to XPRW for XDCI
  • Count: 1
  • Enabled: True
SSDT:
  • Add the attached SSDT-XDCI-PRW.aml to ACPI section of config.plist.

Note:
  • In your original post you say "change to 0x04 from 0x00". But the standard DSDT already sets this to 0x04.
  • The attached SSDT sets it instead to 0x00. If this is not the desired behavior, please let me know.
Thank you. I added this and verified from macASL that I see the XPRW under XDCIs method so the target acpi replacement works . I couldn’t find the _PRW method that you added from the .AML file though. I double checked the config.plist and do see the .AML file is defined . Tried sleep again and got the same wake due to XDCI
 
Last edited:
Thank you. I added this and verified from macASL that I see the XPRW under XDCIs method so the target acpi replacement works . I couldn’t find the _PRW method that you added from the .AML file though. I double checked the config.plist and do see the .AML file is defined . Tried sleep again and got the same wake due to XDCI
To confirm if the new SSDT was loaded, please run this command:
Bash:
log show --last boot | head -800 > ~/Documents/bootlog.txt
This will create a file in Documents folder called bootlog.txt. Please post that file.
 
The MSI Z690 Torpedo EK X board has Thunderbolt header that looks like this (image from the manual) (Carbon is similar):

1644950995387.png


Which Thunderbolt AICs would be compatible with this board? This connector doesn't look at all like the cable provided with the MCI ThunderboltM3 AIC (manual)
1644951874927.png

Thanks!
 
Last edited:
To confirm if the new SSDT was loaded, please run this command:
Bash:
log show --last boot | head -800 > ~/Documents/bootlog.txt
This will create a file in Documents folder called bootlog.txt. Please post that file.

I did see it loaded. Still getting wake reason:

2022-02-17 15:42:37.019655-0800 0x74 Default 0x0 0 0 kernel: (AppleACPIPlatform) AppleACPIPlatformPower Wake reason: XDCI CNVW
2022-02-17 15:42:37.019656-0800 0x74 Default 0x0 0 0 kernel: (AppleACPIPlatform) AppleACPIPlatformPower Wake reason: XDCI CNVW

Attached is my full EFI with serial number removed, Clover ACPI dump, bootlog.txt, and exported IORegistry explorer. The boot log actual shows I have quite a number of ACPI errors.
 

Attachments

  • casey.zip
    8.6 MB · Views: 79
  • macpro7,1_rushstrike.ioreg
    27.6 MB · Views: 109
Back
Top