SSDT für USB-Ausgänge unter OpenCore ohne Kext erstellen

  • Ich versuche Anhand dieser kurze Anleitung zu zeigen, wie ihr einfach unter OpenCore eine SSDT für die USB-Ausgänge erstellt.


    Was wir benötigen:

    • Hackintool
    • MaciASL
    • 2 USB-Stick (1x nur USB2.0 und 1x USB3.0)


    Erste Schritt:

    Zuerst wollen wir die USB-Ausgänge indentifizieren, welsche Nummer gehört zum welchen Ausgang, daher aktivieren wir den quirk "XhciPortLimit" Unter Kernel -> Quircks

    dann starten wir den PC neu.


    Hier öffnen wir Hackintool und weckseln zu USB Fenster, hier werden wir alle USB-Ausgänge ansehen, wenn nicht einfach mal mit dem Tool aktualisieren. Wer mag kann auch an diese Stelle iORegistryExplorer verwenden.


    Dann stecken wir in jeden Ausgang 1x USB2.0 und USB3.0 und notieren auf einem Zettel die Nummern.

    Hier an diesem Beispiel sehen wir HS04 mit USB2.0-Stick

    Und hier den selben USB-Ausgang mit USB3.0 Stick

      

    Das heißt diesen Ausgang hat die Nummer 4 und gleichzeitig besitzt USB2.0 & USB3.0, daher müssen wir diesen Ausgang nachher als USB3.0 deklarieren. Wenn dieser Ausgang nur USB2.0 hat dann müssen wir ihn als USB2.0 deklarieren


    USB3.0 = 0x03

    USB2.0 = 0x00

    Internal = 0xFF

    USB-C = 0x0A


    Am Ende habt ihr so einen Zettel, der so aussieht

    hier ist das hintere Panel für mein Asus ROG X299-E Gaming Mainboard


    Da in macOS System die Ausgänge auf 15 begrenzt sind, dann dürfen wir nur 15 Ausgänge auswählen.

    zum Beispiel habe ich mich für 3(2x), 4(2x), 5(2x), 6(2x), 7(2x), 8(2x), 11, 13, 14 entschieden, heißt es insgesamt 15.


    Zweite Schritt:

    Öffnen wir MaciASL und unter File -> New from ACPI sieht man alle DSDT und SSDT des Systems, hier suchen wir die SSDT für unsere USB-Ausgänge (meisten heißt es "A M I" unter X299 Mainboards und "xh_rvp" unter Zxxx Mainboards)

    So sieht für mein Asus X299 aus

    Bevor wir mit irgendwas anfangen, schreiben wir die Länge der SSDT auf, weil nachher diese SSDT in config.plist deaktivieren wollen und stattdessen unsere SSDT laden lassen.

    Am Anfang steht Methode GUPC, wo jeder Ausgang es zurück gibt, daher steht für alle Ausgänge.

    Hier wollen wir diese Methode für jeden Ausgang allein schreiben, deshalb löschen wir sie.

    danach löschen wir die Ausgänge, die wir nicht brauchen, bei mir sieht es so aus

    Unter jedem Ausgang steht die Methode "Method (_UPC, 0, NotSerialzed)", die die Methode GUPC zurück gibt, was wir vorher gesehen haben, deshalb ändern wir diese Methode zu

    Und zwar für jeden Ausgang, hier ist dabei zu beachten, an erste Stelle steht One und an der 2. Stelle die Codierung für deinen Ausgang, ob USB3.0(0x03) oder USB2.0(0x00) oder Internal (0xFF) ist

    Hier ist einer Ausschnitt aus mein SSDT

    danach speichern wir die SSDT als ACPI Machine Language Binary und wir geben sie irgendeine Name zum Beispiel SSDT-USB-X299.aml


    Dritte Schritt:

    wählen wir die EFI Ordner und öffnen die config.plist, hier tragen wir unsere SSDT unter ACPI ein und SSDT selber kommt in den ACPI Ordner

    Unter ACPI -> Delete deaktivieren wir die originale SSDT

    danach deaktivieren wir wieder den quirk "XhciPortLimit" und starten den PC neu.


    Am Ende Sieht so aus unter iOREg.

  • Der_Trottel Fein fein, prima Anleitung. Danke

    iMacPro1,1 im PowerMac G5 Wakü ● AsRock Z270 Taichi i7 6700k @4,7GHz ● OpenCore Big Sur & Win10 ● Style/Umbau

    MacBookPro11,1 ● Lenovo IdeaPad Z710 i7 ● OpenCore Big Sur & Win10

    Mac mini M1 16GB/512GB - iPhone 13 Pro Max 256GB

  • Danke für die Anleitung! Durch das Update auf 11.3.1 mit teilweise komplettem USB-Versagen hat das nochmal Aktualität bekommen. Der gestern Abend frisch installierte iHac (OC 0.6.9, Big Sur 11.3 auf i7-6700, GA Z170X-Gaming7, RX580) hat bis heute Morgen anstandslos funktioniert, bis wir das "Sicherheitsupdate" eingespielt haben und der Rechner sich beim Sleep-Modus verschluckt hat und neu gebootet hat...


    Ich habe aber mal eine Frage: Du schreibst "aktivieren wir den quirk "XhciPortLimit" Unter Kernel -> Quircks". Du meinst in der config.plist?


    Und: Muss man vorher USBInjectAll.kext entfernen?


    Über eine kurze Rückantwort würde ich mich sehr freuen!

  • Bei mir gingen nur meine vier USB2.0-Ports vorne am Gehäuse. Ich habe dann den quirk "XhciPortLimit" disabled. Dann gingen alle Ports.

    Die Frage ist, kann ich das so lassen? Der USBInjectAll.kext ist weiterhin aktiv.

    Komischerweise wird keiner der USB-Ports im Hackintool als aktiv angezeigt, wenn ich Sticks reinstecke.

    LG Andreas

  • Du kannst auch einen USB Injector Kext nehmen, den kannst du ganz einfach mit USBMap erstellen.


    Edit: USBInjectAll brauchst du damit nicht mehr.

    !!!KEIN SUPPORT PER PN!!!