Jump to content
32 posts in this topic

Recommended Posts

Good afternoon.

Some of us have tested Intel Wi-Fi + Bluetooth combo devices and we have seen that it is a valid solution for macOS Sonoma with the added advantage that it is not necessary to apply patches to the system or lower the security level. Specifically, I have AX210 in 2 hacks.


Both parts work well, Wi-Fi and BT, good connectivity and ease of installation. Problems that appeared in the latest betas of macOS Sonoma are being fixed by the developers.


But when using BT from the Intel card I have an important problem with sleep. The system seems to go into sleep, lights and fans turn off but, after a few seconds, they come back on.
BT is active after waking up the system and always when booting, that is not the problem but sleep.
I have tested even the latest beta versions of IntelBluetoothFirmware.kext (2.4.0), IntelBTPatcher.kext (2.4.0) and itlwm.kext (2.3.0).
I have tried adding and removing the parameters related to BT in NVRAM.
I've tried with and without NVMeFix.kext, at some point I got the impression that it might be related.


Anyway, if I enable BT on the Intel card I lose sleep. For me it is not very important because I usually work with Intel Wi-Fi and Fenvi BT (Broadcom) but it is something that I have not been able to fix.


Have those of you who use BT of Intel cards observed this problem?

Edited by miliuco
  • Like 4

@miliuco I dont have issue Sleep/Wake with AX200NGW -Wifi Bluetooth

 is also sleep from Lid

HP EliteBook 840 G4 

My JBL  GO 2 turn to sleep I sse blinkin light on the speeker

 

image.pngimage.png

 

  • Like 1

Hi @miliuco im notice that my Lenovo E470 doing well to sleep with only intel AX210 Card, with Bluetooth intel and WiFi6. Im think is a SSDT-XXX   HotPatch that need for laptops, and depending of model, maybe check S3 sleep IDLE if was turn on or off. 

 

Maybe guys can try debug this issue. 

 

log show --last 1d | grep "Wake reason" 

 

Ru in terminal and see log 

 

Look this guide from GITHUB 

 

https://github.com/jsassu20/OpenCore-HotPatching-Guide/tree/master/00-Overview 

 

Or use this SSDT to try fix 

 

 

SSDT-8-S3.dsl.zip

Edited by Max.1974
  • Like 1

Current status of the topic.

@Extreme™ who is looking for a fix and all who have helped with their posts and tests (thanks).


1. SSDT-S3

I have tried SSDT-8-S3 uploaded by @Max.1974, this SSDT enables sleep (wake from keyboard, mouse or power button) but... disables Bluetooth.

DefinitionBlock ("", "SSDT", 1, "APPLE ", "SSDTS3", 0x00001000)
{
    Name (_S3, Package (0x03)  // _S3_: S3 System State
    {
        0x05, 
        0x05, 
        Zero
    })
}


2. SSDT-GPRW

I have tested SSDT-GPRW which is used in cases where the system wakes up from sleep immediately after entering it. This SSDT enables sleep which works fine again but it only wakes up from power button, it doesn't wake up from keyboard or mouse. Bluetooth works fine, even when waking up from sleep.

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

    Method (GPRW, 2, NotSerialized)
    {
        If (_OSI ("Darwin"))
        {
            If ((0x6D == Arg0))
            {
                Return (Package (0x02)
                {
                    0x6D, 
                    Zero
                })
            }

            If ((0x0D == Arg0))
            {
                Return (Package (0x02)
                {
                    0x0D, 
                    Zero
                })
            }
        }

        Return (XPRW (Arg0, Arg1))
    }
}

SSDT-GPRW only works if it is linked to ACPI >> Patch >> Rename GPRW to XPRW, both things are necessary.

	<key>ACPI</key>
	<dict>
		<key>Patch</key>
		<array>
			<dict>
				<key>Base</key>
				<string></string>
				<key>BaseSkip</key>
				<integer>0</integer>
				<key>Comment</key>
				<string>Change GPRW to XPRW, needs SSDT-GPRW.aml</string>
				<key>Count</key>
				<integer>0</integer>
				<key>Enabled</key>
				<true/>
				<key>Find</key>
				<data>R1BSVwI=</data>
				<key>Limit</key>
				<integer>0</integer>
				<key>Mask</key>
				<data></data>
				<key>OemTableId</key>
				<data></data>
				<key>Replace</key>
				<data>WFBSVwI=</data>
				<key>ReplaceMask</key>
				<data></data>
				<key>Skip</key>
				<integer>0</integer>
				<key>TableLength</key>
				<integer>0</integer>
				<key>TableSignature</key>
				<data></data>
			</dict>
		</array>
	</dict>


3. USB wake properties

I have added properties to USB DeviceProperties that typically allow wake from keyboard or mouse but, while SSDT-GPRW is loaded, these properties do not seem to work.

			<key>PciRoot(0x0)/Pci(0x14,0x0)</key>
			<dict>
				<key>acpi-wake-gpe</key>
				<data>bQ==</data>
				<key>acpi-wake-type</key>
				<data>AQ==</data>
			</dict>

Summary: I can have Intel BT working without proper sleep or Intel BT + sleep working but waking only from power button.

 

I don't know if there is a way to have both features, I see that SSDT-GPRW by design disables wake from USB devices and I don't know how to recover this feature while keeping proper sleep.

 

Disabling Intel Bluetooth, everything returns to normal.

 

Note: @chris1111 has sleep working while using Intel Bluetooth. Systems have different behaviors. Or it may be that the laptop does not go into sleep S3 since there is a blinking light.

 

EDIT: also tried a DSDT made by @MaLd0n for my system time ago, no success, instant wake after sleep but Intel Bluetooth works fine.

 

 

Edited by miliuco
  • Like 2

HI @miliuco my Master, so glad to help you. 

 

If you want check more SSDT patches of mine, this S3 that you refer im extract from my MacBook Air 2020 intel i7 

 

Im sure that you fix that soon 

 

 

Im not use GPRW or UPRW on Laptop, because mine is _PRW. 

 

Im find another way. 

 

You can try use this too 

 

 

 

SSDT-PCI0.LPCB-Wake-AOAC.zip

Edited by Max.1974
  • Like 2
8 minutes ago, miliuco said:

@Max.1974

Thank you. Mine has LPCB. But the downloaded ZIP is corrupted and I can't open the aml. Please redownload it. Before of this, test if it compiles right on your system.

 

Hi my friend, here is all right but im sendo .dsl decompiled 

 

Spoiler

image.thumb.png.941e0230840c4facc9fc8c32554b3299.png

 

SSDT-PCI0.LPCB-Wake-AOAC DSL.zip

You can pass a few hours with fun reading here on source my friend 

 

https://github.com/jsassu20/OpenCore-HotPatching-Guide/tree/master/01-About AOAC 

 

 

If I can help you, just call me ok ? 

 

God job !! :D 

Im forgot said im using MaciAsl with DEV Mode 

 

 

Edited by Max.1974
  • Like 1
3 hours ago, miliuco said:

Current status of the topic.

@Extreme™ who is looking for a fix and all who have helped with their posts and tests (thanks).


1. SSDT-S3

I have tried SSDT-8-S3 uploaded by @Max.1974, this SSDT enables sleep (wake from keyboard, mouse or power button) but... disables Bluetooth.

DefinitionBlock ("", "SSDT", 1, "APPLE ", "SSDTS3", 0x00001000)
{
    Name (_S3, Package (0x03)  // _S3_: S3 System State
    {
        0x05, 
        0x05, 
        Zero
    })
}


2. SSDT-GPRW

I have tested SSDT-GPRW which is used in cases where the system wakes up from sleep immediately after entering it. This SSDT enables sleep which works fine again but it only wakes up from power button, it doesn't wake up from keyboard or mouse. Bluetooth works fine, even when waking up from sleep.

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

    Method (GPRW, 2, NotSerialized)
    {
        If (_OSI ("Darwin"))
        {
            If ((0x6D == Arg0))
            {
                Return (Package (0x02)
                {
                    0x6D, 
                    Zero
                })
            }

            If ((0x0D == Arg0))
            {
                Return (Package (0x02)
                {
                    0x0D, 
                    Zero
                })
            }
        }

        Return (XPRW (Arg0, Arg1))
    }
}

SSDT-GPRW only works if it is linked to ACPI >> Patch >> Rename GPRW to XPRW, both things are necessary.

	<key>ACPI</key>
	<dict>
		<key>Patch</key>
		<array>
			<dict>
				<key>Base</key>
				<string></string>
				<key>BaseSkip</key>
				<integer>0</integer>
				<key>Comment</key>
				<string>Change GPRW to XPRW, needs SSDT-GPRW.aml</string>
				<key>Count</key>
				<integer>0</integer>
				<key>Enabled</key>
				<true/>
				<key>Find</key>
				<data>R1BSVwI=</data>
				<key>Limit</key>
				<integer>0</integer>
				<key>Mask</key>
				<data></data>
				<key>OemTableId</key>
				<data></data>
				<key>Replace</key>
				<data>WFBSVwI=</data>
				<key>ReplaceMask</key>
				<data></data>
				<key>Skip</key>
				<integer>0</integer>
				<key>TableLength</key>
				<integer>0</integer>
				<key>TableSignature</key>
				<data></data>
			</dict>
		</array>
	</dict>


3. USB wake properties

I have added properties to USB DeviceProperties that typically allow wake from keyboard or mouse but, while SSDT-GPRW is loaded, these properties do not seem to work.

			<key>PciRoot(0x0)/Pci(0x14,0x0)</key>
			<dict>
				<key>acpi-wake-gpe</key>
				<data>bQ==</data>
				<key>acpi-wake-type</key>
				<data>AQ==</data>
			</dict>

Summary: I can have Intel BT working without proper sleep or Intel BT + sleep working but waking only from power button.

 

I don't know if there is a way to have both features, I see that SSDT-GPRW by design disables wake from USB devices and I don't know how to recover this feature while keeping proper sleep.

 

Disabling Intel Bluetooth, everything returns to normal.

 

Note: @chris1111 has sleep working while using Intel Bluetooth. Systems have different behaviors. Or it may be that the laptop does not go into sleep S3 since there is a blinking light.

 


Thank you very much @miliuco for your tests. SSDT-GPRW is right for me and I will test it immediately: in fact I always use the power button to wake up from sleep.
Thanks also to @Max.1974for his contribution.

  • Like 2

You are welcome 🤗 

Im now test Clover and install fresh from my Desktop. Sonoma beta 14.4 b2 for the first time Clover 🍀 get it when Opencore fail. 

  • Like 3
  • 3 weeks later...

@Extreme™

Sorry for delayed answer.

SSDT-GPRW works fine on my side, doing as expected: macOS goes to sleep and wakes up, loosing the ability to wake up by USB mouse or keyboard (power button only).

Have you added the GPRW patch to config.plist too?

  • Like 1

@MaLd0n

 

Hello, I'm asking you without any obligation on your part, of course.

About the summary I wrote in the linked post, do you know any way to have SSDT-GPRW to be able to properly sleep but without loosing the ability to wake up from mouse or keyboard?

Note that I've tried too a DSDT made by you for my system a time ago, without success (no sleep as is or no wake from mouse or keyboard when adding SSDT-GPRW).

Thank you very much.

 

 

 

 

Try to kill all _PRWs with SSDT and ACPI Rename or DSDT and add new _PRW. 

 

-SSDT 

ACPI Rename _PRW to XPRW 

Quote

<dict>
                    <key>Base</key>
                    <string></string>
                    <key>BaseSkip</key>
                    <integer>0</integer>
                    <key>Comment</key>
                    <string>_PRW to XPRW</string>
                    <key>Count</key>
                    <integer>0</integer>
                    <key>Enabled</key>
                    <true/>
                    <key>Find</key>
                    <data>X1BSVw==</data>
                    <key>Limit</key>
                    <integer>0</integer>
                    <key>Mask</key>
                    <data></data>
                    <key>OemTableId</key>
                    <data></data>
                    <key>Replace</key>
                    <data>WFBSVw==</data>
                    <key>ReplaceMask</key>
                    <data></data>
                    <key>Skip</key>
                    <integer>0</integer>
                    <key>TableLength</key>
                    <integer>0</integer>
                    <key>TableSignature</key>
                    <data></data>
                </dict>

 

and SSDT with this

Quote

Scope (\_SB.PC00.XHCI) <--- (Need correct adress)
    {
        Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                    {
                        Return (Package ()
                        {
                            0x6D, 
                            0x04
                        })
                    }
    }

_PRW.aml.zip

Spoiler

MaLd0n 2024-03-03 às 19.37.21.png

 

-DSDT

U can use this to remove all _PRWs (If u using WAKE from LAN for example u need stay with _PRW inside Ethernet device

Quote

into_all method label _PRW  remove_entry;
into_all all code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\}\) remove_matched

And this to add new _PRW into XHCI device @14 

Quote

into device name_adr 0x00140000 insert begin Method(_PRW) { Return(Package() { 0x6D, 4 }) } end

Spoiler

MaLd0n 2024-03-03 às 19.37.36.png

 

  • Like 3
×
×
  • Create New...