Jump to content

Bug fix for AM5 new firmware motherboards (DSDT-FIX)


Lorys89

Recommended Posts

 Method (_ON, 0, NotSerialized)  // _ON_: Power On
            {
                M000 (0x30D0)
                M460 ("  OEM-ASL-\\_SB.PCI0.GPP1.P0NV._ON\n", Zero, Zero, Zero, Zero, Zero, Zero)
                Store (G017, Local0)
                Store (0x02, Local2)
                Store (\PWGS (Zero), Local5)
                M460 ("  OEM-ASL-\\_SB.PCI0.GPP1.P0NV._ON D3Cold = 0x%X WD3C First = 0x%X SI3V = 0x%X\n", Local0, WD3C, Local5, Zero, Zero, Zero)
                If (LEqual (Local0, One))
                {
                    PWEN ()
                }

                If (LOr (LEqual (WD3C, One), LEqual (Local5, Zero)))
                {
                    RPCF ()
                    Sleep (0x0A)
                    If (CondRefOf (\UPWD))
                    {
                        \UPWD ()
                    }

                    Store (Zero, WD3C)
                }

                Store (One, D0NV)
                M000 (0x30D1)
            }

Given that the variables G000 to G020 and three methods have been deleted in the cpvs section previously,Is it correct to modify this code as follows?

            Method (_ON, 0, NotSerialized)  // _ON_: Power On
            {
                M000 (0x30D0)
                M460 ("  OEM-ASL-\\_SB.PCI0.GPP1.P0NV._ON\n", Zero, Zero, Zero, Zero, Zero, Zero)
                Store (0x02, Local2)

                If (LEqual (WD3C, One))
                {
                    RPCF ()
                    Sleep (0x0A)
                    Store (Zero, WD3C)
                }

                Store (One, D0NV)
                M000 (0x30D1)
            }

 

Link to comment
Share on other sites

On 10/6/2025 at 3:32 PM, yandong31 said:

Attached is my original DSDT

Is this a MSI motherboard, by any chance? 

 

We know now that the actual ACPI is that some devices are created conditionally, and macOS does not like that; rather than manually editing the DSDT, the preferred solution is to use OpenCore to patch just the conditional declarations. Corpnews makes board-specific paches on request. I have tried to work out "universal" patches, but it seems that at least two versions will still be needed.

Here is what should should work for you:

 

am5_patches_msi.plist.zip

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
On 10/8/2025 at 1:52 AM, etorix said:


这是 MSI 主板吗?

 


我们现在知道,实际的 ACPI 是某些设备是有条件创建的,而 macOS 并不喜欢这样;与其手动编辑 DSDT,不如使用 OpenCore 来修补条件声明。Corpnews 会根据需求制作特定主板的补丁。我尝试过开发“通用”补丁,但似乎至少还需要两个版本。


以下是应该对您有用的内容:

 


am5_patches_msi.plist.zip 1.02 kB · 1 download

The patch definitely modified the DSDT like it should, but my onboard network card still isn’t working. Do I really have to make patches for every single conditional statement that looks like "If (((G002 != 0x03) && ((G000 == One)"?

There are so many conditional statements, and the same device is referred to differently in different condition blocks. Even if I remove the conditional statements, which one should I pick?
 

If ((G002 != One))
If (((G000 == One) && ((G002 >= 0x04) && (
        G002 <= 0x07)))){}
If (((G000 == One) && (G002 == 0x07))){}
If (((G002 != 0x03) && (G000 != Zero))){}
If ((G002 != 0x03))
If ((G002 < 0x03))
If (((G002 != 0x03) && (G000 == One)))
If (((G002 != 0x03) && (G000 != Zero)))
If (((G002 != 0x03) && ((G000 == One) && (G004 == 
        0x43FA1022))))
If (((G002 != 0x03) && ((G000 == One) && (
        G004 != 0x43FA1022))))
If (((G002 != 0x03) && (G000 == 0x02)))
If (((G002 < 0x03) && (G000 == One)))
If (((G002 != 0x03) && ((G000 == One) && (
        G002 != 0x04))))
If (((G002 != 0x03) && ((G000 == One) && (
        (G002 != 0x04) && (G002 != 0x07)))))
If (((G002 != 0x03) && ((G000 == One) && (
        G002 != 0x05))))
If (((G002 != 0x03) && ((G000 == One) && (
        G002 != 0x06))))
If (((G000 == One) && (G002 == 0x04)))
If (((G000 == One) && (G002 == 0x05)))
If (((G000 == One) && (G002 == 0x06)))
If ((((G002 != 0x03) && (G000 == One)) && (
        (G002 != 0x04) && (G003 != Zero))))
If (((G000 == One) && ((G002 == 0x07) && (G003 != 
        Zero))))
If ((((G002 != 0x03) && (G000 == One)) && (
        (G002 != 0x04) && ((G002 != 0x07) && (G003 != Zero)))))
If ((((G002 != 0x03) && (G000 == One)) && (
        (G002 != 0x04) && (G003 == Zero))))
If ((G002 != 0x03))
If ((G002 != 0x02))
If ((G001 == One))

             
                  
                  

 

The DSDT on MSI motherboards is a total disaster!
 

Link to comment
Share on other sites

From the thread on AMD OSX, your board is a MSI X670e Gaming Plus Wifi, and the NIC is a Realtek 8125BG. Is this particular model supported under macOS?

 

3 hours ago, yandong31 said:

Even if I remove the conditional statements, which one should I pick?

The three statements which are patched control many different devices. Do you know the path to the RTL8125BG?

Link to comment
Share on other sites

17 hours ago, etorix said:


从 AMD OSX 的帖子来看,你的主板是 MSI X670e Gaming Plus Wifi,网卡是 Realtek 8125BG。这个型号在 macOS 下支持吗?

 


被修补的三个语句控制着许多不同的设备。你知道 RTL8125BG 的路径吗?

I can get the onboard network card recognized normally if I manually delete the G000~G02D variables and the subsequent conditional statements following the OP’s method—it’s just not very clean. I’m wondering how you made your patch step by step? Also, the address for my RTL8125BG is IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GPP7@2,1/IOPP/UP00@0/IOPP/DP40@8/IOPP/UP00@0/IOPP/DP28@5/IOPP/ethernet@0.

Link to comment
Share on other sites

I’ve got 5 Scopes for (_SB.PCI0.GPP7), 3 for (_SB.PCI0.GPP7.UP00.DP40), 2 for (_SB.PCI0.GPP7.UP00.DP40.UP00.DP40), and 2 for (_SB.PCI0.GPP7.UP00.DP20)—all tucked under different conditional statements. Then there’s also 2 Scopes for (_SB.PCI0.GPP7.UP00.DP60.XH00) that are under different conditionals too. I really have no idea which ones to keep!

Edited by yandong31
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • There are no registered users currently online
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.