Contribute
Register

El capitan USB issues - possible fix.

Status
Not open for further replies.
Joined
Nov 27, 2011
Messages
262
Motherboard
Gigabyte GA-Z97-D3H
CPU
i5-4690K
Graphics
GTX 750
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
EDIT: El capitan 10.11.1

The release of the 10.11.1 update, added native support for the USB chipset on the Z97-D3H motherboard.
:thumbup:

This makes this fix kind of redundant for this board.
The best way to have full working USB on this board with no issues with sleep, no need to disable 'wake on USB', no DSDT editing or Patching is as follows:

Rename your
EHC1 to EH01 and your ECH2 to EH02 using clover dsdt patching. Using the same method i explained originally for the _OSI to XOSI patch.

Code:
Item 1:
Comment: change EHC1 to EH01
Find: <45484331>
Replace: <45483031>

Item 2:[/COLOR]
Comment: change EHC2 to EH02
Find: <45484332>
Replace: <45483032>

This will effectively disable the Apple port injectors. Then install
FakePCIID.kext and FakePCIID_XHCIMux.kext and reboot.
Now test your USB ports.

If they all work then your done, If only some off them work as they should then you will need to build a port injector for your machine. See here for more details on building a port injector.

Ive attached my injector below, assuming you have the same board as me i see no reason why it won't work.

Original fix below:

El Capitan USB3 Fix - GA Z97-D3H

As this fix had had a lot of views i decided i would rewrite it so its a bit clearer.

Since updating to El Capitan Public beta, I had problems with the USB on my Gigabyte Z97-D3H.

The main problem was USB3 drives were reporting in the USB2 bus and hence running at USB2 speed, Also USB2 devices were not working in USB3 ports.

The original thread is here http://www.tonymacx86.com/el-capitan-desktop-support/171493-usb-driver-changed-again-pb6.html
With the help of RehabMan I have now sorted this to a satisfactory level. I would like to thank him as without him I wouldn’t of got this sorted.

We tried lots of different things to get my USB working properly, more info on the below fix is included in the original thread.

Below is what I have to do on a clean install of El Capitan to get my USB ports working correctly. I am following the instructions exactly to get USB3 working on my system.

This works for me, on my hardware. It may not work for you. I hold no responsibility if your hack breaks so always have a backup and a way to restore it if it goes wrong.

I'm by no means a expert but I feel I have learned a fair bit from RehabMan in the last week, so I'll try and help if I can.

PS, I found it useful to enable screen sharing, so, if your keyboard and or mouse stops working from messing around with the USB ports, you could still control your hack from another mac.


Required files:

RehabMan's version of MaciASL - https://bitbucket.org/RehabMan/os-x-...atic/downloads
FakePCIID.kext and FakePCIID_XHCIMux.kext - https://bitbucket.org/RehabMan/os-x-...i-id/downloads
Kext Wizard - http://www.insanelymac.com/forum/top...ller-and-more/
Clover Configurator - http://mackie100projects.altervista.org/download/


You should be running the latest version of clover, at the time of writing that is 3280, and use the latest version of Clover Configurator.



Bios settings: ( mine is F8 )

Reset your Bios to default settings set it up as below:

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


This fix consists of 2 parts, part 1 is a DSDT patch handled by clover, second part 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


Whilst in clover…

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

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.

Code:
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))
    }
}
//EOF
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 hack, on one attempt here my keyboard and mouse stopped working straight away so i just reset using the reset button on the case.


Hopefully you will now have USB working correctly. Check by inserting a USB3 drive and open system report and see if it shows up under the USB3 bus, also check that USB2 devices function in the USB3 ports.

Problem Solving.

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



Code:
Method(XWAK, ...
{
   ..some code...
}
to

Code:
Method(XWAK, ...
{
   Return(0)
   ..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.



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.


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.


Hope this helps and its a bit clearer now.

Matt
 

Attachments

  • SSDT-XOSI.aml
    168 bytes · Views: 1,249
  • Matts iMac USBinject.kext.zip
    2.4 KB · Views: 1,396
Last edited by a moderator:
I followed the original thread and shared every struggle with you! I just wanted to reply and say that your eventual solution worked great for me. I just removed the USB injector kext that I shamelessly stole from you (after not seeing it mentioned in this post) and it still works without it. So that's good! One less thing to worry about down the road.

Thanks for writing up the final results! That should save people a lot of trouble along the way.
 
I agree with poster #2. This patch (at least the _OSI>XOSI & XOSI SSDT) will have it so that if your USB3 devices are being routed to EHC it will reroute to XHC. :thumbup:
 
I agree with poster #2. This patch (at least the _OSI>XOSI & XOSI SSDT) will have it so that if your USB3 devices are being routed to EHC it will reroute to XHC. :thumbup:

The routing employed by DSDT code is often dependent on the Windows version.

This is because routing to EHCI is often implemented for older Windows versions not likely to have proper USB3 support. For which versions the routing kicks in is often machine/BIOS dependent.
 
It works for me! Thanks! But i have an issue, my usb not working after sleep. I have to force restart the computer.. Any fix for this?
gigabyte z97-ud5h
 
It works for me! Thanks! But i have an issue, my usb not working after sleep. I have to force restart the computer.. Any fix for this?
gigabyte z97-ud5h

Make XWAK in DSDT do nothing.
 
Can you explain how to do it? Sorry, i'm not an expert :) :)

Find Method XWAK in your DSDT...

Code:
Method(XWAK, ...
{
   ..some code...
}

Change it:
Code:
Method(XWAK, ...
{
   Return(0)
   ..some code...
}
 
Status
Not open for further replies.
Back
Top