# Gathering Kexts

## What Kexts Do I Need?

*VirtualSMC.kext* is a requirement - it emulates the SMC chip found on real macs, and convinces the OS that *yes, this is a real Mac*. Without it, no Hackintosh :(

All of the following kexts are available on [*this repo* ](https://1drv.ms/f/s!AiP7m5LaOED-m-J8-MLJGnOgAqnjGw)courtesy of Goldfish64. Each kext is auto-built whenever a new commit is made. If you prefer to build them yourself, you can utilize my [*Lilu And Friends* ](https://github.com/corpnewt/Lilu-and-Friends)script.

### Ethernet

* [*IntelMausiEthernet.kext* ](https://github.com/Mieze/IntelMausiEthernet)- this works with most newer Intel LAN chipsets
* *AppleIntelE1000e.kext* - this works with older Intel LAN chipsets - but can cause KPs on newer chipsets
* [*AtherosE2200Ethernet.kext* ](https://github.com/Mieze/AtherosE2200Ethernet)- this works for most Atheros or Killer networking chipsets
* [*RealtekRTL8111.kext*](https://github.com/Mieze/RTL8111_driver_for_OS_X) - this works with most gigabit Realtek LAN chipsets
* [*RealtekRTL8100.kext* ](https://github.com/Mieze/RealtekRTL8100)- for 10/100 Realtek LAN chipsets

### USB

You'll want to grab [*USBInjectAll.kext*](https://bitbucket.org/RehabMan/os-x-usb-inject-all/downloads/). If you're on an H370, B360, and H310 Coffee Lake system, or an X79/X99/X299 you'll likely want to make sure to include the *XHCI-unsupported.kext* as well. As of 10.11, Apple has imposed a 15 port limit on each USB controller. This doesn't sound like a terribly imposing issue until you realize that each USB 3 port counts as 2 - one for USB 2, one for USB 3. On Skylake and newer builds where USB 2 and 3 are handled only on XHCI, and each USB 3 port counts as 2, this limit can be reached quickly. There is a way to route all USB 2 through EHCI though - utilizing RehabMan's [*FakePCIID.kext + FakePCIID\_XHCIMux.kext*](https://github.com/RehabMan/OS-X-Fake-PCI-ID) (it only works on some chipsets though) which can take some of the pressure off the XHCI controller.

### Audio

For Audio - you'll want to grab /u/vit9696's [*AppleALC.kext*](https://github.com/vit9696/AppleALC/releases) and the companion [*Lilu.kext*](https://github.com/vit9696/Lilu/releases) - providing you have [a supported codec](https://github.com/vit9696/AppleALC/wiki/Supported-codecs). *AppleALC* is capable of patching *AppleHDA.kext* on the fly to allow for native audio with unsupported codecs. It also has a number of codec verbs built in to help with audio-after-sleep.

### Graphics

For GPUs - you should grab [*WhateverGreen.kext*](https://github.com/acidanthera/WhateverGreen/releases) and the companion [*Lilu.kext*](https://github.com/vit9696/Lilu/releases) - this has the functionality of *IntelGraphicsFixup*, *NvidiaGraphicsFixup*, *CoreDisplayFixup*, and *Shiki* all rolled into it. Prior, all of these kexts were separate - but since many of them share resources, they've been combined.

### WiFi and Bluetooth

Apple is pretty minimal with their WiFi support, so I'll only cover the two main chipsets I'm familiar with. I've used a BCM94360CD + PCIe adapter, and BCM94352HMB/BCM94352Z in my Hackintoshes. The BCM94360CD worked OOB with no extras as it's a native card. For the BCM94352 flavors, I've been using [*AirportBrcmFixup.kext* ](https://github.com/acidanthera/AirportBrcmFixup)and the companion [*Lilu.kext*](https://github.com/vit9696/Lilu/releases) for WiFi setup and *BrcmBluetoothInjector.kext* (on 10.13.6+) or *BrcmPatchRAM2.kext* alongside *BrcmFirmwareData.kext* - all of the Brcm\* kexts are from RehabMan's [*OS-X-BrcmPatchRAM*](https://github.com/RehabMan/OS-X-BrcmPatchRAM) repo.

### Extras

Depending on the rest of your hardware - you *may* need more kexts as well, but this guide is designed to be a general foundation, so you'll have to rely on your google-fu for that.
