In letzter Zeit häufen sich die Probleme mit USB 2.0 und vorallem 3.0 unter Sierra und El Capitan. Apple hat seit El Capitan ein Port-Limit in ihr OS eingebaut welches die Nutzung von mehr als 15 Schnittstellen gleichzeitig verbietet. Manche Kexts sollen dieses Problem beheben aber selbst diese haben nur noch eine geringe Erfolgsrate. Hier ist ein Guide wie jeder von euch mit etwas Zeit, alle USB Ports seines Hackintoshs zum laufen bringen kann. Diese Methode funktioniert nach Updates immernoch. Das heißt: Einmal gemacht und für lange Zeit werden eure USB Ports keine Probleme mehr machen. Es gibt bereits Anleitungen in diesem Forum welche das gleiche Vorgehen erklären. Ich werde aber versuchen diese Anleitung so einfach und nachvollziehbar wie möglich zu gestalten damit sie jeder selber anwenden kann.
Vorwort:
Seit Sierra häuft sich die Benutzung eines KextPatches von RehabMan welcher das gegebene USB Limit anhebt. Der Patch funktioniert, doch RehabMan selber warnt vor der Benutzung.
Hier seine Worte:
IMPORTANT! The port limit patch should not be used as a permanent solution. There is now clear evidence that using it causes other data beyond what is evidently a fixed size array to be clobbered. The result is strange behavior by the USB drivers when the port limit is exceeded.
Die hier präsentierte Lösung benutzt nicht diese Methode und ist somit komplett ungefährlich. Ich kann nur zu dieser Methode raten da sie zukunftssicher und funktionell ist, sowie für allerhand Bootloader wie Ozmosis, Clover und weiteres funktioniert.
Anleitung:
1. Um die USB Ports zum laufen zu bewegen, benutzen wir USBInjectAll.kext. Diesen Kext legen wir auf die EFI Partition. Unter Clover ist das der Ordner EFI/CLOVER/kexts/other und unter Ozmosis der Ordner EFI/Oz/Darwin/Extensions/Common. Zur Not geht die Nutzung auch über eine Installation mittels KextUtility nach System/Library/Extensions. Danach machen wir einen Neustart. Der Kext ist auch in dem unten angehangen Paket enthalten.
Benutzer von X99 Boards müssen zudem die XHCI-x99-injector.kext installieren, damit USBInjectAll funktioniert.
Benutzer von 200-series Boards sollten eventuell die XHCI-200-series-injector.kext installieren. Die Kernel Extension kann bei Problemen helfen.
Beide Kext lassen sich ebenfalls im Paket finden (Achtung, eventuell veraltete Dateien!
2. Im Bios müssen wir nun folgende Settings überprüfen:
-Der XHCI Mode muss auf Enabled oder Auto stehen (nicht Smart-Auto)
-XHCI und EHCI Hand-off müssen aktiviert sein
3. Nach dem Neustart öffnen wir jetzt den IORegistryExplorer. (auch im Paket) Dieser Abschnitt wird uns präsentiert:
Nun müssen wir den richtigen Bereich im Explorer finden. Es geht um den XHC@14 Controller. Diesen findet ihr ganz leicht wenn ihr einfach "xhc" auf der Tastatur drückt. (Nicht das Suchfeld benutzen!) Jetzt wird uns in etwa das hier präsentiert:
4. Als nächstes brauchen wir einen USB 2.0 Stick. Außerdem erstellen wir uns ein neues Textdokument zum mitschreiben.
Jetzt der wichtige Teil: Der USB 2.0 Stick wird nun nach und nach einmal in jeden Port gesteckt, USB 2.0 und 3.0 Ports! Jedes mal wenn wir den Stick in den Hacky stecken, sollte in einem der HSXX Ordnern eine grüne Schrift aufleuchten. Hier leuchtet zum Beispiel grüne Schrift in HS01 auf:
Wichtig ist die Bezeichnung HS01! Diese brauchen wir für alles weitere und notieren sie deshalb in unser Textdokument.
(Falls keine Schnittstelle aufleuchtet oder erscheint (manchmal auch in schwarzer Schrift), hilft häufig ein Neustart des Programms oder ein "aus- und wieder einstecken" des Sticks. Wenn dann immernoch nichts aufleuchtet und der Stick nicht erkannt wird, ist der benutzte Port deaktiviert und wird im Laufe der Anleitung erst aktiviert --> überspringen)
Was sagt uns die Bezeichnung? Wenn HS01 grün aufleuchtet, heißt das, dass HS01 ein aktiver Port ist denn hier ist die Problematik:
In OSX dürfen nur 15 USB Schnittstellen aktiv sein. Es gibt HSXX Schnittstellen (USB 2.0) und SSXX/SSPX Schnittstellen (USB 3.0) (XX steht für eine Zahl). In der Liste im IORegistryExplorer sind vorallem HSXX und vielleicht ein paar SSPX Schnittstellen gelistet. Doch nicht alle dieser gelisteten Schnittstellen besitzen auch Zugang zu einem echten Port an unserem Hacky. Im Laufe des Prozesses werden wir sehen, dass manche Ports im IORegistryExplorer nicht aufleuchten werden, egal wo wir einen USB Stick anstecken. Diese Schnittstellen besitzen keinen echten Port am Hacky und werden/können dadurch nie aufleuchten. Sie blockieren aber Platz in der 15-Port Liste für andere, echte Ports! Deswegen müssen wir die unbenutzten Ports entfernen.
Nachdem wir mit dem USB 2.0 Stick einmal in jedem Port waren, werden manche HS-Ports aufgeleuchtet haben und andere nicht. Jeder Port der einmal aufgeleuchtet hat steht jetzt hoffentlich in unserem Textdokument. Jetzt müssen wir jeden Port "excluden", der nicht aufgeleuchtet hat mittels dem bootarg: uia_exclude=HSXX;HSXX;HSXX
Die Ports die entfernt werden sollen, werden durch einen Strichpunkt getrennt. Es gibt HS01-HS14. Zudem kommen USR1 und USR2 immer in die Liste (außer sie werden benutzt und angezeigt, was nur sehr selten der Fall ist).
Beispiel für das Textdokument + daraus folgendes bootarg:
Dieser Code ergibt sich also durch die Ports, die nicht aufleuchten. Der Code muss jetzt als Bootarg gesetzt werden.
Das sieht dann unter Ozmosis so:
(Screenshot aus PlistEdit Pro)
Und unter Clover so aus:
(Screenshot aus CloverConfigurator)
5. Jetzt machen wir einen Neustart und unter Ozmosis einen NVRam-Reset (indem wir ins Bios gehen und dort Win+Alt+P+R drücken).
Wenn wir jetzt wieder den IORegistryExplorer öffnen, sollte das ganze sich verändert haben. Die Ports in der uia_excludelist sollten nun verschwunden sein, z.B so:
Wir sehen jetzt neue/mehr SSXX oder SSPX Ports. Das sind wie bereits erwähnt, USB 3.0 Schnittstellen.
6. Und jetzt kommen wir in die Zielgerade! Mit einem USB 3.0 Stick gehen wir jetzt nach und nach in alle USB 3.0 Ports die der Hacky hat und notieren uns alle SSXX/SSPX Schnittstellen die aufleuchten in das Textdokument.
Alle Schnittstellen die nicht aufleuchten ergänzen wir jetzt wieder in das Bootarg.
Wenn z.B nur SSP2 nicht aufleuchtet (d.h alle sichtbaren SSXX/SSPX -Ports leuchten auf außer SSP2) sieht das ganze dann
unter Ozmosis mit weiteren Bootargs so:
7. Ein letzter neustart und unter Ozmosis einen NVRam-Reset. Jetzt sollte alles richtig funktionieren!!! Das ganze können wir mit dem Programm Blackmagic Disk Speed Test testen, indem wir dort die Geschwindigkeit eines USB 3.0 Sticks testen, von dem wir in etwa die mb/s kennen. Ich kann euch sagen das wenn der Stick in USB 3.0 Ports über 30mb/s hat, dass der USB 3.0 Port richtig läuft!
So und das wars. Ich weiß die Anleitung ist etwas länger, aber dafür ausführlich, anschaulich und hoffentlich auch für "Newbies" geeignet! Ich wünsche euch viel Glück!