Building a hackintosh on my laptop, sharing a config that works out of the box.
- π§ System Configuration
- β What's Working
β οΈ What's Not Yet Working- β What Will Never Work
- π‘ About Bluetooth & WiFi
- π§ͺ Methodology
- π Consequences
- π§© Kexts Side
- π οΈ OCLP Patching
- π¨π»βπ§ bluetoothExternalDongleFailed Issue
- π Credits
Specifications | Details | PCI path / Hardware ID |
---|---|---|
Laptop Model | Acer Nitro 5 AN515-55-51QY | - |
Processor | Intel i5-10300H (Comet Lake) | ACPI\GenuineIntel_-_Intel64_Family_6_Model_165 |
Graphics | Intel UHD 630 & Nvidia RTX 3060 | iGPU - Intel UHD 630 :PCI\VEN_8086&DEV_9BC4&SUBSYS_143D1025&REV_05 dGPU - Nvidia RTX 3060 : PCI\VEN_10DE&DEV_2520&SUBSYS_143E1025&REV_A1 |
RAM | 16GB - 2x (Micron 8ATF1G64HZ-3G2J1 8GB DDR4-3200 (1600 MHz) SDRAM) | - |
Disk | - SSD PCIe NVMe 128GB (macOS) (old) : MZVLW128HEGR-000L2 - SSD PCIe NVMe 1TB (macOS) (new) : WD PC SN740 SDDPTQD-1T00 - SSD PCIe NVMe 512GB (Windows): MZVLQ512HBLU-00B00 |
- |
Audio | Realtek HD Audio ALC295 | INTELAUDIO\FUNC_01&VEN_10EC&DEV_0295 &SUBSYS_1025143D&REV_1000 |
Ethernet | Realtek - Killer E2600 Gigabit Ethernet Controller | PCI\VEN_10EC&DEV_2600&SUBSYS_143D1025&REV_21 |
Wifi | Realtek - Intel(R) Wi-Fi 6 AX201 160MHz | PCI\VEN_8086&DEV_06F0&SUBSYS_00748086&REV_00 |
Bluetooth | - Realtek - Intel(R) Wi-Fi 6 AX201 160MHz - Broadcom BCM94352z |
PCI\VEN_8086&DEV_06F0&SUBSYS_00748086&REV_00 PCI\VEN_14E4&DEV_43B1&SUBSYS_072A14E4&REV_03 |
- OpenCore 0.9.8
- macOS Ventura
- macOS Sonoma 14.3.1
- macOS Sonoma 14.5 (latest version)
- iGPU
- Built-in monitor (refresh rates 60Hz & 144Hz, brightness control)
- Native hotkey support with Fn keys (keyboard & screen brightness, volume, sleep, Touchpad.)
- Smart Touchpad + Gestures
- Audio (built-in Speaker & mic, combo jack after sleep-wake )
- USB ports as 3.1 (3xUSB Type-A + 1 USB Type-C)
- Ethernet
- WiFi (2.4GHz and 5GHz)
- Bluetooth
- Webcam
- Sleep + Wake
- Battery percentage
- iServices (Messages, FaceTime, Handoff, Continuity, etc.) => Must edit
config.plist
's PlatformInfo section.β οΈ Never reuse existing info, generate your own! Else AppleID will be bannedβ οΈ Discussed here
- Audio (Combo jack hissing at startup, AirPods work perfectly)
- Battery readouts (cycle count, temperature)
- RTX 3060 (macOS does not support Nvidia's Ampere (30XX) GPUs).
- HDMI port (since it's powered by the RTX 3060).
Getting Bluetooth and AirDrop as well as Continuity and Handoff services to work was too much of a struggle with the Intel WiFi card. These features were working randomly and the AirPods kept getting disconnected.
I found out that some 2-in-1 cards were natively supported by macOS and worked out of the box (OOTB) (or at least until Sonoma). For Sonoma and above, kexts would be able to bring back full functionality to those specific cards.
That is why I chose to transition from the Intel WiFi AX201 Card with a Fenvi Broadcom BCM94352z that can be found at an unbeatable price in many stores.
For many tutorials, this Broadcom card is considered as a "Modern WiFi card" "Non-Apple AirPort and Non-Fenvi Card" , the Bluetooth part as a separate dongle.
In a spirit of consistency and continuity, I chose to add Broadcom support using the latest version of my EFI (v1.2) as base before continuing to upgrade the non-related kexts and bootloader.
Thus everything detailed below uses the same OpenCore bootloader version (V.0.9.8), and kexts versions (except for the Lilu.kext
) and the EFI release 1.3 (add release link) can be seen as an alternate version of the (EFI v1.2) able to support both Broadcom BCM94352z and intel AX201 WiFi/Bluetooth card.
To enable support of the Broadcom BCM94352z WiFi/Bluetooth card here is what has changed on a Kext level, and in the future all kexts will only be updated.
-
First, all Intel AX201 related kexts are disabled (but not deleted) :
IntelBluetoothFirmware.kext
IntelBTPatcher.kext
AirportItlwm.kext
-
Secondly, new Broadcom BCM94352z kexts are added :
-
AMFIPass.kext
: Disable AMFI (Apple Mobile File Integrity) without requiring supplementary boot-args, thus allows OCLP root patching.- To handle this kext's functionality with EFI (v1.2.0),
Lilu.kext
had to be updated (1.6.7 -> 1.7.0)
- To handle this kext's functionality with EFI (v1.2.0),
-
WiFi Kexts:
IOSkywalkFamily.kext
IO80211FamilyLegacy.kext
AirPortBrcmFixup.kext
-
Bluetooth kexts:
BrcmBluetoothInjector.kext
*macOS VerDepBrcmFirmwareData.kext
*macOS VerDepBrcmPatchRAM.kext
*macOS VerDepBrcmPatchRAM2.kext
*macOS VerDepBrcmPatchRAM3.kext
*macOS VerDep
-
-
BlueToolFixup.kext
has to be kept on to enable Bluetooth functionality in either case.
Important
*macOS VerDep: Kexts are Kernel version dependent to allow their dynamic activation, more info on utilizing minKernel
and maxKernel
settings.
Important
To bring back Intel AX201 support, disable Broadcom's kexts except BlueToolFixup.kext
as it is used to enable WiFi functionality in either case.
As Apple removed support of unsoldered Broadcom WiFi/Bluetooth cards since Sonoma, in addition to kexts, the Broadcom BCM94352z requires OCLP patching to work again. OCLP patching is a process of customizing the OpenCore bootloader.
- Using it needs the OpenCore Legacy Patcher app (min version
2.4.0
) - Requires to:
- Disable
SecureBootModel
- Partially disable System Integrity Protection (
SIP
) - Disable Apple Mobile File Integrity (
AMFI
)
- Disable
Important
SecureBootModel
can be re-enabled after Root patching.
Important
AMFI
can be disabled by adding the amfi=0x80
boot-arg to the NVRAM, or using AMFIPass.kext
. I chose the latter as it is 'more visible and clean' than the boot-arg method.
More information on the matter here.
Despite adding a bluetoothExternalDongleFailed = 00
entry to the NVRAM (see guides), Bluetooth (and AirDrop) were disabled after a cold boot. To make it work I had to reset NVRAM twice after each cold boot.
After some investigation, I saw that after each cold boot bluetoothExternalDongleFailed
kept getting reset to 01
.
Resetting NVRAM twice each time being laborious, I discovered Lawrence Bates/LBates2000's trick to reset it to 00
on startup.
While Lawrence's solution didn't work for me (probably because I'm not on macOS Sequoia yet) it set me on the right track to solve the issue.
Please see the tutorial to fix it here
For giving very detailed guide to add WiFi/BT support using the broadcom card.
Taught me to use minKernel
and maxKernel
settings on Kexts as well as OCLP.
- https://github.com/5T33Z0/OC-Little-Translated/tree/main/10_Kexts_Loading_Sequence_Examples#example-10-re-enabling-legacy-broadcom-and-intel-wifibt-cards-in-macos-14
- https://github.com/5T33Z0/OC-Little-Translated/tree/main/10_Kexts_Loading_Sequence_Examples#example-7-broadcom-wifi-and-bluetooth
For giving detailed guide to add WiFi/BT support using the broadcom card. Guide on OCLP procedure.
- https://elitemacx86.com/threads/how-to-fix-broadcom-wifi-on-macos-sonoma-and-later.1415/page-15
- https://elitemacx86.com/threads/wifi-compatibility-list-for-os-x-and-macos-broadcom-atheros-intel-and-realtek.609/
- https://elitemacx86.com/threads/how-to-enable-broadcom-wifi-and-bluetooth-on-macos-clover-opencore.606/
For giving an introductory framework to add WiFi support using the broadcom card.
For fixing the NVRAM setting bluetoothExternalDongleFailed
that keeps getting reset to 01
(Failed/disabled) despite specifing its value as an NVRAM entry in the config.plist
.