USB-Ports mappen unter Windows

  • Ab Big Sur 11.3 müssen die USB-Ports gemappt sein. Das Programm Hackintool funktioiert ab da nicht mehr, eine Methode unter Windows möchte ich hier erläutern. (Angelehnt an den Beitrag von LetsGo). Mit dieser Methode seid ihr auch SMBIOS unabhängig.




    USB-Ports mappen unter Windows


    1. Download Windows.exe von https://github.com/USBToolBox/tool/releases

    2. Starte dann Windows.exe

    3. Drücke Taste d (Discover Ports)

    4. Stecke nacheinander in jeden USB-Port einen USB3-Stick, immer ein bißchen warten bis er von dem Programm erkannt wird

    5. Wenn alle USB-Ports durch sind drücke Taste b (Back)

    6. Drücke Taste s (Select Ports and Build Kext)

    7. Drücke Taste p (Enable All Populated Ports)

    8. Drücke Taste k (Build UTBMap.kext)

    9. UTBMap.kext wird erstellt

    10. Der UTBMap.kext muss in Verbindung mit dem USBToolBox.kext https://github.com/USBToolBox/kext/releases (hat einen executable path und ist einfach zum downloaden!) verwendet werden. Bei Verwendung dieser Kombi sollte SSDT-RHUB auch überflüssig sein.

    11. Also dann rein mit dem erstellten UTBMap.kext und USBToolBox.kext in /EFI/OC/Kexts und die config.plist wie folgt bearbeiten und dann neu starten





    EDIT:

    LetsGo hat das Thema weiter unten, mal ausführlicher erläutert :danke2:


    Edit2:

    Diese von mir erstellte Kurzanleitung lass ich mal so stehn und wird nicht mehr überarbeitet. Sofern die 15 Ports je Controller nicht überschritten werden, ist sie anwendbar. Weiteres wird ja in dem Threat diskutiert.

  • griven

    Approved the thread.
  • user232

    Changed the title of the thread from “USB mappen unter Windows” to “USB-Ports mappen unter Windows”.
  • user232


    Punkte 10 und 11 treffen nicht zu für Windows.


    USBToolbox.kext wird nur benötigt, wenn man die Ports unter macOS mapt (in Verbindung mit UTBDefault.kex). Am Ende entfernt man UTBDefaul.kext und behält UTBMap.kext und USBToolobox.kext.


    Siehe: https://github.com/USBToolBox/kext#usage


    Wenn man die Ports aber unter Windows mapt und dort die Kext generiert, benötigt man am Ende nur eine Datei: UTBMap.kext


    Siehe hier: https://github.com/USBToolBox/tool#usage


    Unter Punkt 8 steht:


    If building a map that uses the USBToolBox kext, make sure to grab the latest release of the kext too.


    Aber da der Fall nicht zutrifft, wenn man es am PC macht, braucht man sie nicht.

    Edited once, last by 5T33Z0 ().

  • 5T33Z0


    ist nicht ganz richtig, was du schreibst


    Mit USBToolbox kann man zwei Kexte generieren (unabhängig vom Betriebssystem), die in der config.plist jedoch unterschiedlich gehandhabt werden.

    1. UTBMap.kext
    2. USBMap.kext

    Beides sind codeless Kexte, jedoch benötigt der UTBMap.kext unbedingt noch den USBToolBox.kext (der ausführbar ist und für den man einen "executable path" in der config.plist angeben muss)


    Der USBMap.kext erweitert das von MacOS bereits bereitgestellte USB Mapping (wie hier für Original Macs unter /System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns/AppleUSBHostPlatformProperties.kext/Contents/Info.plist zu finden ist) entsprechend für unser System.


    Die Kombi aus UTBMap.kext und USBToolBox.kext kann Vorteile (wenn man ein entsprechendes System hat) mit sich bringen, welche hier beschrieben sind:


    Features

    • Attach to the controller instance or parent device, allowing for more ways to match
    • Ignore port definitions from ACPI to force macOS to enumerate all ports manually
      • Bypasses borked ACPI as seen on some Ryzen motherboards and 400 series Intel motherboards
      • Replaces SSDT-RHUB
    • Override any built-in Apple USB maps attaching based on SMBIOS and controller name
      • Removes the need for controller renames in ACPI patches
    • Does not require model identifier specified in USB map (if attaching to PCI device)
    • Very compatible with existing USB maps (port format is the same)
    • Does not hardcode any port maps, unlike USBInjectAll

    This does not patch the port limit.


    user232


    Könntest du in deiner Beschreibung noch das Port Limit von 15 / Controller und den USBMap.kext einbauen? Vor Allem das PortLimit wäre wichtig!

    Edited 2 times, last by LetsGo ().

  • interessant. Leider geht aus den Beschreibungen der Repo nicht eindeutig her, dass man 2 Kexts mit unterschiedlichen Vorbedingungen, die zu unterschiedlichen Konfigurationen führen, generieren kann. Ebensowenig wie, welche Extension nun alleine und welche mit 'ner extra kext verwendet werden muss…der Begriff "USBMap.kext" taucht zudem nirgends auf.


    Aber zumindest wissen wir jetzt, dass es 2 mögliche Kexts mit 2 unterschiedlichen Konfigurationsmöglichkeiten und Vorbedingungen gibt und man nicht zwangsläufig die Kombination aus UTBMap.kext und USBToolBox.kext nutzen MUSS…


    EDIT: user232  LetsGo


    Ich habe mir das Script noch mal angesehen und es ist so, dass es nicht so offensichtlich ist mit den zwei unterschiedlichen kexts:

    1. Standardmäßig wird UBTMap.kext (USB Toolboox map kext) generiert. Diese muss mit USBToolBox.kext verwendet werden, wie du geschrieben hast. Diese Variante hat den Vorteil, dass diese Kombination die Ports SMBIOS und modellunabhängig mapt und in jedem macOS verwendet werden kann
    2. Um aber die Variante mit USBMap.kext zu nutzen – die ich für die elegantere halte, da sie mit einer Kext auskommt – muss man unter erst in die Settings auf "N" (Use Native Classes) umstellen. Der Nachteil ist halt, dass diese Kext nicht SMBIOS-unabhängig ist.

    Edited 5 times, last by 5T33Z0 ().


  • Da steh' ich nun, ich armer Tor,
    Und bin so klug als wie zuvor!
    Heiße Magister, heiße Doktor gar,
    Und ziehe schon an die zehen Jahr'
    Herauf, herab und quer und krumm
    Meine Schüler an der Nase herum –
    Und sehe, daß wir nichts wissen können!


    Quelle: Goethe, Faust. Der Tragödie erster Teil, 1808

    Szene: Nacht, Faust allein in seinem gotischen Zimmer

  • Ich habe das auch mal ausprobiert, so wie beschrieben... komme aber nicht zum gleichen Ergebnis als unter MOJAVE mit Hackintool,

    sollte man die erkannten Ports nicht auch noch deklarieren? wie in der readme des Tools beschrieben ( z.B. 1,2,5,7,10 ..... usw.)

  • user232

    Added the Label In Arbeit
  • Ich habe das auch mal ausprobiert, so wie beschrieben... komme aber nicht zum gleichen Ergebnis als unter MOJAVE mit Hackintool,

    sollte man die erkannten Ports nicht auch noch deklarieren? wie in der readme des Tools beschrieben ( z.B. 1,2,5,7,10 ..... usw.)

    Ausgewählt werden die Ports mit der Funktion "Enable All Populated Ports". Aber man muss dann immer noch sicherstellen, dass es nicht mehr als 15 Ports sind am Ende und ggf welche deaktivieren. Wenn der Typ des Ports falsch deklariert ist, kann man ihn mit "T" manuell anpassen, was sich mir bisher aber auch nicht ganz erschließt. Das ist in dem Guide bislang auch noch nicht berücksichtigt worden.

  • Geht es so also noch nicht? Ich habe vorhin einem bekannten die Anleitung geschickt und bekomme heute noch die Files für die efi. Wollten heute eigentlich noch big sur oder Monterey installieren

    MSI MEG z490i UNIFY  Intel® Core™ i9-10900K - Radeon RX 590 - BCM94360NG - OC 0.8.6 - Windows 11 / macOS Ventura 13.1 beta 4

    MacMini 6,1  Late 2012 - macOS Ventura Beta 13.1 - OC Legacy Patcher 0.5.1

    Dell XPS 13 7390  Intel® Core™ i7-10510u - OpenCore 0.8.6 - Windows 11 / Ubuntu / macOS Ventura 13.1

    MacBook Air 2022  M2 - 10 Core GPU - 16GB RAM - 512 GB - macOS Ventura 13.1 beta 4

  • Naja gut... Ich sag ihm einfach er soll ein Bild von den Ports im Tool machen und lösche notfalls andere Ports aus dem kext. Danke

    MSI MEG z490i UNIFY  Intel® Core™ i9-10900K - Radeon RX 590 - BCM94360NG - OC 0.8.6 - Windows 11 / macOS Ventura 13.1 beta 4

    MacMini 6,1  Late 2012 - macOS Ventura Beta 13.1 - OC Legacy Patcher 0.5.1

    Dell XPS 13 7390  Intel® Core™ i7-10510u - OpenCore 0.8.6 - Windows 11 / Ubuntu / macOS Ventura 13.1

    MacBook Air 2022  M2 - 10 Core GPU - 16GB RAM - 512 GB - macOS Ventura 13.1 beta 4

  • Hallo 5T33Z0 .....

    1. Um aber die Variante mit USBMap.kext zu nutzen – die ich für die elegantere halte, da sie mit einer Kext auskommt – muss man unter erst in die Settings auf "N" (Use Native Classes) umstellen. Der Nachteil ist halt, dass diese Kext nicht SMBIOS-unabhängig ist.

    Wenn ich das mit OS X mache, habe ich ein Eintrag in der info.plist (siehe Bild) ....Setting auf "N"

    Aber man sollte es doch unter Windows machen(Empfehlung) da gibt es doch kein SMBIOS

  • Hier mal eine Anleitung mit Bildern anhand meines Systems (Optiplex 5070 SFF)


    Hier findet ihr eine exzellente allgemeine Anleitung (Information), warum wir überhaupt ein USB Mapping vornehmen müssen.


    Die Bedienung funktioniert einfach mit dem jeweiligen Buchstaben gefolgt von Enter. z.B: C und Enter für das Settings Menü




    Das Settings Menü (C):


    Änderungen werden einfach mit den entsprechenden Buchstaben (T, N, A, C) und dann Enter vorgenommen


    • T. Show Friendly Types: zeigt dann halt z.B: USB 3 Type A statt 3, USB 3 Type C statt 9 usw. an


    • N. Use Native Classes: disabled: UTBMap.kext wird erstellt, enabled: USBMap.kext wird erstellt
    • A. Add Comments to Map: Man kann zu einem späteren Zeitpunkt eine Beschreibung der USB Ports hinzufügen. Bei Aktivierung wird diese Beschreibung (siehe Set Custom Names) als comment in die info.plist des erstellten Kextes übernommen.
    • C. Bind Companions: Da ein physischer USB 3 Port wegen der Abwährtskombatibilität einen USB 3 und USB 2 Teil besitzt, nützt uns diese Funktion beim Mappen. Einfach USB 3 oder 2 Stick in den Port stecken und der Gegenpart wird automatisch erkannt.


    Discover Ports (D):


    Als Bsp. habe ich mal einen USB Stick in den Front USB 3 Port (Port 17) gesteckt um den weiteren Verlauf und Funktionen des Programms zu erklären. Dann (B)ack und in das "Select Ports and Build Kext" Menü wechseln



    Select Ports and Build Kexts (S):


    Hier sieht man jetzt den praktischen Nutzen der Companion Funktion. Port 6 wurde als USB 2 Teil des Port 17 erkannt. Ich habe in diesem Fall einen USB 3 Stick angesteckt. Würde man einen USB 2 Stick verwenden, leuchtet Port 6 im "Discover Ports" Menü auf und Port 17 würde als USB 3 Teil erkannt werden.




    Die Funktionen K, A, N, P, D, T:


    (K): Wäre "Use Native Classes" im Settings Menü aktiviert, würde hier "Build USBMap.kext" stehen.

    (A), (N), (P), (D): eigentlich selbst erklärend

    (T): Show Types: zeigt die verschiedenen Connector Typen (nähere Beschreibung samt Bildern siehe hier!)



    Nun zu diesen Punkten:



    -Select Ports ...: einfache einzelne Ports an und abwählen.


    -Change Types: Würde das Programm z.B: einen Port falsch deklarieren, könnte man hiermit den Typ ändern. In diesem Beispiel würde t:17:0 meinen Port 17 und 6 von Typ 3 (USB 3 Typ A) in Typ 0 (USB 2 Typ A) ändern.


    -Set custom names ...:




    mit c:17 (enter) löscht man wieder die Beschreibung



    Jetzt wie es z.B: anhand meines Systems aussehen sollte:


    1) Discover Ports: Stick in alle benötigten Ports stecken



    2) Sieht dann so im "Select Ports ..." Menü aus:



    Für eine Broadcom Karte (in meinem Fall BCM94360NG) muss das Ganze so aussehen.



    3) Um das Portlimit von 15 einzuhalten deaktiviere ich die Companion Funktion im Settings Menü und wähle den USB 2 Companion Port (Port 2) vom Front USB-C Port und Port 21 (da hängt eh nur Peripherie mit USB 2 Speed dran) ab. Dazu einfach 2,21 eingeben und Enter drücken (wäre Bind Companions aktiviert, würde damit Port 2 und 18 sowie 23 und 10 deaktiviert werden)




    4) Nun erstelle ich beide Kexte (UTBMap.kext und USBMap.kext) mit (K) Enter. Einfach im Settings Menü (Use Native Classes)umstellen. Bei Erstellung des USBMap.kext wird noch nach dem SMBIOS gefragt: ich nutze z.B: iMacPro1,1



    5) Somit erhält man die generierten Kexte im USBToolBox Verzeichnis:



    6) benutzt man UTBMap.kext muss man noch zusätzlich den USBToolBox.kext von Github runterladen und die beiden in den Kexts Ordner der EFI kopieren und dann in die config.plist einbinden. Dabei aufpassen, dass der USBToolBox.kext einen ausführbaren Pfad hat.



    Für den USBMap.kext wird USBToolbox.kext nicht benötigt, da dieser die nativen Apple Kexte benutzt.


    Zum Schluss sei angemerkt, dass man sich einfach ein wenig mit dem Programm vertraut machen sollte. Keine Angst, man kann nichts kaputt machen :)

    Edited 17 times, last by LetsGo ().

  • Hey Super....damit sollten wir klar kommen, sehr gut erklärt:klatschen:


    :thumbup:

  • Hallo 5T33Z0 .....

    1. Um aber die Variante mit USBMap.kext zu nutzen – die ich für die elegantere halte, da sie mit einer Kext auskommt – muss man unter erst in die Settings auf "N" (Use Native Classes) umstellen. Der Nachteil ist halt, dass diese Kext nicht SMBIOS-unabhängig ist.

    Wenn ich das mit OS X mache, habe ich ein Eintrag in der info.plist (siehe Bild) ....Setting auf "N"

    Aber man sollte es doch unter Windows machen(Empfehlung) da gibt es doch kein SMBIOS

    Ähhh, deine Argumentation ist redundant. Es ist vollkommen egal, ob man das unter Windows oder macOS macht. Windows verwendet weder SMBIOS noch Kexts und dennoch kann es Kexts mit Configurations-Dateien generieren und da was weiß ich reinschreiben. Das Tool basiert doch auf irgend 'ner scriptsprache die einfach generiert, was man ihm sagt - Betriebssystem-unabhängig – Empfehlung hin oder her.

    Edited once, last by 5T33Z0 ().

  • user232

    Removed the Label In Arbeit
  • Ist es besser wenn man Windows zum Mappen per F12 direkt startet oder mit OpenCore, egal ?



    Bei Port 2 von EHCI weiß ich schon nicht weiter, dieser zeigt keine Geräte an das ist ein USB 2.0 A Port der intern an meinem QUO Board an USB1 angeschloßen ist, wenn ich den aber rausnehme geht der Port 1 und der Port 2 nicht in macOS. Das sind beide an der Front des Gehäuses beide 2.0. Auch Geräte die ich an Port 2 anschließe werden am Port 1 angezeigt.

    Hackintosh System ASUS Z690M-PLUS D4 Motherboard, Sapphire AMD 6600XT Grafikkarte - macOS 13.0.1 OC 0.8.6

    Original MacBook Pro 14" M1max - macOS 13.0.1

  • plutect


    Versuchs mal mit einer Maus oder Keyboard



    Falls das Mapping funktioniert solltest du definitiv die Kombi aus UTBMap.kext+USBToolBox.kext verwenden, da du dir das Renaming des EHCI Controller sparst. Zumindest verstehe ich das so.


    Features

    • Attach to the controller instance or parent device, allowing for more ways to match
    • Ignore port definitions from ACPI to force macOS to enumerate all ports manually
      • Bypasses borked ACPI as seen on some Ryzen motherboards and 400 series Intel motherboards
      • Replaces SSDT-RHUB
    • Override any built-in Apple USB maps attaching based on SMBIOS and controller name
      • Removes the need for controller renames in ACPI patches
    • Does not require model identifier specified in USB map (if attaching to PCI device)
    • Very compatible with existing USB maps (port format is the same)
    • Does not hardcode any port maps, unlike USBInjectAll

    This does not patch the port limit.


    EDIT: Nochmals durchgeslesen:


    Falls die beiden physischen Frontports vom EHCI Controller an einem internen USB 2 Port hängen, ist das wie ein interner Hub zu handhaben. Demnach wäre der auch auch als Type A: 0 zu deklarieren und nicht als Internal:255.


    EDIT 2:


    Da du eigentlich bei keinem deiner Controller das Portlimit von 15 überschreitest, könntest du ja gleich im "Select Ports and Build Kext" Menü mit "Select All (A)" alle Ports aktivieren und dann den UTBMap.kext erstellen.


    Nur eben den Connector-Typ würde ich von 255 auf 0 setzen, da es sich bei den Frontports nicht um interne Geräte handelt.

    Edited once, last by LetsGo ().

  • Man könnte sich mittels Windows, wie im Eingangspost beschrieben, einen UTBMap.kext erstellen und dann in das System einpflegen. Neu booten, die Feinkonfiguration mit Hackintool absolvieren, da übersichtlicher, dann den altbewährten USBPorts.kext generieren?


    Edit:

    Hab ich mal gemacht, nutze jetzt den mit Hackintool neu generierten USBPorts.kext, mal sehn wie es sich so verhält.

  • user232


    Eigentlich gibt es kein "Feintuning" mit Hackintool. Entweder die Ports wurden richtig gemappt oder nicht. Egal, ob man USBToolBox, Hackintool oder das USBMap Tool vom Dortania Guide nimmt. Der Vorteil von USBToolBox ist, das wenn man Windows installiert hat und zusätzlich BigSur 11.3+ benutzt (wo der XhciPortLimit Quirk nicht mehr greift) so das Mapping am einfachsten ist.


    Außerdem nutzt der USBPorts.kext, den man mit Hackintool erstellt als IOClass AppleUSBMergeNub, im Gegensatz zum USBMap.kext bzw. UTBMap.kext, die als IOClasss AppleUSBHostMergeProperties nutzen. Und im Dortania Guide ist beschrieben, dass AppleUSBMergeHub zu Sleep Problemen bei Catalina 10.15 und höher führen kann. Kann und nicht muss!


    https://dortania.github.io/Ope…sal/sleep.html#fixing-usb

  • Ich empfehle ja ungern Computerblöd aber ich mache das nicht mehr mit nativen Installationen.


    Windows PE Stick fertig machen, USBToolbox Tool drauf kopieren und davon booten: aus dem BIOS den Stick als Bootvolume verwendet.

    Startet mit schnellem Stick sehr fix, danach Ports mappen, kext liegt dann auf dem Stick. In die EFI einbinden und fertig.


    Schont die Nerven und das Zeitmanagement.


    https://www.computerbild.de/ar…k-erstellen-16583331.html