dzsipokink Posted December 30, 2020 Share Posted December 30, 2020 (edited) I successfully installed macOS Catalina onto my Lenovo Thinkpad X230 (Ivy Bridge) notebook using the vanilla OpenCore (0.6.4) guide. The installation process was painless and the OS boots up just fine.I double checked the guide and gathered all the files needed. I downloaded the latest kexts from github, and I used SSDTime & PreBuilt SSDT-s to get my ACPI related files.Right now, I'm at the point when I'm trying to fix things at post installation. However, I was spending the last 2 days with trying to get my ALC269 audio device recognised with no luck. No audio devices shows up.I'm trying to figure out whats causing this issue, and any help would be deeply appreciated!I have tried using alcid=xxx bootargs with many possible values menitoned by u/GalacticSpaceTiger in this post. Additionally, I know for the fact that alcid=18 should work for me, because I tried other X230 opencore repos and it worked with that, and also other values.The interesting thing is that I can get my audio device working by adding the following patch into my config.plist (ACPI > Patch) :<dict> <key>Comment</key> <string>HPET (\\WNTF\\!WXPF to \_OSI("Darwin"))</string> <key>Enabled</key> <true/> <key>Find</key> <data> oBCQXFdOVEaSXFdYUEY= </data> <key>Replace</key> <data> oA9fT1NJDURhcndpbgA= </data> </dict>When I add this patch, the audio works fine, but the system shuts down after a minute or two. Also, I could not find any information about this patch in the Dortania guide. My guess is that it's related to IRQ patching. So I went back to the ACPI patching guide and double checked everything. No luck unfortunately.Do you have any idea what I'm missing here?My Specs: Lenovo ThinkPad X230, modded bios M.2 110Gb SSD 8GB RAM Dell DW1510 wifi (currently not working) audio codec infor from Linux full hwinfo here This is my work in progress EFI folder: direct download link Edited December 30, 2020 by dzsipokink Link to comment https://www.insanelymac.com/forum/topic/346229-cant-get-applealc-to-work/ Share on other sites More sharing options...
shl628 Posted December 31, 2020 Share Posted December 31, 2020 (edited) It is correct that the problem of sound output through AppleALC is caused by an IRQ conflict. On older computers below Intel 5th Gen Broadwell, IRQ conflicts have a big impact on Mac OS. So, in the case of Clover, patching is done by setting the ACPI - DSDT - Fixes - FixHPET items to True. However, in the case of OpenCore, it is mainly used to patch HPET using SSDTTime. I recommend that you do not use the ACPI patch you wrote in your post, and create and apply the following SSDT patch yourself. I'm not sure how exactly that patch is used to patch, but on older computers where HPET needs to be used, if the HPET name is different, such as HPE0, it is often a kernel panic reboot some time after Mac OS boot. https://github.com/daliansky/OC-little/blob/master/保留部件/声卡IRQ补丁/SSDT-HPET_RTC_TIMR-fix.dsl https://github.com/jsassu20/OpenCore-HotPatching-Guide/blob/master/23-HPET_RTC_TIMR 3-in-1 patch/SSDT-HPET_RTC_TIMR-fix.dsl So, check which IRQ to patch with SSDTTime and use AppleALC by patching IRQ conflicts with RTC, TIMR device disable, HPET._CRS patch, RTC0, TIM0 device enable on Mac OS. And, in other OS such as Windows other than Mac OS, the existing HPET.XCRS, RTC, TIMR are used. A patch is needed to rename HPET's _CRS to XCRS. However, you need to check it yourself as the devices that need to patch IRQ conflicts in SSDTTime are different for each computer. In summary, the following items are used in Mac OS. - HPET._CRS (patched by SSDTTime) - RTC0 (Device to be activated and used only in Mac OS) - TIM0 (Device to be activated and used only in Mac OS) In other OS such as Windows other than Mac OS, use the following items. - HPET.XCRS (OEM DSDT content with only Rename patch applied) - RTC (OEM DSDT content) - TIMR (OEM DSDT content) In addition, code must be written to enable or disable depending on the OS using the If (_OSI ("Darwin")) syntax in the _STA Method. Example code for SSDT is as follows : Scope (HPET) { Name (BUF1, ResourceTemplate () { IRQNoFlags () {0,8} Memory32Fixed (ReadWrite, 0xFED00000, // Address Base 0x00000400, // Address Length ) }) Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings { If (_OSI ("Darwin")) { Return (BUF1) } Return (\_SB.PCI0.LPCB.HPET.XCRS ()) } } Please be careful not to use the above code as it is. The contents of the object called BUF1 can be retrieved from SSDT-HPET.aml created by patching from SSDTTime. Also, if the name of the device corresponding to the LPC is LPC rather than LPCB, the Scope path must be changed to \_SB.PCI0.LPC.~. The overall contents and tree structure of an example SSDT is as follows : External (_SB_.PCI0.LPCB, DeviceObj) // (from opcode) External (_SB_.PCI0.LPCB.HPET, DeviceObj) // (from opcode) External (_SB_.PCI0.LPCB.HPET.BUF0, BuffObj) // (from opcode) External (_SB_.PCI0.LPCB.HPET.XCRS, MethodObj) // 0 Arguments (from opcode) Scope (\_SB.PCI0.LPCB) { Method (RTC._STA, 0, NotSerialized) // _STA: Status { If (_OSI ("Darwin")) { Return (Zero) } Return (0x0F) } Method (TIMR._STA, 0, NotSerialized) // _STA: Status { If (_OSI ("Darwin")) { Return (Zero) } Return (0x0F) } Scope (HPET) { Name (BUF1, ResourceTemplate () { IRQNoFlags () {0,8} Memory32Fixed (ReadWrite, 0xFED00000, // Address Base 0x00000400, // Address Length ) }) Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings { If (_OSI ("Darwin")) { Return (BUF1) } Return (\_SB.PCI0.LPCB.HPET.XCRS ()) } } Device (RTC0) { Name (_HID, EisaId ("PNP0B00")) // _HID: Hardware ID Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { IO (Decode16, 0x0070, // Range Minimum 0x0070, // Range Maximum 0x01, // Alignment 0x08, // Length ) }) Method (_STA, 0, NotSerialized) // _STA: Status { If (_OSI ("Darwin")) { Return (0x0F) } Return (Zero) } } Device (TIM0) { Name (_HID, EisaId ("PNP0100")) // _HID: Hardware ID Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { IO (Decode16, 0x0040, // Range Minimum 0x0040, // Range Maximum 0x01, // Alignment 0x04, // Length ) IO (Decode16, 0x0050, // Range Minimum 0x0050, // Range Maximum 0x10, // Alignment 0x04, // Length ) }) Method (_STA, 0, NotSerialized) // _STA: Status { If (_OSI ("Darwin")) { Return (0x0F) } Return (Zero) } } } I hope your problem is solved well. Edited December 31, 2020 by shl628 1 Link to comment https://www.insanelymac.com/forum/topic/346229-cant-get-applealc-to-work/#findComment-2747930 Share on other sites More sharing options...
dzsipokink Posted December 31, 2020 Author Share Posted December 31, 2020 8 hours ago, shl628 said: I hope your problem is solved well. Oh my god thank you @shl628! Very indepth answer, and very useful! Although, I am somewhat new to the whole acpi patching game. Would you recommend this, and this guide by Rehabmen to get done the patching part? I already used SSDTime's IRQ fix with Option 'C' but that alone didn't do the trick, so I'm also sure about the patches you mention are neccesary as well. 1 Link to comment https://www.insanelymac.com/forum/topic/346229-cant-get-applealc-to-work/#findComment-2747948 Share on other sites More sharing options...
shl628 Posted January 1, 2021 Share Posted January 1, 2021 (edited) 19 hours ago, dzsipokink said: Oh my god thank you @shl628! Very indepth answer, and very useful! Although, I am somewhat new to the whole acpi patching game. Would you recommend this, and this guide by Rehabmen to get done the patching part? I already used SSDTime's IRQ fix with Option 'C' but that alone didn't do the trick, so I'm also sure about the patches you mention are neccesary as well. I have attached the modified SSDT. Delete the existing SSDT-HPET.aml and replace it with the one attached below. SSDT-HPET.aml And, delete the following items from the ACPI - Patch section of Config.plist. - TIMR IRQ 0 Patch - RTC IRQ 8 Patch In order to rename only HPET _CRS to XCRS, modify the patch contents as follows. Find : 0F085F435253 Replace : 0F0858435253 Edited January 1, 2021 by shl628 Link to comment https://www.insanelymac.com/forum/topic/346229-cant-get-applealc-to-work/#findComment-2747984 Share on other sites More sharing options...
dzsipokink Posted January 2, 2021 Author Share Posted January 2, 2021 On 1/1/2021 at 3:56 AM, shl628 said: I have attached the modified SSDT. Delete the existing SSDT-HPET.aml and replace it with the one attached below. SSDT-HPET.aml And, delete the following items from the ACPI - Patch section of Config.plist. - TIMR IRQ 0 Patch - RTC IRQ 8 Patch In order to rename only HPET _CRS to XCRS, modify the patch contents as follows. Find : 0F085F435253 Replace : 0F0858435253 Thank you! I'm having a few exams in January so I'll be out of hackintoshing until 11st January. I'll be reporting back soon! Link to comment https://www.insanelymac.com/forum/topic/346229-cant-get-applealc-to-work/#findComment-2748073 Share on other sites More sharing options...
Recommended Posts