Kexts fine - tuning
Kexts also have order requirements, and some Kexts may conflict and cause the system to be unable to boot. This part is also rather complicated. Since the developers of Kexts are different, I can only try my best to describe it. If the documentation description is not clear, you can watch the corresponding tutorial videos on Bilibili.
Automatically Adjust the Order of Kexts¶
When ProperTree performs the operation of Cmd/Ctrl + Shift + R or uses the graphical menu to select 「Clean Snapshot」, it will automatically adjust the loading order of Kexts and disable the conflicting Kexts.
Actually, OpenCore Configurator also has this function. Click 「Check Kexts」 at the bottom:
Manually Adjust the Order of Kexts¶
The order automatically adjusted by the software is not necessarily the most accurate because it doesn't know which messy Kexts you have used. So sometimes we need to manually adjust the loading order of Kexts.
OpenCore Configurator¶
The operation of OpenCore Configurator is relatively simple. Select the Kext you want to operate, and then directly drag it up and down to adjust the order:
OCAuxiliaryTools¶
Although OCAuxiliaryTools can't be directly dragged, you can use the 「up」 and 「down」 arrow icons at the bottom to adjust the loading order of Kexts:
Adjustment Details of Common Kexts¶
Loading Order of Essential Kexts¶
- Lilu.kext
- VirtualSMC.kext
- WhateverGreen.kext
- SMCBatteryManager.kext (not needed for desktops)
- SMCLightSensor.kext (not needed for desktops)
- SMCProcessor.kext
- SMCSuperIO.kext
- AppleALC.kext
Loading Order of BCM Broadcom Wireless and Bluetooth¶
- AirportBrcmFixup.kext
- BrcmBluetoothInjector.kext
- BrcmFirmwareData.kext
- BrcmPatchRAM3.kext
Detailed Adjustment of BCM Broadcom Wireless¶
Directly loading AirportBrcmFixup.kext will actually load 3 Kexts:
- AirportBrcmFixup.kext
- AirportBrcmFixup.kext/Contents/PlugIns/AirPortBrcmNIC_Injector.kext
- AirportBrcmFixup.kext/Contents/PlugIns/AirPortBrcm4360_Injector.kext
Among them, when installing Big Sur and later versions, AirPortBrcm4360_Injector.kext will have problems by default, so we need to set the maximum kernel to 19.9.9, which may reduce some abnormal errors:
In addition, for network cards with the BCM94352Z chip, it is often necessary to add brcmfx - driver = 2
in the boot item to solve some sleep or other mysterious problems:
Loading Order of Intel Wireless and Bluetooth¶
- AirportItlwm.kext
- IntelBluetoothInjector.kext
- IntelBluetoothFirmware.kext
Loading Order of Laptop PS2 Keyboard, Mouse, and Touchpad¶
- VoodooPS2Controller.kext
- VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Keyboard.kext
- VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Mouse.kext
- VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Trackpad.kext
- VoodooPS2Controller.kext/Contents/PlugIns/VoodooInput.kext
- BrightnessKeys.kext (function brightness adjustment key driver, not always necessary)
Loading Order of Laptop I2C and PS2 Cooperative Drive Touchpad¶
- VoodooI2C.kext/Contents/PlugIns/VoodooI2CServices.kext
- VoodooI2C.kext/Contents/PlugIns/VoodooGPIO.kext
- VoodooI2C.kext
- VoodooI2CHID.kext
- VoodooPS2Controller.kext
- VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Keyboard.kext
- VoodooI2C.kext/Contents/PlugIns/VoodooInput.kext
- BrightnessKeys.kext (function brightness adjustment key driver, not always necessary)
A small tip: Since both IC2 and PS2 have VoodooInput.kext, if the VoodooInput.kext of PS2 is not deleted or disabled, it will cause a kernel conflict during startup, resulting in system freeze and inability to boot.
Loading Order of Laptop PS2Smart Keyboard Driver¶
- ApplePS2SmartTouchPad.kext/Contents/PlugIns/ApplePS2Controller.kext
- ApplePS2SmartTouchPad.kext/Contents/PlugIns/ApplePS2Keyboard.kext
- ApplePS2SmartTouchPad.kext
Detailed Adjustment of Laptop VoodooRMI.kext and VoodooSMBus.kext¶
First, make sure that the VoodooPS2 configuration is as follows:
- Enable
- VoodooPS2Controller.kext
- VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Mouse.kext
- VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Keyboard.kext
- VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Trackpad.kext
- Disable
- VoodooPS2Controller.kext/Contents/PlugIns/VoodooInput.kext
Then enable and load the basic RMI configuration:
- VoodooRMI.kext
- VoodooRMI.kext/Contents/PlugIns/VoodooInput.kext
If you have an SMBus touchpad, you also need to load:
- VoodooSMBus.kext
- VoodooRMI.kext/Contents/PlugIns/RMISMBus.kext
If you have an I2C touchpad, you also need to load:
- VoodooI2C.kext
- VoodooRMI.kext/Contents/PlugIns/RMII2C.kext