Kext as Kext can oder USB 3.0 ohne USBInjectAll

  • @andreas_55
    Jein.
    Deine Umwandlung ist korrekt. Die PCI Register sind als 32 bit Worte organisiert.
    Das Wort, das die Klasse enthält, wird bei diesem Chip als 0x000C0330 gelesen. Allerdings bezeichnen nur die unter 24 Bit also 0C0330 die Klasse. Die obersten 8 Bit, die 00, stammt aus von einem anderen Feld, einer Revision ID und werden ausgeundet, haben also nichts mit der 00 am Endes des IPClassMatches zu tun.


    Der IOClassCode ist auch ein 32 Bit Wert. Organisatorisch ist die 0C die höchste Hierarchiestufe, da geht nix drüber. Sie gehört also im Verständnis des "westlichen" Raums ganz nach links. Da wir aber nur 24 Bit haben, bleiben am rechten Rand 8 Bit übrig und die füllt man wie sooft wenn man nicht weiß was man tun soll oder was da kommen wird mit Nullen. Nebenbei gibt es einem noch die Möglichkeit ggf. eine weitere Hierarchiestufe einzubauen.
    IOClassMatch = (Register & 0x00FFFFFF) << 8.


    @Doctor Plagiat
    Du hast ein Z170 Board und dessen Controller ist der mit der Id 0xa12f8086. Den verwendet Apple auch und deshalb ist er in der AppleUSBXHCIPCI mit einem eigenen Treiber nämlich AppleUSBXHCISPT vertreten. das ist also ok und sollte funktionieren.
    Wenn die 14+1 Ports angezeigt werden greift die erste (in meinem Kext) Personality nicht.
    Lade doch mal deine Info.plist hoch.
    Zusätzlich brauchen wir noch, den SMBIOS Namen, den dein Rechner verwendet und wie das XHCI Gerät heisst. Das ist der Name des Devices über den Ports in IORegistryExplorer. Bei meinem Beispiel XHC.

    Einmal editiert, zuletzt von Brumbaer ()

  • Ich habe den Kext jetzt noch mehr verschlimmbessert, es will aber nicht funktionieren.
    SMBIOS ist iMac 17,1. Das hatte ich aber schon geändert. Der Name des Devices ist XHCI. Vielleicht habe ich auf bei port-Data was falsch gemacht. Bei den Ports HS13 und 14 habe ich dort 0d und 0e eingetragen, da 13 und 14 für SS03 und SS04 vergeben sind.


    Info.plist

    MfG, docplag



    2 Mal editiert, zuletzt von Doctor Plagiat ()

  • Bitte verwende nicht de.brumbaer, ich möchte keine Fragen beantworten müssen, über Dinge die ich nicht geschrieben habe :)
    Das ist nur ein Name. Es muss keine Webseite unter dem Namen existieren. Du kannst genau so gut doctor.plagiat.USBGAZ170M verwenden.


    Du hast in der IOKitPersonality GA-Z170M-D3H unter
    IONameMatch den Wert XHC eingetragen. Dein Gerät heißt aber ........ Hier (und in der Info.plist) passendes eintragen. Dann sollte es funktionieren.
    Die zweite Personality für den Treiber, kannst du löschen, da der Treiber für diesen Controller in AppleUSBXHCIPCI enthalten ist.

  • Erstmal vielen Dank an dieser Stelle.
    Sorry, den String “Bundle identifier” habe ich geändert. Da musst du dir also keine Sorgen machen über irgendwelche Anfragen. Fragen kommen also nur noch von mir. :D


    Den Wert XHC in IONameMatch habe ich nicht eingetragen, der stand so drin. Weil das Devices in der DSDT bei mir auch XHC heißt, dachte ich das ist so ok.
    Wie du siehst guckt da ein Laie, der sich das erste Mal damit auseinander setzt , wie ein Schwein in ’s Uhrwerk.
    Was muss da jetzt rein ? XHCI ?


    EDIT: Ich habe auch die info.plist mit einem geänderten Bundle identifier ausgetauscht.

    MfG, docplag



    Einmal editiert, zuletzt von Doctor Plagiat ()

  • Du hast geschrieben, dass der Name in IORegistryEditor XHCI ist.


    Wenn er in der DSDT XHC ist, dann wird er irgendwo umgepatched. Entweder in einer SSDT oder in Clover oder sonstwo.
    Finde den Patch und nimm ihn raus. Es darf auch kein anderes USB Kext mehr aktiv sein, USBInjectAll oder X99-USB irgendwas.


    Der Name in IORegistryEditor ist der unter dem der Service gestartet wurde und wenn nix gepatched wird ist es der, der in der DSDT steht.


    Alternativ verwende den den du im IORE siehst. Ist nicht "perfekt", aber sollte funktionieren.

  • Ups, das mit XHCI war ein Schreibfehler, hatte ich noch gar nicht gemerkt.Falls ich das nicht hinkriege, habe ich meine USB-SSDT.aml, die funktioniert perfekt. Ich wollte nur deine sehr gute Anleitung testen und stelle mich wahrscheinlich einfach nur doof an.
    Hier noch ein IOReg Screen oder doch gleich das ganze ioreg-File. Aber wenn du da keine Lust drauf hast, ist das auch ok.



    iMac17,1_docplag.ioreg.zip


    EDIT: Ich bin nochmal ganz genau der Anleitung gefolgt. Ich kann keine Fehler festellen, aber möchte auch keine ausschließen. Es ist nicht ein einziger USB-Kext im Other-Ordner und keine USB-KextToPatch-Einträge vorhanden. Es funktioniert leider nicht.
    Falls noch andere User diese Methode ausprobiert haben, immer her mit dem Ergebnis, ob positiv oder negativ.

    MfG, docplag



    Einmal editiert, zuletzt von Doctor Plagiat ()

  • Ok,
    ich dachte vielleich liegt es an Sierra, also habe ich von einem Sierra Stick mit iMac17,1 gebootet - ging.


    Im Anhang das Kext, das ich verwendet habe.


    Leg es doch bitte in den Other Ordner deiner EFI Partition und teste.

  • Zunächst mal vielen dank an @Brumbaer,s tolle Anleitung, klasse Arbeit.


    Bei mir funktionierts auch nicht so wie ich es gerne hätte, hab auch alle USB relevantes raus geschmissen, den erstellten kext rein.
    Kann mal einer mein info.plist kontrollieren ob ich eventuell ein Fehler drinnen hab?


    Grus Coban


    Edit: Noch was bitte, wie zum Geier bringe ich den PortLimit Patch zum laufen Ohne den USBInjectAll.kext?


    Edit 2:
    Also ich weiss zwar immer noch nicht wo ich den Fehler gemacht habe,
    jetzt nahm ich den Kext von vorpost vom Brumbaer und erweiterte ihn um Port HS06, passte das ganze zu meiner Board USBConnector Nummern an.
    Siehe da, es funzt! :thumbsup:


    Die Sache um den Port HS11 (Bluetooth Anbindung) verstehe ich nicht so ganz, den haben wir doch nirgends definiert taucht aber auf.



    Info.plist A (diesen hab ich selber nach Anleitung gebastelt, funktioniert nicht)


    Info.plist B (Funktioniert)


    die hier sind mit info.plist A
    .



    die hier sind mit info.plist B
    .

     MSI-Z590Pro Wifi | Intel® Core™ i9-10900k CometLake | 32GB DDR4 RAM | Radeon RX 570 Red Devil | Nvme WD Black SN750 1TB | BCM94360NG | OpenCore aktuell / Catalina / BigSur / Monterey / Ventura Beta / Win 10 Pro / Win 11 Pro / Ubuntu / ChromeOS

     MSI-B150M Mortar | Intel® Core™ i7-6700 Skylake | 64GB DDR4 RAM | Intel® HD Graphics 530 | Samsung NVMe 960 EVO / 1x2 TB HDD | BCM943602BAED DW1830 | OpenCore aktuell / Catalina / BigSur / Monterey / Win 10 Pro / Ubuntu

     Lenovo S340-15IIL | Intel® Core™ i7-1065G7 IceLake | 12GB DDR4 RAM | Intel® Iris Plus Graphics G7 | Nvme Intel SSDPEKNW512G8L/SSD Samsung 256GB | BCM94360NG | OpenCore aktuell / Catalina / BigSur / Monterey / Ventura Beta / Win 10 Pro / Win 11 Pro / Ubuntu / ChromeOS


    " Chasch nöd s Föifi und s Weggli ha."

    2 Mal editiert, zuletzt von cobanramo ()

  • @Brumbaer
    Ich hab ja auch ein Asus Board uns die letzte Kext läuft mit High Sierra. Sierra geht auch.

  • Im Anhang das Kext, das ich verwendet habe.
    Leg es doch bitte in den Other Ordner deiner EFI Partition und teste.


    Leider auch nicht. Ich habe den/die/das kext so genommen wie er war und bekomme nach Neustart wieder blos 14 + 1.
    Dann habe ich die ports nochmal an mein Board angepasst und festgestellt dass der port-count auf 26 steht, aber auch das hat nicht geholfen.
    Ich hatte bis jetzt immer nur USBInjectAll im Einsatz und den habe ich gelöscht. USB-KextToPatches sind auch nicht mehr anwesend.


    Ich danke dir ganz dolle für die Mühe und Zeit, die du extra für mich aufgebracht hast. Verfolge die Sache einfach nicht mehr, vielleicht liegt ja der Fehler ganz woanders.
    Ich hatte in letzter Zeit gelegentlich USB-Probleme und irgendwann funktionierte die exclude-Liste nicht mehr und da bin ich auch nicht dahinter gekommen warum das so ist. Ich will das jetzt nicht bis ins Deatail schildern. Auf der Suche nach dem "warum" bin ich dann auf GiHub auf ein USB-SSDT.command - script gestoßen, welches mir eine USB-SSDT erstellt hat. Die funktionierte auf Anhieb, ebenfalls ohne USBInjectAll.

    MfG, docplag



  • @Doctor Plagiat


    Eine Anmerkung, da mich das beim ersten Lesen selbst verunsichert hatte: Der port-count Eintrag entspricht, wie beschrieben, der höchsten verzeichneten Portnummer. Damit lässt sich aber nicht das nebenbei angesprochene Port Limit von 15 Ports umgehen, da dieses in den Treibern im AppleUSBXHCIPCI Binary fest definiert ist, also nicht auf port-count reagiert. Mit dieser Dummy Kext können beliebig viele Ports definiert werden, auch mehr als 15, wenn vorhanden, jedoch lädt der Treiber nur die ersten maximal 15 davon. Wem das nicht ausreicht, der kann:
    weiterhin auf den Port Limit Raiser Patch (Clover "KextsToPatch" / Perl / etc - von Entwicklern immer wieder als riskant eingestuft) setzen, um mehr als 15 der definierten Ports ansprechen zu können, oder
    nicht explizit benötigte Ports (freie interne Header / freie Mainboard Buchsen / bei USB 3.0 Typ A Ports wahlweise auch entweder den 2.0 (HS) oder 3.0 (SS) Teil, wenn man nur den jeweils anderen braucht) nicht in die Info.plist eintragen


    Mag ja sein das ich das missverstanden habe, diese Anleitung bring den USB 3 ans laufen ohne USBInjectAll.kext und hebelt den Portlimit nicht oder?


    Gruss

     MSI-Z590Pro Wifi | Intel® Core™ i9-10900k CometLake | 32GB DDR4 RAM | Radeon RX 570 Red Devil | Nvme WD Black SN750 1TB | BCM94360NG | OpenCore aktuell / Catalina / BigSur / Monterey / Ventura Beta / Win 10 Pro / Win 11 Pro / Ubuntu / ChromeOS

     MSI-B150M Mortar | Intel® Core™ i7-6700 Skylake | 64GB DDR4 RAM | Intel® HD Graphics 530 | Samsung NVMe 960 EVO / 1x2 TB HDD | BCM943602BAED DW1830 | OpenCore aktuell / Catalina / BigSur / Monterey / Win 10 Pro / Ubuntu

     Lenovo S340-15IIL | Intel® Core™ i7-1065G7 IceLake | 12GB DDR4 RAM | Intel® Iris Plus Graphics G7 | Nvme Intel SSDPEKNW512G8L/SSD Samsung 256GB | BCM94360NG | OpenCore aktuell / Catalina / BigSur / Monterey / Ventura Beta / Win 10 Pro / Win 11 Pro / Ubuntu / ChromeOS


    " Chasch nöd s Föifi und s Weggli ha."

  • Fast richtig. Die info.plist bringt USB2 und USB3 ohne USBInjectAll zum Laufen. Und richtig, dass Portlimit wird nicht ausgehebelt.

    MfG, docplag



  • @cobanramo


    Deine Info.plist hat als Model iMac18,3 eingetragen, aber du hast wohl einen iMac17,1 - was man daran sieht, dass die andere Version mit dem model iMac17,1 läuft.

  • Heilige bimbam, ich könnt schwören das ich das geändert hatte, ich hatte mehrere info.plist auf dem Schreibtisch, muss wohl was durcheinander gebracht haben.
    Danke dir Brummbaer, ich teste mal weiter.


    Gruss Cobanramo

     MSI-Z590Pro Wifi | Intel® Core™ i9-10900k CometLake | 32GB DDR4 RAM | Radeon RX 570 Red Devil | Nvme WD Black SN750 1TB | BCM94360NG | OpenCore aktuell / Catalina / BigSur / Monterey / Ventura Beta / Win 10 Pro / Win 11 Pro / Ubuntu / ChromeOS

     MSI-B150M Mortar | Intel® Core™ i7-6700 Skylake | 64GB DDR4 RAM | Intel® HD Graphics 530 | Samsung NVMe 960 EVO / 1x2 TB HDD | BCM943602BAED DW1830 | OpenCore aktuell / Catalina / BigSur / Monterey / Win 10 Pro / Ubuntu

     Lenovo S340-15IIL | Intel® Core™ i7-1065G7 IceLake | 12GB DDR4 RAM | Intel® Iris Plus Graphics G7 | Nvme Intel SSDPEKNW512G8L/SSD Samsung 256GB | BCM94360NG | OpenCore aktuell / Catalina / BigSur / Monterey / Ventura Beta / Win 10 Pro / Win 11 Pro / Ubuntu / ChromeOS


    " Chasch nöd s Föifi und s Weggli ha."

  • Bzgl. des Port Limit Patches.


    Der Port Limit Patch ist unabhängig von dieser Sache.


    Unter HS genügt der Port Limit Cache um alle Ports zur Verfügung zu stellen - man brauch dann gar kein Kext mehr - es sei denn der Controller wird von MacOS nicht unterstützt.

  • Hi Brumbaer,


    Glückwunsch zu Kext as Kext can!! Ich hab mal versucht Deinen fertigen
    Kext einfach mal auf mein ASUS Prime X299 Deluxe mit SMBIOS iMAC17,1 los
    zu lassen und ich muss sagen 1A USB 3.0!!!


    Ich versuche nun das ganze nachzuvollziehen und meinen eigenen board-
    spezifischen Kext zu bauen. Leider sind meine IORegistry Einträge anders
    als beim strix... und da komme ich mit meinem Verständnis ins Wanken
    (siehe Bilder im Anhang) ... Des Weiteren erscheint kein Dreieck wenn
    ich einen USB 2.0 Stick in die verschiedenen 3.0 Buchsen stecke nachdem ich ohne USBkext gebootet habe.. , was mache ich falsch?


    Kannst Du mir etwas unter die Arme greifen? Das wäre wirklich sehr nett ! Dein USBKext ist für SMBIOS iMac17,1 und damit für alle X299/Skylake-X Boards wirklich fundamental!


    Vielen Dank im Voraus!


    KGP

  • Du kopierst das Kext und ersetzt in der ersten IOKitPersonality den SMBIOS Name und den Geräte-Namen (findest du im IORegistryEditor).
    Dann änderst du die PortNamen, Portnummern und die Anschlüsse. Wenn du die Anschlüsse nicht kennst nimm 255.


    Damit die Dreiecke erscheinen muss der Treiber zum Controller passen. Welchen USB Controller hat dein Board ?
    Ich vermute mal, dass er von macos nicht unterstützt wird, also brauchst du einen Treiber dafür.
    dafür ist der zweite IOKitPersonality Eintrag da.
    Wie man die Controller Id und den passenden Treiber findet und wo man sie einträgt, steht in meinem zweiten Post.

  • Vielen Dank für deine rasche Antwort... ich weiss nicht welcher USB controller genau in dem Board verbaut ist... Ich schau mal wie ich an Hand Deiner Posts irgendwie weiterkomme...


    nach mals vielen Danke für Deine Ratschläge,


    KGP

  • ich weiss nicht welcher USB controller genau in dem Board verbaut ist...


    "DPCIManager" ist dein Freund, der sagt dir das inkl. aller wichtigen Adressen.

    ASUS PRIME X299-DELUXE i9-9940X • DDR4 64GB • SSD 960 PRO 1TB • Thunderbolt3 Titan Ridge • 2x AMD Radeon RX Vega 64 • BMD Intensity Pro 4K

    ASUS WS X299 SAGE/10G i9-10980XE • DDR4 64GB • SSD 970 PRO 1TB • Thunderbolt3 Titan Ridge • 2x AMD Radeon VII • BMD DeckLink 4K Extreme 12G


    Ordnung ist die primitivste Form von Chaos. (Hans-Jürgen Quadbeck-Seeger)

  • Wie in der zweiten Post gezeigt, kann man die Controller ID im IORegistryEditor sehen.