Instant wake issue, on Gigabyte B550I Aorus AX, post F12 BIOS versions

atanvarno

Donator
Donator
AMD OS X Member
Joined
May 2, 2020
Messages
228
I have a build that served me well for over a year. Everything works fine and with F12 BIOS sleep/wake worked too. I have now upgraded to F16e BIOS in order to gain TPM 2.0 (for Windows 11) and newer AGESA versions. Everything continues to work great except that build now instantly wakes up after going to sleep.
USB ports are all mapped-out perfectly.
Chasing sleep on various builds is not unknown to me but this is proving to be quite a challenge.

Typical log output:
Code:
kernel: (AppleACPIPlatform) ACPI SLEEP
kernel: (AppleACPIPlatform) Facs->FirmwareWakingVector: 0x2000
kernel: (AppleACPIPlatform) Facs->Length: 0x40
kernel: (AppleACPIPlatform) Facs->Version: 0x2
kernel: (AppleACPIPlatform) Facs->XFirmwareWakingVector: 0x0
kernel: (AppleACPIPlatform) Facs->OspmFlags: 0x0
kernel: (AppleACPIPlatform) ACPI S3 WAKE
kernel: (AppleACPIPlatform) Facs->FirmwareWakingVector: 0x0
kernel: (AppleACPIPlatform) Facs->Length: 0x40
kernel: (AppleACPIPlatform) Facs->Version: 0x2
kernel: (AppleACPIPlatform) Facs->XFirmwareWakingVector: 0x0
kernel: (AppleACPIPlatform) Facs->OspmFlags: 0x0
kernel: (AppleACPIPlatform) AppleACPIPlatformPower Wake reason: GPP0 PT23
kernel: (AppleACPIPlatform) AppleACPIPlatformPower Wake reason: GPP0 PT23

In the attached DSDT from F16e BIOS, one can see that Gigabyte usesd GPRW method in most places but for PTXH devices it has hard-coded _PRW implementation. So GPRW renaming does not cover all the possible cases. This could simply be due to this bios still being beta (Gigabyte BIOS versions with letter suffixes are considered beta) and they might clean this up in final F16 version.

Per this helpful guide, I attempted to override second argument of each _PRW implementation.

Did not help, I still see the same behavior: builds goes to sleep perfectly but then instantly wakes back up.

The first link to my build above contains the entire EFI and with DSDT attached here, that's all that could be useful for someone to take a look.

Ideas and suggestions are welcome.
 

Attachments

  • B550I Aorus AX F16e DSDT.dsl.zip
    21.6 KB · Views: 6

Edhawk

Guru
Guru
Joined
May 2, 2020
Messages
2,358
Take a look in your system IOReg and see if you can find an entry that matches the two wake reasons shown at the bottom of the image you posted above.

kernel: (AppleACPIPlatform) AppleACPIPlatformPower Wake reason: GPP0 PT23
kernel: (AppleACPIPlatform) AppleACPIPlatformPower Wake reason: GPP0 PT23

Could be pointing to a specific device (XHC0 USB port)?

There are two instances where the GPP0 entry can be found in your DSDT.aml, as show below.

Screenshot 2022-12-04 at 20.16.07.png GPP0 Device

Screenshot 2022-12-04 at 20.16.29.png USB port power

If you have a USB port named PT23 in your USBMap.kext I would look at that in the first instance, to see if it has been set correctly.
 

atanvarno

Donator
Donator
AMD OS X Member
Joined
May 2, 2020
Messages
228
Here's the .ioreg file attached.

Those devices do not appear under IOService, I could find them only under IOACPIPlane.
I can't tell what they are related to. One indicates possible connection to LAN, I tried disabling Wake on LAN in BIOS but that did not change anything.

Screenshot 2022-12-04 at 22.48.25.png
Screenshot 2022-12-04 at 22.47.10.png
 

Attachments

  • B550I Aorus AX F16e.ioreg.zip
    8.5 MB · Views: 9

atanvarno

Donator
Donator
AMD OS X Member
Joined
May 2, 2020
Messages
228
These are all the ports.Screenshot 2022-12-04 at 22.52.29.png
 

atanvarno

Donator
Donator
AMD OS X Member
Joined
May 2, 2020
Messages
228
This is export of PCI devices, from Hackintool.
 

Attachments

  • pcidevices.txt
    10 KB · Views: 1

atanvarno

Donator
Donator
AMD OS X Member
Joined
May 2, 2020
Messages
228
Finally had some time to dig into this a bit more...first thing is I used USBToolbox to re-do USB map again, on Windows 11. There's an additional USB controller which I believe is related to USB-C port on the Radeon 6900 XT GPU.

It's at the bottom of the whole list. I don't think this has anything to do with instant-wake issues although it did pick my curiosity.

B550-F16e-USBmap.png
 

atanvarno

Donator
Donator
AMD OS X Member
Joined
May 2, 2020
Messages
228
I also used SSDTTime to dump DSDT on Windows. So now that I have them exported from F12 BIOS and F16e BIOS, I can compare to see what is different and maybe pinpoint what cause the instant-wake issue.

And oh boy, it's quite different.
  • entire PTXH is missing from F12's DSDT
  • F16e has dozens of additional method/Device/FieldUnit objects
  • SMBus device changed from D01C to D01B
  • plethora of other changes
Coming back to ACPI Wake reasons — device GPP0 and PT23 — their definitions are slightly different between the versions. I'll have to dig into these changes and see what I can figure out.

Might be worth a try to simply disable those two devices through SSDT and see if anything is amiss.
 

Attachments

  • DSDTs.zip
    41.5 KB · Views: 2
Last edited:

atanvarno

Donator
Donator
AMD OS X Member
Joined
May 2, 2020
Messages
228
Yes, that's way too specific for what it tries to do.
None of the GPRW calls in B550I DSDT have those two values for Arg0 - there's plenty of different values but second argument is almost always 0x04

Here's a much better version I wrote a while back when I had ASRock X570 mobo that target that second arg and replaces with 0x03:

Code:
DefinitionBlock ("", "SSDT", 2, "ATNVR", "GPRW", 0x00000000)
{
    External (XPRW, MethodObj)    // 2 Arguments

    Method (GPRW, 2, NotSerialized)
    {
        If (_OSI ("Darwin"))
        {
            If ((0x04 == Arg1))
            {
                Return (XPRW (Arg0, 0x03))
            }
        }

        Return (XPRW (Arg0, Arg1))
    }
}

It is far more generic in nature and globally enforces S3 sleep.
 

atanvarno

Donator
Donator
AMD OS X Member
Joined
May 2, 2020
Messages
228
Well, that attempt worked. No SSDT-GPRW nor SSDT-PRW0 needed.

Just this one SSDT that disables the offending devices and build stays in sleep:

Code:
DefinitionBlock ("", "SSDT", 2, "ATNVR", "DSBL", 0x00001000)
{
    External (_SB_.PCI0.GPP0, DeviceObj)
    External (_SB_.PCI0.GPP1.PT02.PT23, DeviceObj)

    If (_OSI ("Darwin"))
    {
        Scope (_SB.PCI0.GPP0)
        {
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (Zero)
            }
        }

        Scope (\_SB.PCI0.GPP1.PT02.PT23)
        {
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (Zero)
            }
        }
    }
}

WiFi/Bt reconnect automatically. Everything else seems to work just fine, no major issues.
Minor issues to resolve still:
  • USB devices are forcefully ejected.
  • Keyboard press is enough to wake up the build but another key press is needed to wake up the display.
Second is not really a problem, could not care less about it. First one is not nice — ideally it should set the devices to sleep and reconnect them back. But I had the same issues when testing the sleep/wake before this disable trickery thus it looks to be unrelated to this at all.

Enough for today.
 

Lorys89

Active member
AMD OS X Member
Joined
Dec 16, 2022
Messages
183
io hoI also have the gigabyte b550i aorus pro ax and I solved all these problems, wakes up and goes to screen with a click of keyboard key, and I last bios.
 
Back
Top Bottom
  AdBlock Detected
Sure, ad-blocking software does a great job at blocking ads, but it also blocks some useful and important features of our website. For the best possible site experience please take a moment to disable your AdBlocker.