Contribute
Register

10.11.0-10.11.3 Skylake Starter Guide

Joined
Apr 17, 2017
Messages
1
Motherboard
01717014415
CPU
DELL
Graphics
ATOM
All: This will be replaced soon with an updated guide based on 10.11.4 and the current UniBeast/MultiBeast tools.




The new 170 boards and Skylake CPUs have presented fairly unprecedented complications in OS X support. This guide is an attempt to work through two of the biggest obstacles: widespread hardware problems due to interrupt configuration, and USB failures due to the way the default DSDT interacts with Apple's logic.

In order to install on a Skylake machine, you can prepare an install USB using UniBeast, but then you should apply the fixes described here to the EFI partition of the USB install drive, before you use it to install. (You can use EFI Mounter v3 if needed to mount the EFI partition, just make sure to pick the one for the USB drive. "diskutil list" in Terminal should show which one that is.)

0. tl;dr (i.e. the REALLY short version of the rest of the guide)
You can try this View attachment 163681 with USBInjectAll.kext and if it doesn't work right away apply the port limit patch in section 7.1 to your config.plist and try again.

Otherwise...

1. BIOS Settings
The BIOS settings are fairly typical for modern machines:
  • Load Optimized Defaults
  • If your BIOS has a VT-d setting, disable it
  • If your system has CFG-Lock, disable it
  • If your system has Secure Boot Mode, disable it
  • Set OS Type to Other OS
  • Set XHCI Handoff to Enabled
  • If you have a Serial port, disable it

2. IOAPIC Fix
Without this fix, many things don't work, including but not limited to SATA, Ethernet ports, USB, many PCI devices, sound devices, and etc. Basically virtually nothing works.

Fortunately, the fix is relatively easy: add this <dict> entry to EFI/CLOVER/config.plist in the KextsToPatch array:
Code:
                <key>KextsToPatch</key>
                <array>
[B]                        <dict>
                                <key>Comment</key>
                                <string>Skylake APIC fix, discovered by Pike R. Alpha</string>
                                <key>Find</key>
                                <data>
                                wegQD7bw
                                </data>
                                <key>Name</key>
                                <string>AppleAPIC</string>
                                <key>Replace</key>
                                <data>
                                vhcAAACQ
                                </data>
                        </dict>[/B]
If you're interested in more background, see this post.

3. SMBIOS

You should use a SMBIOS system definition. MacPro3,1 works as always. For instance, if you open your EFI/CLOVER/config.plist with Clover Configurator, choose the SMBIOS screen on the left, hit the Magic Wand button, select Mac Pro and then MacPro3,1 and then hit both shake buttons a few times and close the screen and File/Save.

If you want to use an official Skylake system definition, the only one available so far is iMac17,1 (though if you use this with an Nvidia card you will need Fix #4 from this thread):
Code:
    <key>SMBIOS</key>
    <dict>
        <key>BiosReleaseDate</key>
        <string>09/22/2015</string>
        <key>BiosVendor</key>
        <string>Apple Inc.</string>
        <key>BiosVersion</key>
        <string>IM171.88Z.0105.B00.1509221819</string>
        <key>Board-ID</key>
        <string>Mac-65CE76090165799A</string>
        <key>BoardManufacturer</key>
        <string>Apple Inc.</string>
        <key>BoardType</key>
        <integer>10</integer>
        <key>BoardVersion</key>
        <string>iMac17,1</string>
        <key>ChassisAssetTag</key>
        <string></string>
        <key>ChassisManufacturer</key>
        <string>Apple Inc.</string>
        <key>ChassisType</key>
        <string>13</string>
        <key>Family</key>
        <string>iMac</string>
        <key>LocationInChassis</key>
        <string>Part Component</string>
        <key>Manufacturer</key>
        <string>Apple Inc.</string>
        <key>ProductName</key>
        <string>iMac17,1</string>
        <key>SerialNumber</key>
        <string>C02Q0000GG7L</string>
        <key>Trust</key>
        <false/>
        <key>Version</key>
        <string>1.0</string>
    </dict>
If your system only recognizes half your installed memory, you can add your memory settings to the SMBIOS definition in config.plist. Just add a block like this. Note that you should use a SlotCount of 4 with slots 0 and 2 populated even on NUCs or Mini-ITX boards with only 2 slots because it's needed to enable dual-channel memory. You can make up the vendor, part, and serial fields if unsure, but don't leave them out.
Code:
        <key>Memory</key>
        <dict>
            <key>Channels</key>
            <integer>2</integer>
            <key>SlotCount</key>
            <integer>4</integer>
            <key>Modules</key>
            <array>
                <dict>
                    <key>Frequency</key>
                    <integer>2133</integer>
                    <key>Part</key>
                    <string>CT2C8G4DFD8213</string>
                    <key>Serial</key>
                    <string>0200020B000C020B</string>
                    <key>Size</key>
                    <string>8192</string>
                    <key>Slot</key>
                    <integer>2</integer>
                    <key>Type</key>
                    <string>DDR4</string>
                    <key>Vendor</key>
                    <string>Crucial</string>
                </dict>
                <dict>
                    <key>Frequency</key>
                    <integer>2133</integer>
                    <key>Part</key>
                    <string>CT2C8G4DFD8213</string>
                    <key>Serial</key>
                    <string>0200020B000C020B</string>
                    <key>Size</key>
                    <string>8192</string>
                    <key>Slot</key>
                    <integer>0</integer>
                    <key>Type</key>
                    <string>DDR4</string>
                    <key>Vendor</key>
                    <string>Crucial</string>
                </dict>
            </array>
        </dict>
4. HD 530 Integrated Graphics
The HD 530 works, but without HDMI audio and with many graphical artifacts. To get it working as far as it does, you should set your ig-platform-id to 0x19120000 (currently with no settings it defaults to the HD 4600, which gives no acceleration).

If you're using an HDMI connection to the monitor, also add this <dict> entry to EFI/CLOVER/config.plist in the same KextsToPatch array:
Code:
                <key>KextsToPatch</key>
                <array>
            [B]<dict>
                <key>Comment</key>
                <string>10.11-SKL530-Port_0-DP2HDMI</string>
                <key>Find</key>
                <data>
                /wAAAAEAAABAAAAA
                </data>
                <key>Name</key>
                <string>AppleIntelSKLGraphicsFramebuffer</string>
                <key>Replace</key>
                <data>
                AAAIAAAIAACCAAAA
                </data>
            </dict>[/B]

5. Ethernet
The i219 Ethernet port commonly included on Skylake boards has not been supported until very recently. Two driver options with i219 support are available among the kext downloads (the latest AppleIntelE1000e -- newer than the one in MultiBeast -- or IntelMausiEthernet). Reportedly the Mausi driver is the better of the two.

UniBeast installs an older version of AppleIntelE1000e (without i219 support) on your USB install drive, so you can replace that if you want Ethernet support during the installation (in EFI/CLOVER/kexts/10.10/ and EFI/CLOVER/kexts/10.11/). MultiBeast 8.0.1 also uses an older version, so during post-install setup you should not install an Ethernet driver with MultiBeast for the i219; instead download the one you want from the kexts section as above and use KextBeast to install it.

6. Audio
Most Skylake boards come with a Realtek ALC1150 audio chip, or another in the Realtek series. These should all be supported by MultiBeast, with the following config.plist patch. Note: this one goes in the ACPI section at the top, not the KextsToPatch section where the ones mentioned previously go:
Code:
<key>ACPI</key>
<dict>
    <key>DSDT</key>
    <dict>
        <key>Patches</key>
        <array>
            [B]<dict>
                <key>Comment</key>
                <string>Rename HDAS to HDEF</string>
                <key>Find</key>
                <data>
                SERBUw==
                </data>
                <key>Replace</key>
                <data>
                SERFRg==
                </data>
            </dict>[/B]
        </array>
        ...
    </dict>
If your ACPI section does not already have a Patches entry, you may need to add both the key and array, as well as the dict for the patch inside.

7. USB Fix

Sadly, this one is not as straightforward. Out of the box, typically some USB ports don't work, or work with only USB2 devices, or etc. This may include ports on the motherboard connector panel, ports on the case (which is to say on motherboard USB headers), and ports for Bluetooth devices (on-board or in PCIe Half-mini or m.2 slots).

There is a quick-and-dirty method to get through the install process. But that may have side effects and is not recommended long-term. So after the install, there is a more detailed process to "get it right".

Note: this has been tested on OS X 10.11.1 & 10.11.2. Some parts were known to not work during the 10.11.2 beta series, so be aware if using a beta release.

7.1 Getting Through the Install

A quick fix to get through the installation process is to install USBInjectAll.kext and another config.plist patch.

You can download USBInjectAll.kext (pick the latest distribution here) and copy it to EFI/CLOVER/kexts/... (into both 10.10/ and 10.11/ directories if using numbered directories, and into Other/ otherwise).

Then add this <dict> entry to EFI/CLOVER/config.plist in the same KextsToPatch array:
Code:
                <key>KextsToPatch</key>
                <array>
[B]                        <dict>
                                <key>Comment</key>
                                <string>change 15 port limit to 30 in AppleUSBXHCIPCI</string>
                                <key>Find</key>
                                <data>
                                g72M/v//EA==
                                </data>
                                <key>Name</key>
                                <string>AppleUSBXHCIPCI</string>
                                <key>Replace</key>
                                <data>
                                g72M/v//Hw==
                                </data>
                        </dict>[/B]
With those changes, you should be able to install with a USB drive on any USB2 or USB3 port. USB3 Type C ports should work (tested with an adapter to standard USB2/USB3 drives). Not sure about USB3.1 Type C ports.



Easy Options Are Above Here
Proceed Only If Dedicated To Getting Things Right!



7.2 Getting it Right

Note: if you're unwilling to go through all the effort required in this section, then stick with the setup above and take your chances with the port-limit patch.

Once you've installed, you can identify the USB ports in use more accurately. For this, you'll need IORegistryExplorer (get the attachment from this post) and MaciASL. You will also need a USB1 or USB2 device (a keyboard or mouse is fine) and a USB3 device (such as a USB flash drive).

7.2.1. Identifying Ports

To begin with, open IORegistryExplorer. Look for PCI0@0 then AppleACPIPCI and then way down the list, an entry for XHC. It should look something like this, with all 26 entries underneath:
View attachment 163415

If you see fewer than 26 entries (HS01-HS14, SS01-SS10, USR1-USR2), then something is wrong and you need to review the steps above until you can boot and see 26 entries under XHC in IORegistryExplorer.

Now here's the tedious part. You need to try both the USB2 device and USB3 device on every single port on the machine. This means all the ports on the motherboard backplate, all the case ports, switch the case ports between USB2 and USB3 headers on the motherboard and try again, try Type C ports with both devices using an adapter if necessary, check any on-board Bluetooth device, etc.

Every time you try one, look for an entry under XHC that just got a wedge next to it. In the screen shot above, you can see that HS05, HS06, and HS08 have wedges (this is my keyboard, mouse, and Bluetooth). For each entry with a wedge, click the wedge to confirm the correct device is shown there, then write down which port on your machine it corresponds to, and then select the HS** or SS** entry and write down the "port" value shown on the right. For instance, if I plug in a USB3 flash drive I get a wedge on SS01. Then if I click on SS01 in the screen shot above, I get this:
View attachment 163416

My device is "USB 3.0 FD" which is a USB 3 flash drive. The physical port is the lower of 2 ports on my case, currently connected to the USB3 header on the motherboard. The port shown in IORegistryExplorer is <11 00 00 00>. So I'll record this:

SS01: USB3 device on USB3 mobo header #1, port <11 00 00 00>

Now if I eject the drive and move it to the other case port, I get this:
View attachment 163417

So I record:

SS02: USB3 device on USB3 mobo header #2, port <12 00 00 00>

And here's an example of a USB1/2 device: the mouse I already have plugged in:
View attachment 163418

HS06: USB2 device on USB3 port under DVI port, port <06 00 00 00>

Overall, I get a list like this:

View attachment 163419
HS01: USB2 device on port #1 from USB3 motherboard header, port <01 00 00 00>
HS02: USB2 device on port #2 from USB3 motherboard header, port <02 00 00 00>
HS03: USB2 device on USB3 port between type-C and optical out, port <03 00 00 00>
HS04: USB2 device on USB3 port under i219V Ethernet jack, port <04 00 00 00>
HS05: USB2 device on USB3 port next to DVI, port <05 00 00 00>
HS06: USB2 device on USB3 port closest to PS/2, port <06 00 00 00>
HS07: USB2 device on USB3 Type C port, port <07 00 00 00>
HS08: USB2 for m.2 wireless Bluetooth features, port <08 00 00 00>
HS09: USB2 #1 from USB2 motherboard header, port <09 00 00 00>
HS10: USB2 #2 from USB2 motherboard header, port <0A 00 00 00>

SS01: USB3 #1 from USB3 motherboard header, port <11 00 00 00>
SS02: USB3 #2 from USB3 motherboard header, port <12 00 00 00>
SS03: USB3 between Type C port and optical out, port <13 00 00 00>
SS04: USB3 under i219V Ethernet jack, port <14 00 00 00>
SS05: USB3 next to DVI, port <15 00 00 00>
SS06: USB3 closest to PS/2, port <16 00 00 00>
SS07: USB3 Type C port, port <17 00 00 00>

HS11-HS14: unused
SS08-SS10: unused
USR1,USR2: unused

With that information, you can construct a SSDT to activate only the valid ports.

7.2.2. Constructing SSDT

Download the starter SSDT source here: View attachment 163422

You should open MaciASL, close the file it creates by default, and select File/Open and point it to that DSL template.

If this is your first time in MaciASL, go to MaciASL/Preferences..., then the iASL tab, and select ACPI Specification 5.1 and close the preferences.

You need to make the following modifications to the file in MaciASL:
  1. Add entries for all your HS** and SS** ports that are used. Copy one of the sample entries for each additional entry you need.
  2. For each entry:
    1. Change the name before the Package entry to match the port you're defining here
    2. Change the comment alongside the entry to describe what port it's for
    3. Change the code after "UsbConnector" to be one of the following:
      • 0 if it's a regular USB2 connector ("Type A") or a USB2 motherboard header
      • 3 if it's a regular USB3 connector ("Type A") or a USB3 motherboard header
      • 10 if it's a USB3 Type C connector
      • 255 if it's an internal Bluetooth device or other "proprietary" type of connector
      • There are more values in the ACPI specification, but I'd be surprised if you needed them.
    4. Change the first value in the Buffer after "port" to be "0x" plus the first two digits of the port code you wrote down for this port.
  3. Set the value in the port-limit field above the individual entries to be the same as the highest port value among all the entries you have. Normally this is the one for your highest-numbered SS** port.

So, by way of example:
HS06: USB2 device on USB3 port under DVI port, port <06 00 00 00>
becomes:
Code:
                    "HS06", Package() // USB2 device on USB3 port closest to PS/2, port <06 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x06, 0, 0, 0 },
                    },
while
SS02: USB3 device on USB3 mobo header #2, port <12 00 00 00>
becomes:
Code:
                    "SS02", Package() // USB3 device on USB3 mobo header #2, port <12 00 00 00>
                    {
                        "UsbConnector", 255,
                        "port", Buffer() { 0x12, 0, 0, 0 },
                    },
My entry with the highest port value is:
Code:
                    "SS07", Package() // USB3 Type C port, port <17 00 00 00>
                    {
                        "UsbConnector", 10,
                        "port", Buffer() { 0x17, 0, 0, 0 },
                    },
So my port-count near the top becomes:
Code:
                "port-count", Buffer() { 0x17, 0, 0, 0},
Here's the full example of my SSDT source populated for the port list above:
Code:
DefinitionBlock ("SSDT-USB.aml", "SSDT", 1, "sample", "USBFix", 0x00003000)
{
    // "USBInjectAllConfiguration" : override for USBInjectAll.kext
    Device(UIAC)
    {
        Name(_HID, "UIA00000")
        // "RehabManConfiguration"
        Name(RMCF, Package()
        {
            // XHC overrides for 100-series boards
            "8086_a12f", Package()
            {
                "port-count", Buffer() { 0x17, 0, 0, 0}, // Highest port number is SS07 at 0x17
                "ports", Package()
                {
                    "HS01", Package() // USB2 device on port #1 from USB3 motherboard header, port <01 00 00 00>
                    {
                        "UsbConnector", 255,
                        "port", Buffer() { 0x01, 0, 0, 0 },
                    },
                    "HS02", Package() // USB2 device on port #2 from USB3 motherboard header, port <02 00 00 00>
                    {
                        "UsbConnector", 255,
                        "port", Buffer() { 0x02, 0, 0, 0 },
                    },
                    "HS03", Package() // USB2 device on USB3 port between type-C and optical out, port <03 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x03, 0, 0, 0 },
                    },
                    "HS04", Package() // USB2 device on USB3 port under i219V Ethernet jack, port <04 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x04, 0, 0, 0 },
                    },
                    "HS05", Package() // USB2 device on USB3 port next to DVI, port <05 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x05, 0, 0, 0 },
                    },
                    "HS06", Package() // USB2 device on USB3 port closest to PS/2, port <06 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x06, 0, 0, 0 },
                    },
                    "HS07", Package() // USB2 device on USB3 Type C port, port <07 00 00 00>
                    {
                        "UsbConnector", 10,
                        "port", Buffer() { 0x07, 0, 0, 0 },
                    },
                    "HS08", Package() // USB2 for m.2 wireless Bluetooth features, port <08 00 00 00>
                    {
                        "UsbConnector", 255,
                        "port", Buffer() { 0x08, 0, 0, 0 },
                    },
                    "HS09", Package() // USB2 #1 from USB2 motherboard header, port <09 00 00 00>
                    {
                        "UsbConnector", 255,
                        "port", Buffer() { 0x09, 0, 0, 0 },
                    },
                    "HS10", Package() // USB2 #2 from USB2 motherboard header, port <0a 00 00 00>
                    {
                        "UsbConnector", 255,
                        "port", Buffer() { 0x0a, 0, 0, 0 },
                    },
                    "SS01", Package() // USB3 #1 from USB3 motherboard header, port <11 00 00 00>
                    {
                        "UsbConnector", 255,
                        "port", Buffer() { 0x11, 0, 0, 0 },
                    },
                    "SS02", Package() // USB3 #2 from USB3 motherboard header, port <12 00 00 00>
                    {
                        "UsbConnector", 255,
                        "port", Buffer() { 0x12, 0, 0, 0 },
                    },
                    "SS03", Package() // USB3 between Type C port and optical out, port <13 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x13, 0, 0, 0 },
                    },
                    "SS04", Package() // USB3 under i219V Ethernet jack, port <14 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x14, 0, 0, 0 },
                    },
                    "SS05", Package() // USB3 next to DVI, port <15 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x15, 0, 0, 0 },
                    },
                    "SS06", Package() // USB3 closest to PS/2, port <16 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x16, 0, 0, 0 },
                    },
                    "SS07", Package() // USB3 Type C port, port <17 00 00 00>
                    {
                        "UsbConnector", 10,
                        "port", Buffer() { 0x17, 0, 0, 0 },
                    },
                },
            },
        })
    }
}
When you're done, hit Compile in the toolbar. You should get a popup box saying no errors and no warnings.

Save the file, then choose File / Save As. This time select ACPI Machine Language Binary as the File Format and it should give the file a .asl extension. You can name it something like SSDT-USB.asl and hit Save.

Then copy the resulting SSDT-USB.asl file to EFI/CLOVER/ACPI/patched/ and restart your system.

If you look in IORegistryExplorer after the restart, under XHC it should list only the USB ports you defined in the SSDT. They should all work (for both USB2 and USB3 devices). If any don't, double-check that your port-count is set correctly to the highest "port" value of any of the ports in the file.

7.2.3. Final Port Configuration

The last step is to configure the machine so no more than 15 USB IDs are activated at once. For whatever reason, Apple has chosen to limit each USB controller to 15 entries. The port-limit patch installed above defeats that, but as it may have unintended side effects, the best approach is to live within the 15 ID limit.

First, remove the KextsToPatch entry with the comment "change 15 port limit to 30 in AppleUSBXHCIPCI" in EFI/CLOVER/config.plist. That will revert to the default Apple configuration.

Second, count the total number of ports defined in your SSDT. For my example it was 17 (HS01-HS10 and SS01-SS07).

Third, figure out which ports to disable to get the total down to 15. My board in the example above includes both 2 USB2 ports on a motherboard header, and 2 USB3 ports on a different motherboard header. My case only uses one header, and I've cabled it to the USB3 header. Therefore I can do without the 2 ports on the USB2 header. Consulting my list, they are these:

HS09: USB2 #1 from USB2 motherboard header, port <09 00 00 00>
HS10: USB2 #2 from USB2 motherboard header, port <0A 00 00 00>

Therefore, I chose to disable HS09 and HS10 to get my port count down from 17 to 15.

To disable ports, list them in a boot argument like this: uia_exclude=HS01;HS02;SS03;etc.

So my final boot argument is:
Code:
uia_exclude=HS09;HS10
Put that boot argument into EFI/CLOVER/config.plist and reboot. Confirm that exactly your desired ports show up in IORegistryExplorer (no more, no less), and they all still work.

7.3. Settings Review

In the end, you should have the following:
  • The APIC patch for the beginning in KextsToPatch in EFI/CLOVER/config.plist
  • The USBInjectAll kext in EFI/CLOVER/kexts/...
  • A SSDT-USB.aml in EFI/CLOVER/ACPI/patched/ to configure the correct ports for your motherboard
  • If you have more than 15 total USB entries in the SSDT, a boot argument to disable some of them so the total is 15 or fewer. This should probably be in Boot/Arguments in EFI/CLOVER/config.plist

Appendix: Working USB SSDTs by Motherboard
  • Asus Maximus VIII Hero: View attachment 163603 (source) View attachment 163602 (compiled SSDT)
    • This board has 20 ports defined. You'd have to disable 5 of them to fit into the 15-port limit. See the source link for which ones are motherboard headers you might not be using, etc.
  • Asus Z170 Pro Gaming: View attachment 165860 (source) View attachment 165861 (compiled SSDT)
    • This board has 20 ports defined. You'd have to disable 5 of them to fit into the 15-port limit. See the source link for which ones you might not be using, but for example:
    • The USB 2.0 motherboard headers are HS07+HS08, HS09+HS10, and HS11+HS12
    • The USB 3.0 motherboard header is SS01/HS01+SS02/HS02
  • Gigabyte GA-H170N-WIFI: View attachment 163527 (source) View attachment 163526 (compiled SSDT)
    • This board has 17 ports defined. You'd have to disable 2 of them to fit into the 15-port limit. See the source link for which ones you might not be using, but for example:
    • The USB2 motherboard header is HS09 & HS10
    • The USB3 motherboard header is HS01/SS01 & HS02/SS02
  • Gigabyte GA-Z170X-UD3: View attachment 176622 (source) View attachment 176621 (compiled SSDT)
    • This board has 20 ports defined. You'd have to disable 5 of them to fit into the 15-port limit. See the source link for which ones are motherboard headers you might not be using, etc.
  • Gigabyte GA-Z170X-UD5-TH: View attachment 163516 (source) View attachment 163515 (compiled SSDT)
    • This board has 22 ports defined. You'd have to disable 7 of them to fit into the 15-port limit. See the source link for which ones are motherboard headers you might not be using, etc.
  • ASRock Fatal1ty Z170 Gaming-ITX/ac: View attachment 165101 (source) View attachment 165100 (compiled SSDT)
    • This board has 19 ports defined. You'd have to disable 4 of them to fit into the 15-port limit. See the source link for which ones you might not be using, but for example:
    • The USB2 motherboard header is HS01 & HS02
    • If a USB1/2 keyboard and mouse are plugged into the 2 USB3 ports under the PS/2 port, USB3 support can be turned off on those ports with SS09 & SS10
Hey
I am using gigabyte ga-b150m-d3h ddr4 motherboard, intel i3 , 16GB ram and gigabyte radeon graphics 460
I already tried to install but when when boot with the installed drive than display not showing anything.I can't understand what is the problem...
Please help me
 
Joined
Aug 13, 2012
Messages
10
Motherboard
Asus Z170 Deluxe
CPU
i7-6700K
Graphics
GTX 1080
Mac
MacBook Pro
Good morning everyone!

Here are my Specs:
I7 6700K
GIGABYTE Z170X GAMING 7
NVIDIA GTX 1080
2x8 GB DDR4 TRIDENT Z (3000MHZ CL14)
2 x SAMSUNG NVME SM961

I installed an aml SSDT to fix power management on the CPU but I am struggling now with the USB ports.
The only KEXTS I loaded are the ones needed for the ethernet, the one for the NVME controller and the latest version of USBInjectAll.kext. I added the modification to the .plist file as suggested by Rehabman.

I was trying to follow the guide posted in the first post, but instead of seeing HS and SS devices (and 26 of them) in my IORegistryExplorer, this is what I see.

Screen Shot 2017-06-09 at 08.22.00.png

The USB is a pain in the arse, USB3.0 ports are not working properly and if I hit the CAPS LOCK button a couple of time the computer starts freezing (weird, I know, but still...).

Thank you very much everyone!

Edit: I installed the "Increase Limit" and "3rd party USB" through Multibeast and everything seems fine! I still have the caps lock problem, but at least USB3.0 ports are running!
 

Attachments

Last edited:
Joined
Feb 21, 2016
Messages
28
Motherboard
Asus Z170 Pro Gaming
CPU
Intel i7 6700K
Graphics
EVGA GTX 980 Ti
This is just a short note to those who (just like myself) lost support for USB 3.0 in the process of updating to 10.11.6 and applying several security updates. I just repeated the steps listed under 7.1 in the first post of this thread with the latest USBInjectAll.kext and USB ports are now working as previously.
 

UtterDisbelief

Moderator
Joined
Feb 13, 2012
Messages
2,744
Motherboard
Gigabyte Z370M D3H
CPU
i3-8350K
Graphics
RX 560
Mac
iMac, Mac mini
Classic Mac
eMac, iBook
Mobile Phone
iOS
I have created a SSDT for my GA Z270N-Wifi Board.
Everything is the same like the example from ammulder. I have only change this line

DefinitionBlock ("SSDT-USB.aml", "SSDT", 1, "sample", "USBFix", 0x00003000)
{
// "USBInjectAllConfiguration" : override for USBInjectAll.kext
Device(UIAC)
{
Name(_HID, "UIA00000")
// "RehabManConfiguration"
Name(RMCF, Package()
{
// XHC overrides for 200-series boards
"8086_a2af", Package()
{
This makes this SSDT 200-series compatible (I think :)) with the XHCI-200-series-injector.kext together

See attached file
Hi there @KayliZenner :)

Yes, I can confirm for all of us with 200-series motherboards that the code change you highlight DOES enable the compiled SSDT to work configuring the USB ports.

I had just compiled my new *.aml file and rebooted but nothing had changed. Recompiling with the "8086_ ..." code change did the trick.

Thank you.

:)
 
Joined
Oct 1, 2012
Messages
127
Motherboard
Gigabyte Z270XP-SLI-F9d
CPU
i7-7700K
Graphics
RX 580
Mac
MacBook Air, MacBook Pro
Mobile Phone
iOS
For those having a 200-series board and using this guide, if you are running 10.12.6 with either iMac18,1 or iMac 18,2 or iMac18,3 SMBIOS setting (no FakeCPUID), you will need Rehabman's latest USBInjectAll.kext for the USB ports to work properly (even with the 8086_a2af setting.)

If you are not using the latest USBInjectAll.kext v0.6.2 (2017-07-24 release date), your USB ports will be messed up and most of the SS ports will be missing.

Rahabman's latest USBInjectAll.kext can be downloaded from Github (linked below):
https://bitbucket.org/RehabMan/os-x-usb-inject-all/downloads/
 
Joined
Jul 17, 2017
Messages
21
Motherboard
Alienware / Intel Z270
CPU
Intel i7-7700K
Graphics
GeForce GTX 1080, HD630, 1440p
Mac
MacBook Air, MacBook Pro, Mac mini
Mobile Phone
Android, iOS
Got my ports to work at USB 3.0 speeds. Disabled 1 USB3.0, 4 USB2.0 ports.

Still needed USBInjectAll.kext and XHCI-200-series-injector.kext for this to work. Disabled change 15 port limit to 26 in XHCI kext is config.plist

Code:
uia_exclude=HS01;HS02;HS03;HS04;HS14;SS05;USR1;USR2

AlienwareAuroraR6-USBLayout.png
 

Attachments

Last edited:

RuleBreaker01

Banned
Joined
May 31, 2018
Messages
241
<key>KextsToPatch</key>
<array>
<dict>
<key>Comment</key>
<string>Skylake APIC fix, discovered by Pike R. Alpha</string>
<key>Find</key>
<data>
wegQD7bw
</data>
<key>Name</key>
<string>AppleAPIC</string>
<key>Replace</key>
<data>
vhcAAACQ
</data>
</dict>
Am I supposed to include the "[/B]" at the end and in the beginning of this patch? What does that mean? Lastly, how do I actually insert this information? I'm assuming copying and pasting using text edit is not kosher?
 
Joined
Aug 13, 2017
Messages
114
Motherboard
Dell Inspiron 7559
CPU
i7-6700HQ
Graphics
HD 530 (3840 x 2160)
Mobile Phone
iOS
Got my ports to work at USB 3.0 speeds. Disabled 1 USB3.0, 4 USB2.0 ports.

Still needed USBInjectAll.kext and XHCI-200-series-injector.kext for this to work. Disabled change 15 port limit to 26 in XHCI kext is config.plist

Code:
uia_exclude=HS01;HS02;HS03;HS04;HS14;SS05;USR1;USR2
What are USR1 and USR2?

Can I chose to disable whichever SS port I want? I would prefer to not disable a front port as those are the most accessible.
 
Joined
Jul 17, 2017
Messages
21
Motherboard
Alienware / Intel Z270
CPU
Intel i7-7700K
Graphics
GeForce GTX 1080, HD630, 1440p
Mac
MacBook Air, MacBook Pro, Mac mini
Mobile Phone
Android, iOS
What are USR1 and USR2?

Can I chose to disable whichever SS port I want? I would prefer to not disable a front port as those are the most accessible.
See the image in my post. I've mapped the ports(with an indicative number in green) and their corresponding HS/SS number(in purple). Choose the HSxx, SSxx based on the ports you want to disable.

The attached .aml file describes all the ports available on the board. I've excluded the rest and the one i couldn't(don't use much) fit inside the 15 port limit.

Code:
uia_exclude=HS01;HS02;HS03;HS04;HS14;SS05;USR1;USR2
With this i'm disabling USB2 ports 3,4,5,6 and USB3 port 9(HS14,SS05)
 
Joined
Aug 13, 2017
Messages
114
Motherboard
Dell Inspiron 7559
CPU
i7-6700HQ
Graphics
HD 530 (3840 x 2160)
Mobile Phone
iOS
See the image in my post. I've mapped the ports(with an indicative number in green) and their corresponding HS/SS number(in purple). Choose the HSxx, SSxx based on the ports you want to disable.

The attached .aml file describes all the ports available on the board. I've excluded the rest and the one i couldn't(don't use much) fit inside the 15 port limit.
I did look at your image. There is no reference to USR1 or USR2, so that is why I asked. I can dig deeper in your .AML file I suppose to see what those reference.
 
Top