USB2 Devices -> EHCI Routing zu AppleUSBEHCI

  • Hallo in die Runde,


    ich habe ein spezielles Problem.


    Zunächst zum IST Stand:
    Ich habe via DSDT die Anpassung von XHCI->XHC, EHC1->EH01 sowie ECH2-EH02 durchgeführt. Die neuste Version der USBInjectAll.kext kommt zum Einsatz und alle Devices werden von AppleUSBXHCIPCI bearbeitet. Die uia_exclude sind entsprechend gesetzt, es sind unter 15 Ports und es ist kein Patch der USB Treiber aktiv. Sowohl USB2 als auch USB3 Geräte werden korrekt erkannt und die Geschwindigkeit von USB3 ist korrekt. Im Prinzip entspricht alles der aktuellen Anleitung von @kuckkuck.


    Jetzt zum Problem:
    Ich verwende ein externes USB Audio Device (ein UMC204HD von Behringer). Audio an sich ist ok, es kommt aber immer wieder zu Audioprobleme (Tonartefakte, Stottern, etc.). Das Problem ist dem Hersteller bekannt und liegt am Zusammenspiel mit dem XHCI Treibern bei Apple. Am MacBook via EHCI läuft das Interface ohne Probleme und die Gegenprobe - ein Focusrite Scarlett 2i2 von einem Freund zeigt das gleiche Verhalten am Hacki.


    Aus meiner Sicht müssten korrekterweise die USB2 Ports, bzw. USB2 Devices and USB3 Ports zum AppleUSBEHCI geroutet werden. Der Kext FakePCIID_XHCIMux.kext von RehabMan sollte nach der Beschreibung auf GitHub diese Funktion übernehmen. Er schreibt dazu folgendes:


    "... The effect is to route any USB2 devices attached to the USB2 pins on the XHC ports to EHC1. In other words, handle USB2 devices with the USB2 drivers instead of the USB3 drivers (AppleUSBEHCI vs. AppleUSBXHCI)."


    Aber es hakt im Zusammenspiel und die allgemeine Dokumentationslage ist doch recht dünn. Mit dem Kext sind bis auf einen plötzlich alle Ports weg (erstes Bild) aber der Treiber stimmt -> ohne den Kext sind alle Ports da, aber mit dem bekannten Standart, das alle Ports via AppleUSBXHCIPCI verwaltet werden (zweites Bild).


    Kennt sich jemand genauer damit aus und kann mit etwas Hilfestellung leisten?


    Gruß Joe


  • Hey @rubenszy


    Vielleicht bin ich gerade ganz auf dem falschen Pfad, aber der Kext beschränkt sich doch auf den AppleUSBXHCI Driver und genau den möchte ich für die USB2 Ports eben nicht verwenden. Oder stehe ich gerade auf dem Schlauch?



    Gruß Joe

  • USB 2.0 läuft immer was meist erst aktiviert werden muss ist USB 3.0, was du mit diesem kext auch machst.
    Wichtig ist noch der DSDT Patch XHC1 to XHC

    Einmal editiert, zuletzt von rubenszy ()

  • Es geht hier aber nicht um USB 2.0 Funktionalität sondern um den Controller über welchen diese Ports geroutet werden. Dabei ist EHCI häufig zuverlässiger als XHCI weshalb Joe's Idee hier ein guter Ansatz ist.
    @JoeHidden Wichtig ist dass jeglicher anderer USB Patch entfernt ist. Dann brauchst du FakePCIID_XHCIMux und natürlich den FakePCIID, beide funktionieren zuverlässig aus S/L/E. Ein Port Limit Patch darf nicht aktiviert sein und ein anderer Kext wie zb USBInjectAll oder GenericUSBXHCI nicht installiert/aktiviert sein! In der DSDT sind folgende Patches nötig:
    - EHC1 --> EH01
    - EHC2 --> EH02
    - XHC1 --> XHC
    Ich bitte dich auch einmal hier vorbei zu schauen und deine BIOS Settings zu checken: https://www.hackintosh-forum.d…6-USB-Port-L%C3%B6sungen/


    Falls FakePCIID_XHCIMux bei dir wirklich nicht zuverlässig funtkioniert, können wir die Windows Versions Prüfung in der DSDT modifizieren um die richtige Controller Zuweisung zu bekommen. Dazu aber mehr wenn es wirklich so weit ist.

    Du kommst bei deinem Problem nach dem unendlichsten Versuch nicht weiter? Dann schreib mir eine Nachricht für eine TeamViewer Sitzung. Nur wenn es gar nicht mehr weiter geht!
    Alle anderen Fragen und Anliegen gehören ins Forum.

    Einmal editiert, zuletzt von al6042 ()

  • Ich freue mich wirklich das Du Dir die Zeit nimmst und versuchst zu helfen @rubenszy. Das meine ich absolut ernst!


    Aer ich muss die Frage stellen: hast Du mein Text gelesen? Auch wenn Du meinst, das USB2 immer geht, habe ich genau hier das Problem.
    Sowohl Deinen ersten Tipp uia_exclude, als auch den zweiten Hinweis DSDT-Patch XHC hatte ich doch bereits in meinem ersten Satz geschrieben.



    Zunächst zum IST Stand:
    Ich habe via DSDT die Anpassung von XHCI->XHC, EHC1->EH01 sowie ECH2-EH02 durchgeführt. Die neuste Version der USBInjectAll.kext kommt zum Einsatz und alle Devices werden von AppleUSBXHCIPCI bearbeitet. Die uia_exclude sind entsprechend gesetzt, es sind unter 15 Ports und es ist kein Patch der USB Treiber aktiv. Sowohl USB2 als auch USB3 Geräte werden korrekt erkannt und die Geschwindigkeit von USB3 ist korrekt. Im Prinzip entspricht alles der aktuellen Anleitung von @kuckkuck.


    Mittlerweile bin ich soweit, das ich mit dem FakePCIID_XHCIMux.kext zumindest 2 Ports als reine USB2 Ports am laufen habe und parallel zwei Ports als reine USB3 Ports. Das ist schon mal ein Schritt in die richtige Richtung aber das Handover von XHCI zu EHCI (also USB2 Device im USB3 Port) geht leider nicht. Mal sehen...

  • XHCI


    XHCI und XHC1 ist aber von dem Namen in der DSDT her ein Unterschied. Gib außerdem mal bescheid ob in deiner DSDT XHC oder XHC_ geschrieben steht.

    Du kommst bei deinem Problem nach dem unendlichsten Versuch nicht weiter? Dann schreib mir eine Nachricht für eine TeamViewer Sitzung. Nur wenn es gar nicht mehr weiter geht!
    Alle anderen Fragen und Anliegen gehören ins Forum.


  • Kext wie zb USBInjectAll oder GenericUSBXHCI nicht installiert/aktiviert sein!


    Ah, ok. Ich hatte es so verstanden, das der USBInjektALL trotzdem notwendig wäre. Ok, ich probiere das mal @Kuckuck. Danke!


    Nachtrag: Genau so habe ich es in der DSDT angepasst.


    EHC1 --> EH01
    EHC2 --> EH02
    XHC1 --> XHC

  • Nein, hier wird das Problem sein. USBInjectAll macht eher das Gegenteil verglichen mit FakePCIID_XHCIMux. Unbedingt entfernen und die uia_excludelist ist für FakePCIID auch nicht nötig. Und bitte keine Vollzitate ;) :thumbup:


    Edit: Immernoch die gleiche Frage:

    Gib außerdem mal bescheid ob in deiner DSDT XHC oder XHC_ geschrieben steht.

    Du kommst bei deinem Problem nach dem unendlichsten Versuch nicht weiter? Dann schreib mir eine Nachricht für eine TeamViewer Sitzung. Nur wenn es gar nicht mehr weiter geht!
    Alle anderen Fragen und Anliegen gehören ins Forum.

  • @Kuckuck XHC steht in der DSDT

  • ACPI Namen haben immer 4 Buchstaben. Deshalb muss es auch XHC_ heißen. Bei einer config.plist in Plist Editor wäre das dann (in HEX) 5848 435f oder eben WEhDXw== im Text Editor.
    Für den Plist editor also Hex benutzen, wenn du faul bist machs so im Terminal:

    Code
    1. echo -n XHC_|xxd
    2. 0000000: 5848 435f XHC_

    Du kommst bei deinem Problem nach dem unendlichsten Versuch nicht weiter? Dann schreib mir eine Nachricht für eine TeamViewer Sitzung. Nur wenn es gar nicht mehr weiter geht!
    Alle anderen Fragen und Anliegen gehören ins Forum.

  • Clover DSDT Patch XHCI to XHC


    Comment Find Replace
    XHCI to XHC 58484349 5848435F
  • Genau, dort steht es ja auch mit XHC_ geschrieben ;)

    Du kommst bei deinem Problem nach dem unendlichsten Versuch nicht weiter? Dann schreib mir eine Nachricht für eine TeamViewer Sitzung. Nur wenn es gar nicht mehr weiter geht!
    Alle anderen Fragen und Anliegen gehören ins Forum.

  • @kuckkuck
    Die Info mit den 4 Buchstaben irritiert mich auch ein wenig.
    Jedenfalls wenn es um Devices geht.
    Immerhin gibt es auch den MacIASL Patch "USB - Device Renames for OSX 10.11" der folgendes beinhaltet:

    Code
    1. into device label EHC1 set_label begin EH01 end;
    2. into device label EHC2 set_label begin EH02 end;
    3. into device label XHC1 set_label begin XHC end;
    4. into_all all code_regex EHC1 replaceall_matched begin EH01 end;
    5. into_all all code_regex EHC2 replaceall_matched begin EH02 end;
    6. into_all all code_regex XHC1 replaceall_matched begin XHC end;

    Gruß
    Al6042

    Keine Unterstützung per PN oder Pinnwand... Eure Anfragen gehören ins Forum, nicht in mein Postfach!

  • Ok, hab ich angepasst.


    Wenn ich nur mit der FakePCIID_XHCIMux & FakePCIID boote ist USB2 ok. USB3 fehlt.


    Zu den BIOS Einstellungen. Die zwei Handover Values sind so wie verlinkt. Der XHCI steht aber auf Smart Auto, da bei Enabled das BIOS vom Board die EHCI Controller deaktiviert - was ja das Ziel untergaben würde... ;)


    Dementsprechende führt der Wechsel auf XHCI Enable im Bios zum umgekehrten Bild. USB3 ok - USB2 fehlt.


    Gruß Joe

  • @al6042 Im ACPI Spec steht das alles genauestens beschrieben, jedoch auf Kosten der Übersichtlichkeit. Nach meinem Wissen sollen ACPI Namen, Knoten und Vendor IDs 4 Buchstaben (A-Z großgeschrieben) oder _ besitzen. Wie sich das benutzen von nur 3 Ziffern auswirkt kann ich nicht genau sagen. Strengstens nach ACPI Spec müsste es aber XHCI/XHC1 --> XHC_ heißen, um den Grundsätzen zu folgen. ACPI Spec gibts im Internet, hier ein paar Regeln zu Knoten und zu ACPI IDs.


    @JoeHidden, gibt es bei dir auch die Möglichkeit "Auto" im Bios?

    Du kommst bei deinem Problem nach dem unendlichsten Versuch nicht weiter? Dann schreib mir eine Nachricht für eine TeamViewer Sitzung. Nur wenn es gar nicht mehr weiter geht!
    Alle anderen Fragen und Anliegen gehören ins Forum.

  • @kuckkuck Ja, Auto geht auch. Macht zumindest äußerlich erst mal keinen Unterschied.


    Kurz zum aktuellen Stand. Ich habe gestern noch etwas geforscht.

    • Ich habe noch einmal validiert das die Adresse XHCI Controller im FakePCIID_XHCIMux 0x8d31/0x8086 korrekt vorhanden ist. Das trifft zu.
    • Von den zwei EHCI Controllern werden auch zwei erkannt, allerdings nur einer mit Anschlüssen. Da muss ich aber nochmal genau die Zuordnung vom Board studieren.
    • Nur mit der FakePCIID_XHCIMux & FakePCIID boote ist entweder USB2 oder USB3 vorhanden / je nach XHCI Bios Setting.


    Für den produktiven Betrieb habe ich deshalb zusätzlich nochmal die USBInjektAll (nur temporär Kuckuck - nicht schlagen) aktiviert. In Kombination der beiden Kexte habe ich einen USB2 Hub und einen USB3 Hub im System und mittels Hardware Hubs bekomme ich alle Geräte auf den korrekten Controllern ans rennen.


    Positiv ist, das in der Konstellation das USB Audio Interface nun perfekt via EHCI funktioniert- der Weg ist also der richtige... ;)
    Negativ ist, das die USB3 Ports nicht abwärtskompatibel sind, was für den Moment erstmal ok ist.


    Ich versuche nachher mal die einzelnen Adressen der Controller und das Hardwarelayout nachzusehen. Dann sehen wir weiter... ;)


    Gruß
    Joe

  • Dann wünsche ich dir erstmal noch erfolgreiches Testen :thumbup:
    Ansonsten empfehle ich dir beim jetzigen Stand die Windows Versions Prüfung bei Darwin in der DSDT zu modifizieren. Dadurch sollten wir Abwährtekompatibilität und USB2 auf EHCI bei deinem Hackintosh einrichten können. Guide dazu habe ich hier im entsprechenden Spoiler verfasst: USB Port Lösungen/FAQ

    Du kommst bei deinem Problem nach dem unendlichsten Versuch nicht weiter? Dann schreib mir eine Nachricht für eine TeamViewer Sitzung. Nur wenn es gar nicht mehr weiter geht!
    Alle anderen Fragen und Anliegen gehören ins Forum.

  • Ok, das sehe ich mir an. Danke nochmal!

  • Aber bitte immer schön die DSDT backupen, die Methode ist nicht gerade die am weitesten verbreitetste Methode. Wir müssen geg. ein wenig mit _OSI Simulationen rumspielen um eine passende Windows Version zu finden, die für dein System passt. Außerdem brauchst du für diese Methode kein FakePCIID_XHCIMux oder anderen USB Kext! Alle vorgänge laufen direkt durch das ACPI.

    Du kommst bei deinem Problem nach dem unendlichsten Versuch nicht weiter? Dann schreib mir eine Nachricht für eine TeamViewer Sitzung. Nur wenn es gar nicht mehr weiter geht!
    Alle anderen Fragen und Anliegen gehören ins Forum.