Hackintosh El Capitan 10.11 USB3.0 Fix

Apple has changed the USB3.0 driver in El Capitan. So if u upgrade your hackintosh to 10.11, u should take this to fix ur USB3.0.

This fix tutorial is worked for me, but it may not work for you. So if u have any problems, plz mail me freely.

Required files(Click to Download):

You should be running the latest version of Clover and use the latest version of Clover Configurator.

BIOS settings:

  • VT-d disabled
  • XHCI Mode Smart Auto
  • Intel Processor Graphic disabled
  • XHCI Hand-Off Enabled
  • EHCI Hand-Off Enabled
  • SATA Configuration AHCI

Let's Go

This fix consists of 2 parts, part 1 is a DSDT patch handled by clover, part 2 involves installing 2 kexts made by rehabman.

Part 1:
You will be patching your DSDT via clover, There are 2 ways to do this, manually or via clover configurator. The instructions below are for clover configurator.

If you do intend to do this manually you will need the patch for _OSI -> XOSI from the BRIX config.plist: https://github.com/RehabMan/Gigabyte-BRIX-s-DSDT-Patch (config.plist/ACPI/DSDT/Patches, first entry).

Step 1:

First open clover configurator and mount your EFI partition, open your config.plist. Under the ACPI section you need to add a DSDT Patch.

  1. click the little + icon on the right
  2. for comment put "change _OSI to XOSI"
  3. for find* [HEX] put "5F4F5349"
  4. for Replace* [HEX] put "584F5349"

In the ACPI / FIXES section untick ‘FIXUSB’
In the DEVICES / USB section untick ‘Inject’ ‘Add ClockID’ ‘FixOwnership’ and ‘HighCurrent’
In the Rt Variables section set your booterconfig to 0x28 and CsrActiveConfig to 0x67

Save your config.plist and reboot your hackintosh.

Step 2:

Open MaciASL and goto preferences / iASL and change the compiler options to ACPI 5.0, close the preferences and then select file - new.
Copy the below into the MaciASL window.

DefinitionBlock ("SSDT-XOSI.aml", "SSDT", 1, "hack", "hack", 0x00003000)
    // All _OSI calls in DSDT are routed to XOSI...
    // XOSI simulates "Windows 2012" (which is Windows 8)
    // Note: According to ACPI spec, _OSI("Windows") must also return true
    //  Also, it should return true for all previous versions of Windows.
    Method(XOSI, 1)
        // simulation targets
        // source: (google 'Microsoft Windows _OSI')
        //  http://download.microsoft.com/downlo...nACPI_OSI.docx
        Name(WINV, Package()
            "Windows",              // generic Windows query
            "Windows 2001",         // Windows XP
            "Windows 2001 SP2",     // Windows XP SP2
            "Windows 2006",         // Windows Vista
            "Windows 2006 SP1",     // Windows Vista SP1
            "Windows 2009",         // Windows 7/Windows Server 2008 R2
            "Windows 2012",         // Windows 8
        Return (LNotEqual(Match(WINV, MEQ, Arg0, MTR, 0, 0), Ones))

Save As SSDT-XOSI.aml, (as ACPI Machine Language Binary), place in EFI/Clover/ACPI/patched.

Part 2:

Open up Kext wizard install FakePCIID.kext and FakePCIID_XHCIMux.kext and reboot your hackintosh.

Now your USB3.0 should work correctly. Check by inserting a USB3.0 stick and open system report and see if it shows up under the USB3 bus, also check that USB2 devices function in the USB3 ports.


1.Problem: No usb devices work after the system wakes from sleep. Also screen doesn't wake up after sleep.

Fix: Make XWAK in yourDSDT do nothing.

Method: For this fix you will need to patch your DSDT, if you already have your DSDT you can go ahead with the fix, you you dont have a DSDT ready then you will have to use clover to extract your unpatched DSDT.
If you press F4 at the main Clover bootloader screen, Clover will write your native files to EFI/Clover/ACPI/origin. There is no feedback when you press F4, so don't expect anything to "happen" when you press the key. Also, keep in mind that some BIOS implementations (newer computers) tend to reverse the Fn+F1..F12 and F1..F12 keys, so be sure you're pressing the correct key combination to generate F4.
Once this is done mount your EFI partition and copy your DSDT.aml from EFI/Clover/ACPI/origin/ onto your desktop.
Open it with MaciASL, and search your DSDT for XWAK and change as below

Original code

Method(XWAK, ...
   ..some code...

After change

Method(XWAK, ...
   ..some code...

Save your DSDT as DSDT.aml, (as ACPI Machine Language Binary), into the EFI/Clover/ACPI/patched folder and restart your hack.

**If when you save your DSDT MaciASL throws up at the error ‘ The document “DSDT.aml” could not be saved. The compiler returned one or more errors’ Open preferences and go to the sources tab and add http://raw.github.com/RehabMan/Laptop-DSDT-Patch/master as a source then come out of preferences.
Click patch then patch your DSDT with “Fix ADBG Error” and "Fix PARSEOP_ZERO Error” patches, then save.**

2.Problem: System wakes up straight away when USB3 device plugged in.

Fix: Disable wake on USB in your bios.

Method: This happens on my system, i haven't got a ‘disable USB wake’ in my bios so i patch my DSDT to disable wake on USB. If you have that option in your bios, use that.
Here you have 2 options, use one and only one. Do the first one and if the search doesn't find (0x0D) go on to the next one.

Open you DSDT in MaciASL and do a search for "(0x0D)" if it finds matches then using the above instructions for patching your DSDT, patch it with the "USB3 _PRW(0x0D) and Rename XHC to XHC1” patch, then save your DSDT as DSDT.aml (as ACPI Machine Language Binary) into the EFI/Clover/ACPI/patched folder and restart your hack.

Open you DSDT in MaciASL and do a search for "(0x6D)" if it finds matches then using the above instructions for patching your DSDT, patch it with the "USB3 _PRW(0x6D) and Rename XHC to XHC1” patch, then save your DSDT as DSDT.aml (as ACPI Machine Language Binary) into the EFI/Clover/ACPI/patched folder and restart your hack.

Obviously you will have to wake the system up with the power button now, not the mouse.

3.Problem: Some or all USB3 ports still not working after the above.

Method: By creating a correct port injector for your system you can correct the often incorrect DSDT ports. You need to determine which ports are actually active on your system using IORegistryExplorer v2.1, There can be lots of variables with these so i wont be covering them here. Ive attached my injector as a example, with the above fixes i no problems with USB2 ports so my injector only contains ports for USB3, which is what needed fixing. For more help with port injectors either read the original thread or have a look on the forums.