# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hackintosh.gitbook.io/r-hackintosh-vanilla-desktop-guide/gathering-kexts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
