Contribute
Register

[GUIDE] Installing 3rd Party Kexts - El Capitan, Sierra, High Sierra, Mojave, Catalina

In case this of benefit to someone else, I'd been trying to upgrade from 10.14.6+ to 10.15.3 without success and assumed that it was something in my config.plist causing my problem as obviously there were a Lot of successes with leaving the kexts in /L/E.

But, for me - after I removed the standard kexts (and also AppleAHCIPortHotplug.kext for SATA hot plugging installed by Hackintool), I was able to install without a problem - and then import (both upgrading and installing from scratch and then migrating failed).

My clue was that the migrate failed after a successful install to a formatted SSD. While booted up from another SSD I could see that the migrate pulled in all my kexts from /L/E.

When I removed the kexts from /L/E and tried another install and migrate, it worked.

Anyway, here are the details that worked for me.

I really have no idea why they can't be in /L/E for my motherboard (the error was appleNVMe Assert failed)? There's just no valid reason that I can see - and it seemed like there were many benefits for kexts in /L/E?
 
EDIT: I have revised my Bluetooth kext installation, so that I'm able to install as many kexts as possible in /L/E. My current configuration is reflected below.

----------------------------------

For all of the good reasons stated by jaymonkey in Post #1 of this thread, I would much prefer to install 3rd-party kexts in /L/E, with only the "critical" kexts in E/C/k/O. I am only choosing my kext injection strategy below, because of what appear to be limitations of the BrcmPatchRAM3 & BrcmFirmwareRepo kexts when running Catalina on my Dell Latitude E6410. My other hacks that do not require Brcm kexts will continue to run with jaymonkey's "preferred" kext injection method (my preferred method, too): Install 3rd-party kexts in /L/E, duplicate "critical" kexts in E/C/k/O and set Clover "Inject Kexts" = DETECT.

----------------------------------

On my Dell Latitude E6410 running High Sierra and Mojave, I was placing all 3rd party kexts in /L/E and duplicating "critical" kexts in E/C/k/O with Clover "Inject Kexts" set to DETECT. After discovering that my Brcm Bluetooth firmware was not loading reliably in Catalina 10.15.3 / Clover r5103 (Legacy), I installed BrcmPatchRAM3.kext and BrcmFirmwareData.kext in E/C/k/O, removed all other kexts from E/C/k/O, removed BrcmFirmwareRepo.kext and BrcmPatchRAM3.kext from /L/E and set Clover "Inject Kexts" to YES. This configuration works flawlessly with the same EFI for High Sierra 10.13.6, Mojave 10.14.6 and Catalina 10.15.3 (my laptop triple-boots the three macOSes). My kexts are below with complete details available if you Google "Catalina Latitude E6410."

The kext installation for my Latitude E6410 (Nvidia) running Catalina 10.15.3, Mojave 10.14.6 and High Sierra 10.13.6 is as follows:
  • Clover (Legacy) r5103: "Inject Kexts" = YES (not DETECT)
  • Kexts installed in /Library/Extensions
    • Lilu.kext v1.4.2
    • BrcmBluetoothInjector.kext v2.5.1
    • AirportBrcmFixup.kext v2.0.6
    • FakeSMC.kext v6.26
    • IntelMausiEthernet.kext v2.5.0
    • USBInjectAll.kext v0.7.1
    • VoodooPS2Controller.kext (Bronxteck) v6.0.0
    • ACPIBatteryManager.kext v1.90.1
    • FakeSMC_CPUSensor.kext v6.26
    • FakeSMC_GPUSensor.kext v6.26
  • Kexts installed in EFI/Clover/kexts/Other
    • BrcmFirmwareData.kext v2.5.1
    • BrcmPatchRAM3.kext v2.5.1

Note that with the Brcm kexts, BrcmFirmwareData.kext must be used when installing kexts in E/C/k/O and BrcmFirmwareRepo.kext must be used when installing kexts in /L/E. Installation of BrcmPatchRAM3 & BrcmFirmwareRepo.kext in /L/E was not reliable for me when running Catalina (Bluetooth firmware did not always update). See details by Googling "BrcmPatchRAM2 for 10.15 Catalina (Broadcom bluetooth firmware upload)."
 
Last edited:
  • BrcmFirmwareData.kext v2.5.1
  • BrcmRAMPatch3.kext v2.5.1
  • BrcmFirmwareInjector.kext v2.5.1

Note that with the Brcm kexts, BrcmFirmwareData.kext must be used when installing kexts in E/C/k/O and BrcmFirmwareRepo.kext must be used when installing kexts in /L/E. Installation of BrcmFirmwareRepo.kext in /L/E was not reliable for me when running Catalina. See details by Googling "BrcmPatchRAM2 for 10.15 Catalina (Broadcom bluetooth firmware upload)."

Hi where did you find the v2.5.1 version of those? I used 2.3.0 and it didn't work so I want to try this new version.

Thank you.
 
Hi,
Is there a performance difference, depending on the location of kexts in /L/E vs /Other ? Or difference in booting and shutdown time ?
Kind regards,
Chimiel
 
Is there a performance difference, depending on the location of kexts in /L/E vs /Other ? Or difference in booting and shutdown time ?


@Chimiel,

When you install 3rd party kexts in /L/E they are added to the kernel cache.
The kernel cache allows MacOS to boot up much quicker than if it had to load and link each kext individually ...

When you inject Kexts from EFI/Clover/Kexts/Other, Clover loads, injects and links each kexts one at a time so the process is much slower than using the kernel cache. .... how much slower will depend upon which 3rd party kexts you are using and how many.

Cheers
Jay
 
Last edited:
@Chimiel,

When you install 3rd party kexts in /L/E they are added to the kernel cache.
The kernel cache allows MacOS to boot up much quicker than if it had to load and link each kext individually ...

When you inject Kexts from EFI/Clover/Kexts/Other, Clover loads, injects and links each kexts one at a time so the process is much slower than using the kernel cache. .... how much slower will depend upon which 3rd party kexts you are using and how many.

Cheers
Jay

Thnx Jay,
Is this also effecting shutting down / taking longer to shut down ?
Kind regards,
Chimiel
 
Thnx Jay,
Is this also effecting shutting down / taking longer to shut down ?
Kind regards,
Chimiel
I haven’t felt it being slower to boot or shut down after moving essential kexts to CLOVER/Kexts/Other.
 
@PEKA62,

When the Clover option, "Inject Kexts" is set to "Detect" Clover will check that FakeSMC (or Lilu + VirtualSMC) is installed in /L/E, if it is then Clover will not inject any Kexts and leaves MacOS to load all 3rd party kexts from /L/E.

So the answer your question is Yes, you should install all 3rd party kexts in /L/E and only copy the critical ones to /EFI/Clover/Kexts/Other which will only be used when booting Installer, Updater or Recovery.

Hope that helps to clarify ...

Cheers
Jay
Hi Jay,
Critical kexts are copied to c/k/o, for use during an update. Before performing an update, do you change inject kexts = ‘detect’ to ‘yes’, or do leave it as is and does Clover knows what to do ?
Kind regards,
Chimiel
 
Is this also effecting shutting down / taking longer to shut down


@Chimiel,

Not as far as I know ...

Critical kexts are copied to c/k/o, for use during an update. Before performing an update, do you change inject kexts = ‘detect’ to ‘yes’, or do leave it as is and does Clover knows what to do ?


As long as you have followed the guide there is no need to change the "Inject kexts" setting before installing an update.
Clover is smart enough to automatically use injected kexts when running a MacOS Installer or Updater.

Cheers
Jay
 
Back
Top