- Hardware
- BIOS
- Display Connectors
- OpenCore
- config.plist
- ACPI
- Kexts
- Drivers
- Quick Tips
- Useful Apps
- Installing/Dualbooting Windows
- Case & Mobo: ASRock DeskMini H310
- CPU: Intel i7-8700 w/ Noctua NH-L9i
- RAM: Corsair Memory Kit 16GB DDR4 2400MHz SODIMM Memory (CMSX16GX4M2A2400C16)
- SSD: Samsung 860 EVO 500 GB
- WiFi & Bluetooth: BCM94360CS2 w/ M.2 adapter
- Display: BenQ GW2480 (DisplayPort, VESA)
-
v3.10: works out-of-box
-
Beyond v3.10: DSDT patch required
comment: Fix RTC _STA bug (fix asrock new bios failed to boot) Find: A00A9353 54415301 Replace: A00A910A FF0BFFFF
-
Settings
- Load UEFI Defaults
- Advanced
- Onboard HD Audio: Enabled
- USB Configuration - XHCI Hand-off: Enabled
- Super IO Configuraton - Serial Port: Disabled
- DisplayPort: best option, has signal since start of boot and should work out-of-box; if your display only has HDMI connectors, a DisplayPort to HDMI cable is recommended, note that the only confirmed-working model so far is DP111 by Ugreen (PS176 chipset).
- HDMI: can get working with extra hack for multi-screen setup; only receives signal after entring MacOS.
Version: 0.9.6
Mostly following the OpenCore Install Guide here.
-
Booter
-
Quirks
Fixing KASLR slide values (Reference)
- AvoidRuntimeDefrag: True
- DevirtualiseMmio: True
- EnableSafeModeSlide: True
- ProtectUefiServices: False
- ProvideCustomSlide: True
- RebuildAppleMemoryMap: True
-
-
DeviceProperties
-
Add
-
PciRoot(0x0)/Pci(0x1f,0x3)
- device-id: cKEAAA==
- layout-id: HAAAAA==
-
PciRoot(0x0)/Pci(0x2,0x0)
Enable HDMI output and resolve other iGPU issues.
- AAPL,ig-platform-id: BwCbPg==
- device-id: mz4AAA==
- enable-hdmi20: AQAAAA==
- framebuffer-con0-enable: AQAAAA==
- framebuffer-con0-pipe: EgAAAA==
- framebuffer-con1-busid: AgAAAA==
- framebuffer-con1-enable: AQAAAA==
- framebuffer-con1-pipe: EgAAAA==
- framebuffer-con1-type: AAgAAA==
- framebuffer-con2-enable: AQAAAA==
- framebuffer-con2-index: /////w==
- framebuffer-fbmem: AACQAA==
- framebuffer-patch-enable: AQAAAA==
- framebuffer-portcount: AgAAAA==
- framebuffer-unifiedmem: AAAAgA==
-
-
-
Kernel
-
Quirks
Already supports CFG Lock unlocking
- AppleCpuPmCfgLock: False
- AppleXcpmCfgLock: False
-
SSDT | Purpose |
---|---|
SSDT-PLUG.aml | To allow the kernel's XCPM (XNU's CPU Power Management) to take over our CPU's power management |
SSDT-EC-USBX.aml | 1) On desktops, the EC (or better known as the embedded controller) isn't compatible with AppleACPIEC driver, to get around this we disable this device when running macOS 2) AppleBusPowerController will look for a device named EC , so we will want to create a fake device for this kext to load onto. AppleBusPowerController also requires a USBX device to supply USB power properties for Skylake and newer, so we will bundle this device in with the EC fix |
SSDT-PMC.aml | NVRAM support |
SSDT-SBUS-MCHC.aml | Fix AppleSMBus support in macOS (Reference) |
All of the following kexts are available on this repo courtesy of Goldfish64. Each kext is auto-built whenever a new commit is made. (Reference)
Kext | Version | Purpose |
---|---|---|
AppleALC.kext | 1.8.7 | Driver for Realtek ALC233 (Mic & HDMI audio breaks in 1.5.9 and 1.6.0) |
IntelMausi.kext | 1.0.7 | Driver for Intel® Gigabit I219V |
Lilu.kext | 1.6.7 | Fundation kext for many other kexts |
WhateverGreen.kext | 1.6.6 | A composite kext that addresses graphics related issues, requires Lilu.kext |
VirtualSMC.kext | 1.3.2 | SMC emulator, vital to booting hackintosh |
SMCProcessor.kext | 1.3.2 | Companion kext for VirtualSMC.kext |
SMCSuperIO.kext | 1.3.2 | Companion kext for VirtualSMC.kext |
USBPorts.kext | - | Customized kext to work around USB port limit |
NVMeFix.kext | 1.1.1 | Improve compatibility and power management of 3rd party M2 SSDs |
XHCI-unsupported.kext | 0.9.2 | Needed for non-native USB controllers |
Driver | Purpose |
---|---|
HfsPlus.efi | Needed for seeing HFS volumes (ie. macOS Installers and Recovery partitions/images) |
OpenRuntime.efi | Replacement for AptioMemoryFix.efi, used as an extension for OpenCore to help with patching boot.efi for NVRAM fixes and better memory management |
OpenCanopy.efi | For GUI and boot-chime |
-
To make OpenCore remember last boot entry and set it as default, use CTRL + ENTER to select the boot entry.
-
There are two ways to check the running OpenCore version:
-
Use the plain text theme and find the version at the bottom of the boot screen
-
Execute the following in a terminal (note that there was a bug in OpenCore prior to 0.6.7 that leads to stale version name written to the nvram, reset nvram to fix):
% nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version REL-069-2021-05-03
-
App | Home Page | Usage |
---|---|---|
Stats | https://github.com/exelban/stats | Open source version of iStat Menus |
-
Recommended to create the Windows bootable USB installer on a Windows machine (either with the official Media Creation Tool or Rufus if you already have the ISO image). Making it on macOS with the rsync + wimlib approach wasn't successful in my several attempts.
-
AFAIK It's not possible to install Windows on a machine that has multiple EFI partitions, which happens if you are installing Windows on a separate disk. To work around this, I used DISM to apply the Windows image manually with the steps elaborated below:
-
Boot into the Windows installer and next all the way until you reach the "Where do you want to install Windows" page. Create the partition to host the Windows OS with your preferred size. In my experience, the installer will create 3 partitions automatically: EFI partition (100MB), MSR partition (16MB), and the Primary partition. Remember to format the Primary partition. Now, hit the cross button top right which will navigate you back to the installer home screen.
-
Press SHIFT + F10 to launch the Command Prompt.
-
Enter
diskpart
followed bylist vol
. From the list, locate the installer USB volume as well as the Windows volume that has just been created, note down their corresponding letter in theLtr
column. For illustration purpose, we'll useC
as the Windows volume, andD
as the installer USB volume. Enterexit
to get back to where we started. -
Enter the following to locate the index of the Windows edition you'd like to install (change
install.wim
toinstall.esd
if the installer USB was created with the official Media Creation Tool):dism /Get-WimInfo /WimFile:D:\Sources\install.wim
We'll assume the edition is at
Index: 1
here as an example. -
Use the following command to apply the image and install Windows onto the target partition (again, change
install.wim
toinstall.esd
if the installer USB was created with the official Media Creation Tool):dism /Apply-Image /ImageFile:D:\Sources\install.wim /index:1 /ApplyDir:C:\
-
Now we need to install the Windows bootloader. Go back to
diskpart
thenlist vol
, locate the EFI partition that the Windows installer created for us, then enterselect volume X
whereX
is the volume number. Once the correct volume is selected, enterassign letter=Z
to make sure we can reference the volume by letterZ
later. Enterexit
to get back out. Lastly, enter the following to create the bootloader in the EFI partition so OpenCore can detect it later:bcdboot C:\Windows /s Z: /f UEFI
-
You can now exit the installer, reboot, and launch Windows via OpenCore. If the Windows boot option is not picked up, ensure you have set
Misc - Security - ScanPolicy
to0
inconfig.plist
. -
Necessary drivers i.e. WiFi, Bluetooth, Audio, Chipset, etc are included in the
WIN10_Drivers
folder.
-