Contribute
Register

ASRock Z77 Extreme6 - Catalina 10.15.4 - OpenCore

Status
Not open for further replies.
Joined
Sep 3, 2010
Messages
50
Motherboard
ASUS K501UQ
CPU
i3-6100U
Graphics
HD 520
Intro

Current version: Catalina 10.15.4 — OpenCore 0.5.7
Overall status — stable, 98%. Issues: a 20s boot delay, probably iGPU HDMI sound.

This guide is intended mostly for troubleshooting and hinting at less obvious things. It will not serve as complete installation guide, as there are enough of much better-written ones (probably start here). It is expected that you're able to google. I'll provide my config, but it should serve only as an example. You should build it yourself for your hardware.

Required software
  • Latest OpenCore, both debug and release versions (this config was written for 0.5.7; I will update it from time to time)
  • MaciASL, iasl (acidanthera's MaciASL build contains iasl inside app package)
  • IORegistryExplorer 2.1, exactly this version. Get it here.
  • Hackintool – extremely useful multitool software. Here.
  • Decent programming-class editor (Sublime Text, for example).
  • Plist editor – XCode (7Gb download, 20Gb installed), PlistEdit Pro (paid but good, has trial), ProperTree (free, okayish)... Or you can edit them raw in text editor (not recommended). You should run ProperTree at least once — it can automatically populate config with your kexts and SSDTs.
  • Drivers – Lilu, VirtualSMC, WhateverGreen, AppleALC, USBInjectAll, FakePCIID with BCM57XX_BCM57765 satellite. Optionally: kexts for your WiFi and Bluetooth hardware. Always get the most recent builds.
  • Other tools — several scripts by corpnewt, ssdtPRGen script for CPU power management, optionally macserial and gfxutil from acidanthera.
Important notes in advance

DO NOT use any kind of visual configurator or automatic checker for editing config.plist. I cannot stress this enough. I once spent a day trying to debug non-booting installer because of config broken by the configurator. Always refer to OpenCore configuration manual and sample configs for your current OC version.

Plist files store hex data keys in base64 format. If you're using plist editor like PlistEdit Pro, it does the conversion automatically. If you're using text editor, you will have to convert hex to base64 yourself. Hackintool has a neat calculator for that.

Hardware overview
CPU
LGA1155 — Sandy Bridge/Ivy Bridge. Power management enabled through ssdtPRGen script
I have i5-3470 Ivy Bridge. Sandy Bridge CPUs might take a bit more effort.

GPU
If in doubt, use WhateverGreen and generate required DeviceProperties with Hackintool.
HD 2000/2500 can be enabled only in headless mode (aka connectorless, aka dummy connectors), refer to WEG manual on that matter. In my case that was ig-platform-id 0x01620007. Also, in that case, you'll need dGPU — refer to supported hardware list.

Ethernet
BCM57781 — requires FakePCIID with BCM57XX_BCM57765 plugin. Also likely requires injection built-in = 0x01 in DeviceProperties.

USB
Requires port mapping. There are several instruction on how to do that, start here. Semiautomated utilities, like USBMap script or one included in Hackintool, are not recommended in this case, as they would miss two USB 3.0 ports connected through Etron EJ168 controller (on the back panel near PS/2). Check provided SSDT-UIAC. It also includes several USB ports from internal pins that I didn't actually test, but, hopefully, I didn't miss any.

Audio
Realtek ALC898 — supported by AppleALC, layout 1.
There's HDMI output in iGPU, but as I have HD 2500 in headless mode, there's no way for me to enable it. If you have and use HDMI output on HD 3000/4000, you might have to do that, else it might crash the system when hotplugging display.

SATA
Remember to disable Aggressive Link Power Management in UEFI, or you'll get I/O errors at boot in AppleAHCIPort.
Note that 2 out of 8 SATA ports are connected to ASMedia controller (two rightmost, named SATA3_A1 and SATA3_A2), and SATA3_A2 doubles as eSATA port on the back panel. Using them might cause system to treat all drives as external, and external icons patch would then force drive eSATA to behave as internal. Best not to plug anything in them without a specific reason.

WiFi/Bluetooth
Required for Siri and other macOS features. Please refer to supported hardware lists.
Fortunately, this motherboard has half-mPCIE slot, allowing popular laptop WiFi choices.

I use ASUS BT-400 USB dongle (via BrcmPatchRAM3) and TP-Link Archer T6E (BCM4360, via AirportBrcmFixup with brcmfx-driver = 0x02 in DeviceProperties).

General
UEFI settings
  • Disable CSM — this means enabling UEFI-only mode.
  • Either disable Vt-d in UEFI, or in config (DisableIOMapper quirk)
  • Set SATA to AHCI and disable Aggressive Link Power Management.
  • Disable IR, serial and floppy drive.
  • USB — enable all options, including legacy 2.0 and 3.0.
MSR 0xE2 lock requires patching firmware — grab UEFIPatch. Latest UEFI is 2.90A from 2018.

DSDT
Since we'll be using hotpatching, we don't need to edit DSDT, but for sake of completeness here's how to fix errors that block it from recompiling.
  • Min/Max/Len/Gran... — set length to 1
  • Invalid object type FDE... — Replace with Buffer. Note that FDC is floppy drive device, and it'll be disabled, anyway.
  • Non-hex letters must be uppercase — do as it says, convert to uppercase.
SSDTs
Drop tables: SSDT-1 (Cpu0Ist), SSDT-2 (CpuPm).

Custom SSDTs:
  • SSDT-EC — fake EC device. Some guides recommend also to disable existing H_EC device, but original H_EC._STA already always returns Zero. (Note: recheck if this is the case with your DSDT)
  • SSDT-PR — replacement CpuPm SSDT generated by ssdtPRGen script. Already enables PluginType (or whatever magic is happening here), so no need for separate SSDT-PLUG. I will not provide mine, as it is built for a specific CPU.
  • SSDT-XOSI — _OSI modification. Not necessary for desktops, but won't hurt.
  • SSDT-SBUS-MCHC — adds some missing devices. Might not be necessary, but won't hurt.
  • SSDT-HPET — IRQ conflict fix, generated by SSDTTime script. Comes with several patches.
  • SSDT-UIAC — USB map for UsbInjectAll. It should list all available USB ports, but I didn't actually test some 2.0 ports from internal pin headers.
  • SSDT-mXHCI — cosmetic, renames Etron USB controller ports. Ensure that these ports are connected to RP07 in IOReg before enabling it. If not, edit SSDT. Port names here are arbitrary, but they should have same names in SSDT-UIAC.
For details see comments in SSDTs.

EFI drivers and tools
You need:
  • OpenRuntime — obviously;
  • ApfsDriverLoader — to be removed in 0.5.8, apparently;
  • HFS driver — either VBoxHFS of HFSPlus, for the installer;
  • VerifyMsrE2 — to test if UEFI patch worked, can be removed later;
  • OpenShell — this motherboard doesn't have built-in NVRAM boot records editor, and you might have to add or remove them manually.
Kexts
  • Lilu, obviously.
  • VirtualSMC, obviously. Optionally SMCProcessor and SMCSuperIO for sensors.
  • AppleALC — as said above, works with layout 1.
  • FakePCIID
  • FakePCIID_BCM57XX_as_BCM57765 — for ethernet. Requires injecting built-in=1 in properties.
  • UsbInjectAll
  • Kexts for other hardware as needed.
OpenCore config
Again, it is strongly advised to use specialized plist editor or at least programming-class text editor (see required software above). Anything else will break your config file, which will result in non-booting system.

Also, for populating SSDT, kext and EFI driver lists you should use OC Snapshot function in ProperTree.
  • ACPI
    • Add
      • All SSDTs listed above (and anything else you might need)
    • Block — drop tables: SSDT-1 (Cpu0Ist), SSDT-2 (CpuPm).
    • Patch — most of there are not necessary, but I like my ACPI clean. They should be safe to use.
      • _OSI → XOSI — complementary patch for SSDT-XOSI.
      • HPET _CRS — these three patches...
      • RTC IRQ
      • TIMR IRQ — ...are created by SSDTTime based on your DSDT. Recreate them yourself.
      • COPR → MATH — optional cosmetic rename.
      • Mutex fix — fixes warning in DSDT.
      • CreateQWordField — fixes warning in DSDT.
      • SIO1 ResourceTemplate — fixes an error in DSDT.
      • FDC error — fixes an error in DSDT.
      • PNP0C14 error — fixes an error in DSDT.
    • Quirks — none needed
  • Booter
    • MmioWhitelist — empty
    • Quirks
      • Enable AvoidRuntimeDefrag, EnableWriteUnprotector and SetupVirtualMap.
      • You might or might not need EnableSafeModeSlide, I didn't test safe mode.
  • DeviceProperties
    • Add — recheck that these PCI paths are correct in your case — check them in Hackintool.
      • PciRoot(0x0)/Pci(0x14,0x0) — Intel USB controller
        • Providing device-id and device_type, equivalent to Clover InjectUSB.
      • PciRoot(0x0)/Pci(0x1C,0x5)/Pci(0x0,0x0) — BCM57781 Ethernet
        • Important here is built-in = 0x01. Other properties are cosmetic.
        • You might have to do a similar injection for WiFi card.
      • PciRoot(0x0)/Pci(0x1b,0x0) — ALC898 Audio
        • alc-layout-id = 0x01000000 — you can also use alcid=1 in bootargs.
      • PciRoot(0x0)/Pci(0x1f,0x0) — LPC Controller
        • compatible=pci8086,1e44 — this is LPC fix.
      • PciRoot(0x0)/Pci(0x2,0x0) — iGPU
        • You need ig-platform-id at the minimum. For connectorless iGPU that is all, for an actual video you also probably have to patch framebuffer. Refer to WEG manual.
    • Block — empty
  • Kernel
    • Add
      • Refer to kext list above. Use ProperTree to correctly populate this list with OC Snapshot command.
      • Remember, load order is important here. Lilu → VirtualSMC → SMC plugins → everything else; FakePCIID → its plugins; etc.
    • Block — empty
    • Emulate — CPU spoofing. Don't touch unless you understand what it is for.
    • Patch — empty
    • Quirks
      • Enable DisableIOMapper, then you can enable Vt-d in UEFI for Windows.
      • ThirdPartyDrives if you have SSDs.
      • ExternalDiskIcons — SATA controller is a bit buggy and may or may not require it. Might cause problems with eSATA port if you're using it.
      • Enable PanicNoKextDump when debugging.
  • Misc
    • BlessOverride — see the section on dual booting Windows below.
    • Boot — I won't go into OpenCore boot configuration details.
    • Debug — ditto. Refer to OC manual on settings for debugging.
    • Entries — ditto. Normally you don't need custom entries for macOS or Windows.
    • Security
      • Vault — Optional. Don't ever think of changing it until you've finished setup and have at least TimeMachine backup.
      • AllowNvramReset — don't. Unless you really need it, don't. This motherboard's UEFI is somewhat buggy, and resetting NVRAM might glitch it into not starting at all. If this happens, try clearing CMOS and unplugging everything but CPU, one memory stick and keyboard.
      • ScanPolicy — set to 0. Setting it to something meaningful would slightly decrease startup time, but good luck guessing correct setting from OC manual.
    • Tools — should be populated by ProperTree.
  • NVRAM
    • Add — read OC manual on how to add boot args. You need only -v keepsyms=1 debug=0x100 for debugging, and maybe some Lilu plugins options.
    • Block — ditto
    • WriteFlash — Yes.
  • PlatformInfo
    • Refer to OC manual and this guide. Best SMBIOS for this MB/CPU is, likely, iMac13,1 or iMac13,2 — latter if you have insupported iGPU.
  • UEFI
    • Refer to OC manual. Normally you don't need to touch anything in here asde from quirks. At the moment of writing, OpenCanopy was not recommended for end users, and I do not use picker at all.
    • Quirks
      • Enable all but UnblockFsConnect.
Other
Remaining issues
I have a strange delay of 15-20 seconds somewhere between OpenCore and OS boot process. It also happens with Windows. Currently I've no idea what might cause it. Here's what it looks like in kernel log:
2020-04-18 14:08:18.006437+0300 localhost kernel[0]: pmap_startup() delaying init/free of page nums > 0x200000
2020-04-18 14:08:37.063927+0300 localhost kernel[0]: pmap_startup() init/release time: 19057481 microsec
Dualbooting Windows
If you have existing Windows installation, it might become inactivated, because it would think you moved it to different hardware.
You can install Windows as usual (booting installation USB through OpenCore might be unnecessary).
If installing Windows (and its bootloader) on the same drive, you might have to disable HideSelf in Misc→Boot.

One major pain is that this motherboard really loves Windows. At each boot Windows rechecks its boot record (or something) and that for some reason sets it first in boot order. Likely caused by old UEFI, possibly intentionally. The only way to deal with this is to rename EFI\Microsoft\Boot\bootmgfw.efi, for example, into bootmgfw-orig.efi. You will have to do this again after any major Windows updates.

Remember to delete old bootmgfw-orig.efi and rename new into it. Windows checks if bootloader version (or security keys baked in it, or whatever) is correct, and old file won't work with new system.

Finally, OpenCore does not look for anything named bootmgfw-orig.efi. To enable it, add full path to it in Misc→BlessOverride — for example, \EFI\Microsoft\Boot\bootmgfw-orig.efi.
 

Attachments

  • asrock-z77-ex6-release-0.5.7.zip
    8.1 KB · Views: 550
Last edited:
Updates and errata

This guide can also be found at https://wiki.moonlightwell.tk/en/hackintosh/asrock-z77-extreme6

OC 0.5.8 update: minor changes, follow Differences.pdf. Of note: removal of ApfsDriverLoader. Also, we now have Bootstrap.efi, which hopefully should preserve boot record with dualbooting Windows — this requires further testing.
 
Last edited:
After Long Time i have updated to 0.6.2. still getting same freezing issues.


only on this settings.

if on or off both or any 1.

If Setting will like this.

<key>AppleCpuPmCfgLock</key>
<false/>
<key>AppleXcpmCfgLock</key>
<true/>


Shows like this. image.png.04a087e5c278d8edf30bf9116330ff8b.png





If i change to


<key>AppleCpuPmCfgLock</key>
<true/>
<key>AppleXcpmCfgLock</key>
<false/>
freeze some other command that mention in txt.

And i have share my EFI folder.
Please guide me to how to fix.
 

Attachments

  • EFI.zip
    4.7 MB · Views: 227
  • opencore-2020-10-26-185739.txt
    256 KB · Views: 138
After Long Time i have updated to 0.6.2. still getting same freezing issues.


only on this settings.

if on or off both or any 1.

If Setting will like this.

<key>AppleCpuPmCfgLock</key>
<false/>
<key>AppleXcpmCfgLock</key>
<true/>


Shows like this. image.png.04a087e5c278d8edf30bf9116330ff8b.png





If i change to


<key>AppleCpuPmCfgLock</key>
<true/>
<key>AppleXcpmCfgLock</key>
<false/>
freeze some other command that mention in txt.

And i have share my EFI folder.
Please guide me to how to fix.
First, do note that (it seems) you have a different motherboard from a different vendor. My guide might not help you at all.

Second, did you disable MSR 0xE2 lock? If yes (either switching it in UEFI, or patching it outright), you shouldn't need AppleCpuPmCfgLock and AppleXcpmCfgLock. If no, did you try enabling them both?

Second, I don't know about DAGPM and IntelCPUMonitor kexts. IntelCPUMonitor seems to be related to FakeSMC, amd might be incompatible with VirtualSMC. dAGPM is for advanced power management. That crash on screenshot seems to be coming from AMDRadeonSomething, so it might be somehow misconfigured dGPU. Try disabling those two kexts.

Aside from that...
Booter→Quirks→ProvideCustomSlide, RebuildAppleMemoryMap — do you need them? Rule of thumb — enable as few quirks as possible.
Also I'd recommend clearing config from sample entries, even disabled they clutter it up.
 
First, do note that (it seems) you have a different motherboard from a different vendor. My guide might not help you at all.

Second, did you disable MSR 0xE2 lock? If yes (either switching it in UEFI, or patching it outright), you shouldn't need AppleCpuPmCfgLock and AppleXcpmCfgLock. If no, did you try enabling them both?

Second, I don't know about DAGPM and IntelCPUMonitor kexts. IntelCPUMonitor seems to be related to FakeSMC, amd might be incompatible with VirtualSMC. dAGPM is for advanced power management. That crash on screenshot seems to be coming from AMDRadeonSomething, so it might be somehow misconfigured dGPU. Try disabling those two kexts.

Aside from that...
Booter→Quirks→ProvideCustomSlide, RebuildAppleMemoryMap — do you need them? Rule of thumb — enable as few quirks as possible.
Also I'd recommend clearing config from sample entries, even disabled they clutter it up.
Thank You for reply.

Yes I am using Mother Board is Biostar TZ77XE4, i7-3770K, Graphics card RX 580, on that i am using since from OSX maverick now till OSX Catalina i am using Clover Boot loader 5122 worked without any issues thats last 1. after new update 5125 that also same issues freeze on startup that's also based on opencore i think. now future is Opencore so i planed to move on just trying if it OK then stay with it.

MSR 0xE2 I have checked it show like this.
1603881328073.png

It looks like locked. there is any way to unlock safe method.

Yes i have enable both AppleCpuPmCfgLock and AppleXcpmCfgLock it dirctly restart. then i checked 1 of them also same issue. freeze on kernel panic.

kext i will check.

Booter→Quirks→ProvideCustomSlide, RebuildAppleMemoryMap after enable that booted after menu screen for me and freezes here.

1603871298098.png

otherwise it will freeze on starting after menu
Ok i will check and let you know.
 
Last edited:
Hello,

Thank you for the guide. I have a similar motherboard z77-Extreme4. Did you ever upgrade to Big Sur and did that break your ethernet port? After I upgraded from Catalina, ethernet port doesn't work anymore.
 
Hello,

Thank you for the guide. I have a similar motherboard z77-Extreme4. Did you ever upgrade to Big Sur and did that break your ethernet port? After I upgraded from Catalina, ethernet port doesn't work anymore.
Nope, never got to (and never will). Thanks for the warning, probably FakePCIID got broken in 11. I've seen some direct patches in OC, but no idea if they work.
 
  • Like
Reactions: dbk
Status
Not open for further replies.
Back
Top