Warning
I am not responsible for any damages you may cause
This repository's main goal is to document my hackintosh journey, in case something happened to my hackintosh stupid. It is NOT meant to provide an out-of-the-box experience on doing hackintosh! If you're new to Hackintosh please build your own EFI by following Dortania guide instead!
If you insist on using my EFI, use it with your own risk, please note that I will NOT provide any support
- CPU: Intel Core i5-6300U
- GPU: Intel HD 520 (Spoofed as HD 620)
- RAM: 8GB
- Storage: 256GB SSD SATA (SSDSC2KF256H6L)
- Screen Resolution: 1920x1080
- Audio Codec: Realtek ALC3245/ALC293
- LAN: Intel i219
- WLAN/Bluetooth: Intel(R) Dual Band Wireless-AC 8260
Menu | Setting | Note | ||
---|---|---|---|---|
Config | USB | UEFI BIOS Support | Enable |
|
Always On USB | Enable |
|||
- Charge in Battery Mode | Disable |
|||
Power | Intel SpeedStep Technology | Enable |
||
CPU Power Management | Enable |
|||
CPU | Intel Hyper-Threading Technology | Enable |
||
Security | Security Chip | Disable |
||
Memory Protection | Execution Prevention | Enable |
||
Virtualization | Intel Virtualization Technology | Enable |
||
Intel VT-d Feature | Enable |
|||
I/O Port Access | Memory Card Slot | Disable |
||
Anti-Theft | Computrace | Disable |
||
Secure Boot | Disable |
Can be enabled after installation complete if you sign OpenCore | ||
Intel SGX | Disable |
|||
Device Guard | Disable |
|||
Startup | UEFI/Legacy Boot | UEFI Only |
||
CSM Support | No |
|||
Boot Mode | Quick |
- Optional: Before doing anything, be sure to generate your own USB mapping using USBToolBox and store the Kext somewhere, just in case your laptop mapping different from mine
- Follow Dortania guide to create macOS installer
- On "Setting up the EFI" part, drop the
EFI/
from this repo to your installer's EFI partition - Rename
Config.public.plist
toConfig.plist
- Optional: follow Dortania guide's PlatformInfo section (Mainly for
MLB
,SystemSerialNumber
, andSystemUUID
, not really needed just yet) - Optiona: drop your
UTBMap.kext
intoEFI/OC/Kexts
directory
- Optional: follow Dortania guide's PlatformInfo section (Mainly for
- Boot to USB and Install macOS
- Now you can try
Post-Install
section's config, all of them are optional but could be useful (especially if you want to Apple Services such as iMessage)
Useful configuration you can do after you successfully installed macOS
Config to allow you to use Apple Services (such as iMessage)
Note
If you (still) can't login to iMessage you may need to contact Apple Support to unblacklist your AppleID (You can try opening the Message app from terminal to check the log to see if you're getting a Customer Code error, which is an indication that your AppleID got blacklisted. See more info here)
- Download (or clone) GenSMBIOS and run it in terminal
- Type
3
to generate SMBIOS, then press Enter - Type
MacBookPro14,1 5
, then press Enter - Open
EFI/Config.plist
(I highly recommend using ProperTree) and navigate toPlatformInfo -> Generic
- Add one of the script's result to
MLB
,SystemSerialNumber
, andSystemUUID
- Replace
ROM
with your MAC Address (System Preferences -> Network -> Ethernet -> Advanced -> Hardware -> MAC Address
, then remove all the colons:
). Or you can also try using a real Apple MAC Address - Save and Reboot
- Check the Serial Number validity. Repeat step 5 and choose different result (or generate new set of SMBIOS) until you find invalid Serial Number
This is the stupid simple way to fix sleep related issues, simply disable S3/S4:
sudo pmset -a hibernatemode 0
sudo pmset -a proximitywake 0
sudo pmset -a standbydelayhigh 0
sudo pmset -a ttyskeepawake 0
sudo pmset -a gpuswitch 0
sudo pmset -a halfdim 0
sudo pmset -a womp 0
sudo pmset -a acwake 0
sudo pmset -a networkoversleep 0
sudo pmset -a tcpkeepalive 0
I personally don't do this since it's no fun but also doesn't actually fix the issue, just disabling some problematic features
- Get your Bluetooth Controller's MAC Address,
- Method 1:
Run this command in a terminal and copy the result:system_profiler SPBluetoothDataType | grep "Address:" | head -1 | sed "s/ *Address: \(.*\)/\1/g"
- Method 2:
- Click the Apple logo at the top-left corner then click About This Mac
- Go to System Report,
- On Monterey or older, just click System Report
- On Ventura or newer, click More Info, scroll all the way down then click System Report
- Navigate to Bluetooth menu (Hardware > Bluetooth)
- Under Bluetooth Controller copy the MAC Address
- Method 1:
- Add this line to the
/etc/zshenv
(or/etc/bashrc
) file:export BT_DEVICE_ADDRESS="PASTE:YOUR:MAC:ADDRESS:HERE"
- Reboot to apply the changes
- Get into S3/S4 sleep then try connecting to a device via Bluetooth
Not sure what happened here, but ResetNVRAM seems to fix this issue, if it seems like your hackintosh is stuck on Apple logo with progressbar, just wait until it reboot itself.
- Go to either of these repo:
- Click "Use this template" and wait for your repo to be ready
- Make sure Actions is enabled on the repo
- Edit
.github/workflows/main.yml
file, find "Delete unused firmware" - Replace
ibt-11-5
oriwm-8000C
with your card - To retrieve the Kext:
- Go to
Releases
page (should be on the sidebar, or just append/releases/
on your url bar) - If you did it correctly, the kext should appear there
- Go to
- Empty your Trash Bin
- Profit-
If that didn't work:
Caution
This process is essentially formatting your EFI partition, please make sure to backup your EFI partition and have a working bootable USB ready in case of emergency!
- Backup your EFI
- Run
diskutil list
, then grab your EFI partition's IDENTIFIER (e.g.disk0s1
) - Run
newfs_msdos -v EFI -F 32 /dev/<IDENTIFIER>
, e.g. (newfs_msdos -v EFI -F 32 /dev/disk0s1
)- This command requires
sudo
!
- This command requires
- Copy your backed up EFI into the newly formatted EFI partition
- Now you can restart and pray that you didn't mess up :^)
Not entirely sure why EFI partition is filling up like that but I recommend:
- To delete a file (for example when you're updating a kext) before replacing it
- Empty your Trash Bin before ejecting the EFI partition (or restarting your macOS)
This EFI has VoltageShiftSecure installed, you can use this to undervolt your device, you may need to grab their binary to configure it.
My current setup:
- CPU voltage offset: -80mv
- GPU voltage offset: -80mv
- CPU Cache voltage offset: -60mv
There are cases where BIOS refuses to detect HDD as bootable drive, or maybe you want to dual-boot in the future. The best way to fix it is by adding EFI to UEFI Boot Entry manually:
- Create a Linux live USB and boot directly to it (make sure it has
efibootmgr
, I recommend Linux Mint) - Use
efibootmgr --create --disk /dev/<your bootable drive> --part <ESP Number> --loader \\EFI\\OC\\OpenCore.efi --label "OpenCore"
- Now when you reboot you'll see OpenCore entry on your boot options
Caution
This process is very sensitive, it's the not recommended way.
- Boot to OpenCore
- Press space before it auto boot you to macOS
- Select UEFI Shell
- Run
map
command and find where your EFI is located (in my case it'sFS0
) - Run
FS0:\EFI\OC\Tools\OpenControl.efi disable
- Run
bcfg boot add 0 FS0:\EFI\OC\OpenCore.efi "OpenCore"
- Finally, run
reset
to reboot your system
Caution
I don't recommend using this method if you're using USB to boot to OpenCore
- Open
EFI/OC/Config.plist
using your plist editor of choice (I recommend ProperTree) - Go to
Misc
>Boot
>LauncherOption
, set it fromDisabled
toFull
I haven't done it myself, but you can skip inserting your own signature if you use Shim bootloader and chainload OpenCore from it, Shim itself is (usually) signed using Microsoft cert, but of course Microsoft wouldn't want people to use it to bypass Secure Boot, so Shim has a verification logic that check if the MOK (iirc it can be either a hash or a signature) inside an image (e.g. EFI) is in the MOK (Machine Owner Key) list. It'll also allow you to enroll the MOK pretty easily, no need to use KeyTool and stuff, it'll just prompt you.
Please read #manual for more information. If you're doing this in macOS, make sure to have Multipass installed.
I've made automation script to (semi) automate signing:
signing-bootstrap
: Only run this once, this script will setup the (almost) all necessery stuff for signing in this directory for you. Run this script first (if you haven't) before running the other scripts.sign
: Find and sign.efi
file(s). (Signed.efi
files are stored inSigned/
directory)signed-opencore-downloader
: Download and signed OpenCorePkg (useful when updating OpenCore)signing-common
: Not meant to be ran, meant to be imported to other script
If you for some reason need to enable Secure Boot, you can follow the guide made by perez987. The guide is a bit confusing to navigate through, but the key points are:
- OpenCore and UEFI Secure Boot with WSL
If you're using Linux, just skip the WSL part, the rest is pretty much just Linux. The gist is you need a way to access to a Linux system, use VM, Live USB, Multipass, or WSL. - Insert signature to the UEFI firmware
How I do it:- Copy
KeyTool.efi
from/usr/share/efitools/efi/
to my EFI partition- Or use the one in
Signed/
directory if you usesigning-bootstrap
script
- Or use the one in
- Copy all
.auth
file to my EFI partition - Reboot my Hack to BIOS settings, go to Secure Boot, select "Reset to Setup Mode" to enter Setup Mode
- Boot to OpenCore, select
UEFI Shell
- Run
FS0:\KeyTool.efi
- Go to Edit Keys
- The Allowed Signature Database (db)
- Select Replace Key(s)
- Go to
EFI
- Select
db.auth
- The Key Exchange Keys Database (KEK)
- Select Replace Key(s)
- Go to
EFI
- Select
KEK.auth
- The Platform Key (PK)
- Select Replace Key(s)
- Go to
EFI
- Select
PK.auth
- Exit
- Run
reset
- Reboot to BIOS settings, greeted "Configuration Changed"
- Reboot to BIOS settings again, go to Secure Boot, enable it, reboot to OpenCore
- Profit-
- Copy
Note
Your experience may vary
- Working = Doesn't affecting workflow that much or straight up working out-of-the-box
- Partially Working = Working but sometimes require reboot to fix
- Not Working = Doesn't work at all or delibrately disabled by me
- Not Tested = Can't be tested at the moment
- CPU (Power Managament)
- GPU (Acceleration)
- Glitches and Flickers, can be fixed by adding
AAPL,GfxYTile
property. It still sometimes happened under certain circumstances such as:- Using HiDPI
- Connect to an external monitor (Maybe because my monitor's (native) resolution is under 1080, I don't have a 1080p monitor so I can't test it further)
- Using resolution higher or lower than the internal monitor native resolution
- KabyLake's color-banding issue, the only fixes related to this require spoofing GPU to SkyLake (My external monitor doesn't have this issue, so maybe it's hardware)
- Some says injecting fake EDID could fix this issue, but it doesn't work for me
- Glitches and Flickers, can be fixed by adding
- Restart + S3/S4 Sleep + Shutdown
- Audio + Combo Jack (using OpenALC)
- Brightness (and brightness control hotkeys)
- Trackpad + Trackpoint + Clickpad
- Wired Ethernet (using Mausi)
Note: If your connection keep disconnecting, you may need to connect your Ethernet cable before turning on your laptop atleast once. After that it should work perfectly fine even after unplugging and plugging the cable in again - Bluetooth (Try Bluetooth Workaround if you get "Volume Hash Mismatch" error after waking from sleep, if it doesn't work you can always reboot to fix it)
- USB Ports
- USB Tethering via HoRNDIS
- VGA (is DP internally, so it's natively supported)
- WiFi (using AirPortOpenBSD or AirportItlwm/itlwm)
- Can't connect to WiFi with hidden SSID
- Use AirPortOpenBSD
- Sometimes it doesn't want to connect, I recommend not using hidden SSID at all when you don't actuallly need it
- Use itlwm+HeliPort instead to fix this
- Use AirPortOpenBSD
- (AirPortOpenBSD) WiFi sometimes doesn't show up, this could be caused by WLAN channel overlaps
- Try changing your Access Point's WLAN Channel to something else to fix it
- (Only for AirPortOpenBSD - v2.3.0 or newer) You try turning on and off the wifi connection on macOS
- (Only for AirPortOpenBSD - v2.3.0 or newer) You can also try clicking "other" and manually connect to the WiFi
- If it says "network couldn't be found", try turning off and on again the WiFi (your device's wifi connect and/or your access point), then try again
- Can't connect to WiFi with hidden SSID
- _Qxx EC Query not firing after sleep, caused FN Hotkeys and some battery update functions to stop working, reboot is required to fix it. A common issue on E-Series and L-series ThinkPad
- After some testing, this seems to be a firmware issue
- Current workaround:
- Use Karabiner:
karabiner://karabiner/assets/complex_modifications/import?url=https://raw.githubusercontent.com/null2264/ThinkPad-L460-OpenCore/master/Include/karabiner.json
This config map Ctrl+F<1-12> into the function of FN+F<1-12>:- CTRL+F1 = FN+F1 -> Mute toggle
- CTRL+F2 = FN+F2 -> Volume down
- CTRL+F3 = FN+F3 -> Volume up
- CTRL+F4 = FN+F4 -> No alternative
- CTRL+F5 = FN+F5 -> Brightness down
- CTRL+F6 = FN+F6 -> Brightness up
- CTRL+F7 = FN+F7 -> No alternative
- CTRL+F8 = FN+F8 -> No alternative
- CTRL+F9 = FN+F9 -> No alternative
- CTRL+F10 = FN+F10 -> Open Alfred (FN use Spotlight)
- CTRL+F11 = FN+F11 -> Open Mission Control
- CTRL+F12 = FN+F12 -> Open Launchpad
- Use Karabiner:
- DRM
- iGPU-only DRM is completely broken, use browser with Widevine DRM instead
- Some iGPU-only Laptop users reported that
unfairgva=4
fixed it, you may test it on your device, but this workaround doesn't seems to be working on my Laptop
- SD Card Reader (Disabled on BIOS)
- If you need SD Card Reader you can try adding Sinetek-rtsx or RealtekCardReader to your EFI
- MiniDP
- Need MiniDP adapter since none of my devices use MiniDP
- ThinkPad X1C6:
- ThinkPad T460s:
- @a565109863 for AirPortOpenBSD
- @acidanthera for maintaining and developing a lot of amazing Kexts
- @benbender for SSDT-Sleep that I adapted to work with L460
- @corpnewt for gibMacOS and MountEFI
- @dortania for their amazing guide
- @jwise for HoRNDIS
- @perez987 for their secure boot guide
- @zhen-zen for YogaSMC
- @zxystd for itlwm and IntelBluetoothFirmware
- r/hackintosh community for helping me find solution to various issue I came across