yandong31 Posted October 6 Share Posted October 6 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 More sharing options...
etorix Posted October 7 Share Posted October 7 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 1 Link to comment Share on other sites More sharing options...
yandong31 Posted Monday at 02:19 PM Share Posted Monday at 02:19 PM 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 More sharing options...
etorix Posted Monday at 06:11 PM Share Posted Monday at 06:11 PM 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 More sharing options...
yandong31 Posted Tuesday at 11:46 AM Share Posted Tuesday at 11:46 AM 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 More sharing options...
yandong31 Posted Tuesday at 11:51 AM Share Posted Tuesday at 11:51 AM (edited) 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 Tuesday at 11:55 AM by yandong31 Link to comment Share on other sites More sharing options...
etorix Posted Tuesday at 07:31 PM Share Posted Tuesday at 07:31 PM Thanks. The DSDT is confusing, with many conditions I havent seen with other manufacturers. If you see IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GPP7@2,1/IOPP/UP00@0/IOPP/DP40@8/IOPP/UP00@0/IOPP/DP28@5/IOPP/ethernet@0 \_SB.PCI0.GPP7.UP00.DP40.UP00.DP28 are all created as they should, despite the conditional declarations. But the NIC has no proper ACPI name ("ethernet@0"). Maybe a SSDT to name it would help? 7 hours ago, yandong31 said: I’m wondering how you made your patch step by step? The scopes which matter are those where devices are declared. \_SB.PCI0.GPP7.UP00 is created under If (((G002 != 0x03) && (G000 != Zero))) at line 25080. This is patch #1a. \_SB.PCI0.GPP7.UP00.DP40.UP00 is created under If ((((G002 != 0x03) && (G000 == One)) && ( (G002 != 0x04) && (G003 != Zero)))) at lines 38352-38353. I do not think this is the issue, since you see the IOService path, but if I wanted to make a patch I would look for it in the binary DSDT.aml. Here it is (I looked for the OpCode sequence G002 != 0x04 && G003 != Zero, there is only one in the DSDT): The complete condition is: A0399090 92934730 30320A03 93473030 30019092 93473030 320A0493 47303033 00 where 'A0' is 'If'. Replace all bytes by 'A3' (NoOp) to remove the condition: A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 A3 To make it more generic, make a mask for the padding byte '39' between 'A0' ('If') and test '90' ('&&'): FF00FFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FF SSDT-RTL8125.aml.zip Link to comment Share on other sites More sharing options...
yandong31 Posted 23 hours ago Share Posted 23 hours ago I made a patch following your method, but my device won’t boot. Could you help me figure out what’s wrong? A0000000 90909293 47303032 0A039347 30303001 90929347 3030320A 04929347 30303300 G002 != 0x03 && G000 == One && G002 != 0x04 && G003 != Zero FF000000 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 Link to comment Share on other sites More sharing options...
Supervisor fabiosun Posted 4 hours ago Supervisor Share Posted 4 hours ago (edited) 19 hours ago, yandong31 said: I made a patch following your method, but my device won’t boot. Could you help me figure out what’s wrong? A0000000 90909293 47303032 0A039347 30303001 90929347 3030320A 04929347 30303300 G002 != 0x03 && G000 == One && G002 != 0x04 && G003 != Zero FF000000 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 A3A3A3A3 On discord CorpGhost is asking for your origin DSDT in aml format to do a patch for you Edit i converted it for you, let see if he produces acpi patches for you! Edited 4 hours ago by fabiosun Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now