This guide explains how to create all necessary and additional SSDTs that are required to get UX32VD Hackintosh working with OpenCore.
Table of Contents
Find necessary SSDT-patches for Ivy Brigde Laptops
on What SSDTs do each platform need?
Some SSDTs are available in a pre-compiled version, others need to be created with tools or by hand.
Read Fixing Embedded Controller (SSDT-EC/USBX) and choose between prebuilt version and SSDTTime generation. This guide uses SSDTTime from a parallel windows install, following this guide: SSDTs: The easy way to create:
- SSDT-EC.aml
To enable display backlight, read Fixing Backlight (SSDT-PNLF) and choose between prebuilt version and manual creation (this guide uses the manual approach): Download SSDT-PNLF.dsl change \_SB.PCI0.GFX0
to \_SB.PCI0.IGPU
and compile with MaciASL (Stable Compiler) to:
- SSDT-PNLF.aml
In order to apply hot-patches know from clover (FixRTC, FixHPET, etc.) read Fixing IRQ Conflicts (SSDT-HPET + OC_Patches.plist). This step requires manual creation with SSDTTime (apply patches from config.plist
to OpenCore's config.plist
). The method generates:
- SSDT-HPET.aml
- ACPI-renames
To fix IMEI device read Fixing IMEI (SSDT-IMEI) and choose between prebuilt version and manual creation (this guide uses the manual approach): Download SSDT-IMEI.dsl and compile with MaciASL (Legacy Compiler) to:
- SSDT-IMEI.aml
The internal nVidia GPU needs to be disabled in order for graphics to work correctly. Read Disabling laptop dGPUs (SSDT-dGPU-Off/NoHybGfx) and choose between prebuilt, SSDTTime and manual solutions (this guide follows the manual Optimus Method): Download SSDT-dGPU-Off.dsl, use \_SB.PCI0.PEG0.PEGP
for nVidia GPU and compile with MaciASL (Legacy Compiler) to:
- SSDT-dGPU-Off.aml
To fix the AppleSMBus support in macOS read Fixing SMBus support (SSDT-SBUS-MCHC) and follow the manual guide: Download SSDT-SBUS-MCHC.dsl, use \_SB.PCI0.SBUS
as SMBUS device and compile with MaciASL (Stable Compiler) to:
- SSDT-SBUS-MCHC.aml
Battery Patching is a very advanced process and requires static DSDT patching as a first step. In a second step hot-patches can be created by extracting differences from an unpatched and a patched DSDT using a diff-tool following RehabMan's Battery Status Hotpatch guide.
-
Static DSDT-patch (use Legacy Compiler)
- Extract
DSDT.aml
(Getting a copy of your DSDT) - Decompile
DSDT.aml
with MaciASL and save asDSDT.dsl
- Apply battery-patch (
battery_ASUS-N55SL.txt
) onDSDT.dsl
- Save as
DSDT-BAT.dsl
and compiled version asDSDT-BAT.aml
- Extract
-
Verify the patch works
- Add
DSDT-BAT.aml
toEFI/OC/ACPI
andconfig.plist
- Boot and check menu bar and system settings for battery entries
- Add
-
Create SSDT hot-patch
- Show Diff between
DSDT.dsl
andDSDT-BAT.dsl
(e.g. Kaleidoscope) - Generate empty file
SSDT-BATT.dsl
with MaciASL - Follow RehabMan’s Battery-Patching guide
- Extract scopes, regions and methods from file differences
- Create ACPI-renames for every patched function
- Use Hex Fiend to verify uniqueness of ACPI-renames
- Save file as
SSDT-BATT.aml
in\EFI\OC\ACPI
andconfig.plist
- Add ACPI-renames in OCC -> ACPI -> Patch
- Show Diff between
- SSDT-BATT.aml
- ACPI-renames
In order to fix instant wake on sleep, read GPRW/UPRW/LANC Instant Wake Patch. After checking the DSDT for occurrences, the GPRW method is applicable: Download prebuild SSDT-GPRW.aml and apply GPRW-Patch.plist to config.plist
:
- SSDT-GPRW.aml
- ACPI-rename
For correct CPU Power-Management (turbo mode and speed stepping) read Fixing Power Management (SSDT-PLUG). As MacBookAir5,2
is the closest SMBIOS to UX32VD (link), it is used to generate SSDT for power-management. As SSDT-PLUG
is only compatible with Intel's Haswell and newer CPUs (link), Ivy Bridge needs to follow the ssdtPRgen method.
- OpenCore Configurator Paths
- Drop ACPI:
ACPI
->Delete
- SMBIOS:
PlatformInfo
->SMBIOS
->Button Up/Down
- Boot-Args:
NVRAM
->UUID
->7C4...F82
->boot-args
- Drop ACPI:
-
Select SMBIOS
MacBookAir5,2
(CPU: Ivy Bridge i5 3427U)- Set
1796
asProcessorType
(CPU: Ivy Bridge i7 3667U) - Add
-no_compat_check
boot-flag - Drop
CpuPm
andCpu0Ist
tables - Reboot with new SMBIOS
- Set
-
Use ssdtPRGen.sh from Tools folder to generate
SSDTs
- SSDT-PM.aml
Getting FN-Keys and Keyboard-Backlight to work with OpenCore was a bit tricky. Finally with help of hieplpvip's SSDT-ATK-BDW.dsl, SSDT-RALS.dsl and AsusSMC Patches it was possible to create:
- SSDT-ATK.aml
- AsusSMCDeamon
In order to find out which FN-keys need to be patched, the following key-table was created:
Key | Symbol | Current | Wanted | Action |
---|---|---|---|---|
F1 | Sleep | sleep -> wake -> off | sleep | patch |
F2 | WiFi | nothing | wifi on/off | patch |
F3 | Key-Dim-Down | key light down | key light down | no patch |
F4 | Key-Dim-Up | key light up | key light up | no patch |
F5 | Brightness-Down | nothing | display light down | patch |
F6 | Brightness-Up | nothing | display light up | patch |
F7 | Display on/off | display instant off | display dim off | patch |
F8 | External Display | print (cmd + p) | mission control | patch |
F9 | Trackpad on/off | trackpad on/off | trackpad on/off | no patch |
F10 | Volume on/off | volume on/off | volume on/off | no patch |
F11 | Volume down | volume down | volume down | no patch |
F12 | Volume up | volume up | volume up | no patch |
Pause | Pause | display light up | nothing | patch |
Druck | Druck | nothing | print (cmd + p) | patch |
A | ALS-Sensor on/off | nothing | als-sensor on/off | patch |
C | Screen | previous track | previous track | no patch |
V | Camera | next track | next track | no patch |
Space | Speed-Mode | play/pause | play/pause | no patch |
Arrows | Left/Up/Down/Right | left/up/down/right | left/up/down/right | no patch |
Regarding the table, the Keys F1-F2
, F5-F8
and A
were patched. As finding the correct key codes for Pause (F15)
and Druck (F13)
was not possible using RehabMan/OS-X-ACPI-Debug or VoodooPS2/Debug, their key-function is suppressed with Karabiner.
The complex Karabiner-modification Fn + Backspace to Forward Delete doesn't had the wanted effect, but the Entf
-key next to the power-button can be used for this purpose.