Contribute
Register

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

Joined
Oct 30, 2013
Messages
9
Motherboard
some
CPU
some
Graphics
some
I am troubleshooting my Catalina SSD install (get blank screen on boot) - and I have Mojave running fine - so I keep trying different things in boot args but nothing is working. I am hoping that kext rebuild on the Catalina disk will help. I tried booting with -f but that did not help. I cannot get into the OS at all - safe mode does not boot. I have latest Lilu, WG in /L/E and latest Clover. Can I use Hackintool and rebuild kext cache in /L/E on a non-booted disk? Or what is the best way to do this? Most terminal commands and applications want to run on the currently booted disk.
 
Joined
Jul 15, 2017
Messages
131
Motherboard
Gigabyte GA-Z270XP-SLI
CPU
i7-7700K
Graphics
RX 570
Mac
Mac Pro
Mobile Phone
iOS
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?
 
Joined
Sep 22, 2011
Messages
700
Motherboard
HP EliteDesk 800 G4 Mini
CPU
I7-8700T
Graphics
UHD 630
Mac
Mac mini
Mobile Phone
iOS
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:
Joined
Jul 10, 2018
Messages
82
Motherboard
Gigabyte Z370N WIFI
CPU
I5 8400
Graphics
UHD630
Mac
MacBook, MacBook Air, MacBook Pro
Mobile Phone
Android, iOS
  • 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.
 
Joined
Sep 20, 2012
Messages
75
Motherboard
ASUS ROG MAXIMUS HERO X Z370
CPU
i9-9900K
Graphics
RX 580
Mac
iMac
Mobile Phone
iOS
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
 

jaymonkey

Moderator
Joined
Aug 27, 2011
Messages
3,836
Motherboard
ASRock-Z97 EX6
CPU
i7-4790K OC @ 4.8GHz
Graphics
Vega 64LC + HD4600
Mac
MacBook Air, MacBook Pro
Mobile Phone
Android, iOS
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:
Joined
Sep 20, 2012
Messages
75
Motherboard
ASUS ROG MAXIMUS HERO X Z370
CPU
i9-9900K
Graphics
RX 580
Mac
iMac
Mobile Phone
iOS
@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
 
Joined
Oct 10, 2015
Messages
444
Motherboard
Z370 AORUS Gaming 3
CPU
i5-9600K
Graphics
RX 580
Mac
MacBook Pro
Mobile Phone
iOS
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.
 
Joined
Sep 20, 2012
Messages
75
Motherboard
ASUS ROG MAXIMUS HERO X Z370
CPU
i9-9900K
Graphics
RX 580
Mac
iMac
Mobile Phone
iOS
@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
 
Top