Mojave USB 3.0

Seit MaOSX El Capitan 10.11 hat Apple den USB Stack umgebaut.

/!\ Info zu ACPI: Advanced Configuration and Power Interface

/!\ Info zu Clover Dokumentation

/!\ Info zum Boot Log: Man findet das boot.log im Clover Configurator (Left panel: Boot.log, Bottom Panel: Generate Log).

USB 3.0 Problem

/!\ Diese Anleitung ist nur für Intel USB3.

Seit Mojave 10.14 geht bei USB 3.0 nicht mehr die hohe Geschwindigkeit (5 Gbits/s), obwohl USB 3 angezeigt wird.

Um das zu korrigieren kann eine SSDT (System Service Descriptor Table) angepasst werden, oder eine Pseudo Kernel Extension gebaut werden, siehe folgende Anleitungen.

Erklärung Rehabman

2016-09-30 Author: RehabMan - Ab MacOS 10.11+ ist der USB Stack von Apple umgebaut worden, siehe Guide von RehabMan. Jetzt wird mehr Information von ACPI (Advanced Configuration and Power Interface) genutzt als vorher. Deshalb ist es wichtig, dass die Eintragungen in der DSDT (Differentiated System Description Table) Tabelle stimmen. Wenn sie nicht stimmen, kann es passieren, dass vorhandene USB Ports nicht vom Treiber eingebunden werden.

Sogar die eigenen Produkte von Apple erwiesen sich als fehlerhaft. Daher hat Apple eine Möglichkeit geschaffen, DSDT mit einem Port-Injektor zu überschreiben. Wenn Eigenschaften eingegeben werden, um die verfügbaren Ports zu definieren, werden diese Eigenschaften anstelle von ACPI verwendet.

Die eingebauten Port-Injektoren können auch USB auf einem Hackintosh stören, da es unwahrscheinlich ist, dass die USB-Topologie für ein bestimmtes Mac-Modell mit Ihrem PC identisch ist.

/!\ Wichtig zu auch zu wissen ist, dass ein 15 Port Limit für USB Ports eingeführt worden ist. Da Mainboard Hersteller leider mehr USB Ports in ihren ACPI Tabellen aufführen, als physisch eingebaut sind, muss leider aussortiert werden. Dazu gibt es mehrere Möglichkeiten.

/!\ Der Port limit Patch sollte nach RehabMan nicht mehr benutzt werden.

Es gibt nach RehabMan mehrere Möglichkeiten dass zu korrigieren.

Erklärung CorpNewt

Die Angelegenheit

Seit 10.11 gibt es eine Beschränkung von 15 USB-Anschlüssen pro Controller. In Verbindung mit einigen Konflikten oder fehlender Einspeisung gab es eine Reihe von Problemen bei der Suche nach funktionierenden USB-Anschlüssen.

Im schlimmsten Fall wird keiner Ihrer USB-Anschlüsse für sich allein angezeigt. USBInjectAll.kext von RehabMan versucht, dieses Problem zu lösen, indem alle bekannten Ports injiziert werden, sodass das Betriebssystem sie "sehen" kann. Großartig, oder? - Ja und nein. Lass uns schnell ein Bild zeichnen:

Sie haben einen Skylake-Computer (oder einen neueren), der problemlos alle USB-Anschlüsse unter Windows / Linux verwendet. Sie schwitzen und arbeiten seit einiger Zeit an Ihrem Hackintosh-Setup und versuchen verzweifelt, das Betriebssystem dazu zu bringen, einige Ihrer fehlenden Ports zu erkennen. Sie stolpern online durch die Anleitungen und Posts und entdecken schließlich den heiligen Gral der USB-Injektion - werfen Sie die Kernel Extension in Ihren Ordner "Other" und starten Sie ihn neu ... nur um festzustellen, dass USB 2.0 alles ist, was funktioniert ... Mist.

Das passiert, weil Intel bei der Skylake CPU den EHCI-Controller fallen gelassen hat - also alle Ports, USB 2.0, 3.0, die jetzt über den XHCI-Controller laufen.

Okay, aber mein Motherboard hat nur 8 Ports ... Also sollte ich unter dem Limit sein, oder?

Nee! USB-3.0-Anschlüsse haben physisch auch Anschlüsse für USB 2.0 - was auch bedeutet, dass sie jeweils als 2 Anschlüsse zählen. Skylake und neuere Consumer-Chipsätze haben normalerweise 26 Ports auf dem XHCI-Controller - das sind 11 Ports über unsere zugewiesenen 15 ...

Was tun wir dagegen?

Es gibt zwei Möglichkeiten, mit dem Problem umzugehen:

  1. Patchen Sie das Portlimit, um alle Ports gleichzeitig zuzulassen.
  2. Schränken Sie die eingeschleusten Ports ein, sodass nur die von Ihnen verwendeten Ports verfügbar sind.

Lassen Sie uns einen Blick auf jede werfen:

Das Aufheben des Port-Limit-Patches kann jedoch zu Problemen führen, da wir den Code nur an einer Stelle ändern und er an vielen Stellen im System fest codiert ist. Dies erzeugt zusätzliches USB-Rauschen und kann zu Problemen mit dem Array außerhalb der Grenzen führen. Zugegeben, ich habe mich, wie viele Benutzer, stark darauf verlassen, da es ein einfacher Ansatz ist. Leider scheinen die Patches für das Port-Limit mit Mojave 10.14.1 relativ ineffektiv (oder bestenfalls schrecklich inkonsistent) zu sein. So was jetzt?

Die Alternative besteht darin, nur die Ports einzurichten, die Sie benötigen. Dies kann abhängig vom Ausgangszustand Ihrer USB-Anschlüsse auf verschiedene Arten erfolgen. Bei einigen fehlen viele Ports ohne USBInjectAll.kext, und als solche können sie ein benutzerdefiniertes Injektor.kext erstellen, das nur die benötigten fehlenden Ports injiziert. Dies war mein erster Versuch, da ich davon ausgegangen war, dass alles, was in diesem Injektorkext fehlte, gänzlich weggelassen würde - aber ich hatte ein anderes Problem ...

Die USB-Anschlüsse meines Asus Maximus X Code sind fast alle sichtbar, ohne dass USBInjectAll.kext vorhanden ist. Ich habe HS01 -> HS14 und SS01 -> SS10 sichtbar - was mich zu Beginn auf 24 Ports bringt - oder, wenn Sie 9 über dem Grenzwert von 15 Ports verfolgen - nur HS01 -> HS14 und SS01 waren sichtbar - das bedeutet nur USB2.0 für mich :(). Dies bedeutet, dass das Injizieren von mehr Ports buchstäblich nichts für mich bringt. Wenn die Injektor.kext das tut, was Sie brauchen, dann suchen Sie nicht weiter! Wenn Sie sich jedoch in einer Situation wie meiner befinden - lesen Sie weiter!

Ich war in einer Situation festgefahren, in der ich nicht verwendete Ports entfernen musste, um Platz für die Ports zu schaffen, die ich eigentlich nutzen wollte. Dies kann auf zwei Arten erfolgen:

Durch die Nutzung von USBInjectAll.kext kann das Einspeisen von USB-Anschlüssen verhindert werden. Wenn Sie die Konfiguration über eine der oben genannten Methoden vornehmen (beides kann USBMap.command), können Sie einen Pfad für die tatsächlich verwendeten USB-Anschlüsse freigeben. Es gibt einige Tricks, um Ports zuzuordnen, wenn Ihnen standardmäßig mehr als 15 Ports zugewiesen sind (wie können Sie vernünftigerweise das abbilden, was Sie nicht sehen, richtig?) - daher sind einige Tricks in das Skript integriert, mit denen Sie deaktivieren können alle SSxx (USB3) oder HSxx (USB2) - aber das Skript fordert Sie automatisch auf, Tastatur und Maus zuzulassen, damit Sie nicht ausgesperrt werden, damit Sie in zwei Schritten eine Zuordnung vornehmen können. Dies erfolgt durch Setzen des Arguments boot-args = nvram mit den entsprechenden Ausschlussargumenten. Wenn Sie Ihre Tastatur / Maus blockieren - Sie können NVRAM (Non Volatile RAM) in Clover löschen, um dies zu umgehen. Offensichtlich erfordert das gesamte NVRAM-Zeug, dass Sie mit NVRAM arbeiten, um es zu implementieren. Die Boot-Args können der config.plist hinzugefügt oder manuell in Clover eingegeben werden, wurden aber der Einfachheit halber dem Skript hinzugefügt.

Woher wissen Sie, welche USB ports zu entfernen sind?

Nun, das Skript erkennt automatisch Ports, die in einer 5-Sekunden-Schleife gefüllt / geändert werden, indem ioreg und system_profiler auf Änderungen überprüft werden. Die allgemeine Idee ist, dass Sie mit einem USB 2.0-Gerät beginnen und es nacheinander an jeden Anschluss anschließen, mit dem Sie USB 2.0 verwenden möchten, und das Skript es erkennen lässt - es speichert alle bestückten Anschlüsse zu einer USB.plist vor Ort (Scripts/) wie es geht. Sie schließen dann alle HSxx-Ports (außer Tastatur / Maus) aus und starten neu, um USB 3.0-Ports mit einem USB 3.0-Gerät zuzuordnen.

Anschließend passen Sie Ihre Scripts/USB.plist an, um die USB-Typen so zu ändern, dass sie die physischen Anschlüsse widerspiegeln. Egal ob die Ports aktiviert sind, oder nicht. Für mich habe ich alle nicht verwendeten USB 2- und 3-Ports auf der Rückseite meines Motherboards, meiner internen USB-Lichtsteuerungen und meines NZXT-Smart-Device-Controllers deaktiviert und dann sichergestellt, dass sowohl die USB 2- als auch die USB 3-Variante aller Ports auf der Vorderseite meines Gehäuses funktionieren , sowie meine Maus / Tastatur / DAC / Bluetooth-Ports wurden aktiviert und meine SSDT damit aufgebaut. Die SSDT verhindert, dass alle Ports angezeigt wurden, die ich für nicht erforderlich hielt, und ich verwendete schließlich nur 11 Ports, was weit unter der Grenze liegt und sich für meine Zwecke lohnt.

Methoden

2016-10-08 Author kuckuck Anleitung: USB 3.0 El Capitan / (High-) Sierra / Mojave für jedermann (zukunftssicher für Updates & komplett gepatcht) Es soll die Kernel Extension USBInjectAll.kext mit Zubehör eingesetzt werden. In Kurzform:

Kommentar: Das scheint mir sehr aufwendig zu sein.

oder

2016-09-24 Author cnrd Python Script zur Erzeugung einer USB SSDT Tabelle (getestet mit Mainboard GA-Z170X)

Kommentar: Das habe ich erfolgreich gemacht, Details siehe #USB_SSDT_erstellen

oder

2017-01-02 Autor RehabMan [Guide] Creating a Custom SSDT for USBInjectAll.kext Hier wird die Erstellung einer SSDT.aml Tabelle zusammen mit der Kernel Extension USBInjectAll.kext geraten. Die einzelnen Schritte:

Der hier benutzte MaciASL Compiler bekommt man MaciASL. Selektiere ACPI 6.2a in MaciASL->Preferences->iASL.

/!\ Obwohl der USB controller bei einem Skylake computer mögliche 26 USB ports zeigt (HS01-HS14, SS01-SS10, USR1, USR2), sind oft weniger als 10 USB Ports angeschlossen.

Dann muss man die Vorlage SSDT-UIAC-ALL.dsl Editieren, so dass nur die gefundenen USB Port Referenzen übrig bleiben. Dann mit dem MaciASL Compiler in die Datei SSDT-UIAC-ALL.aml kompilieren und nach EFI/Clover/ACPI/patched kopieren.

Kommentar: Das erscheint mir sehr aufwendig und Fehler trächtig zu sein.

oder

2017-08-16 Author brumbaer Kext as Kext can oder USB 3.0 ohne USBInjectAll

Die Erklärungen sind sehr gut, siehe post #1 und #7.

USB Port Korrektur mit einer Pseudo .kext Datei (enthält nur eine Info.plist Tabelle).

Kommentar: Das erscheint mir sehr aufwendig zu sein.

/!\ 2018-11-13 Zum Glück gibt es jetzt ein Python Programm USBmap.command mit dem der Prozess der Erstellung einer Kernel Extension USBmap.kext für den Ordner EFI/CLOVER/kexts/Other/ sehr einfach und sicher ist.

Die Methode wird vom Autor CorpNewt vorgestellt, im Kapitel #USBmap.kext beschrieben, und scheint mir die beste Methode zu sein.

oder

2018-11-30 Author: anonymous writer 2.26 USB XHC ohne USBInjectAll.kext oder USB-Portlimit Patch zum Laufen bringen

Es muss eine Datei SSDT-4-xh_rvp08.aml erstellt werden, für den Ordner EFI/CLOVER/ACPI/patched/, und in Clover config.plist eingetragen werden.

Kommentar: Das erscheint sehr aufwendig zu sein, obwohl es eine Vorlage gibt.

.

DSDT Bearbeitung

Eine ausführliche Erklärung gibt es hier.

DSDT für CPU

Um die Tabellen DSDT (Differentiated System Description Table, Fixing-DSDT) auszulesen, kann man den script ssdtPRGen.sh benutzen. Das ist eine große ACPI (Advanced Configuration and Power Interface) Tabelle.

# Download file
$ curl -o ~/ssdtPRGen.sh https://raw.githubusercontent.com/Piker-Alpha/ssdtPRGen.sh/Beta/ssdtPRGen.sh
# make executable
$ chmod +x ~/ssdtPRGen.sh
$ ./ssdtPRGen.sh


ssdtPRGen.sh v0.9  Copyright (c) 2011-2012 by † RevoGirl
             v6.6  Copyright (c) 2013 by † Jeroen
             v21.5 Copyright (c) 2013-2019 by Pike R. Alpha
-----------------------------------------------------------
Bugs > https://github.com/Piker-Alpha/ssdtPRGen.sh/issues <
./ssdtPRGen.sh: line 3877: /Volumes/DAT/Users/rudi/Library/ssdtPRGen/Data/Versions.cfg: No such file or directory

System information: Mac OS X 10.13.6 (17G5019)
Brandstring: "Intel(R) Core(TM) i3-7100 CPU @ 3.90GHz"

Notice: Downloading extractACPITables.zip ...
Notice: Downloading User Defined.cfg ...
Notice: Downloading Sandy Bridge.cfg ...
Notice: Downloading Ivy Bridge.cfg ...
Notice: Downloading Haswell.cfg ...
Notice: Downloading Broadwell.cfg ...
Notice: Downloading Skylake.cfg ...
Notice: Downloading Kaby Lake.cfg ...
Version: models.cfg v171 / Kaby Lake.cfg v196


Scope (_PR_) {222 bytes} with ACPI Processor declarations found in DSDT (ACPI 1.0 compliant)
Notice: Downloading Restrictions.cfg ...
Generating ssdt.dsl for a 'iMac14,2' with board-id [Mac-27ADBB7B4CEE8E61]
Kaby Lake Core i3-7100 processor [0x906E9] setup [0x0905]
With a maximum TDP of 51 Watt, as specified by Intel
Number logical CPU's: 4 (Core Frequency: 3900 MHz)
Number of Turbo States: 0
Number of P-States: 35 (500-3900 MHz)
Injected C-States for CPU0 (C1,C3,C6,C7,C8,C9,C10)
Injected C-States for CPU1 (C1,C2,C3,C6,C7)

Error: board-id [Mac-27ADBB7B4CEE8E61] not supported by Kaby Lake – check SMBIOS data / use the -target option

Do you want to continue (y/n)? y
Warning: 'system-type' may be set improperly (1 instead of 2)
         - Clover users should read https://clover-wiki.zetam.org/Configuration/ACPI#acpi_smartupsNotice: Downloading iasl.zip ...

Compiling: ssdt_pr.dsl
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20140926-64 [Nov  6 2014]
Copyright (c) 2000 - 2014 Intel Corporation

ASL Input:     /Volumes/DAT/Users/rudi/Library/ssdtPRGen/ssdt.dsl - 311 lines, 10152 bytes, 49 keywords
AML Output:    /Volumes/DAT/Users/rudi/Library/ssdtPRGen/ssdt.aml - 1998 bytes, 16 named objects, 33 executable opcodes

Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 0 Optimizations

Do you want to copy /Volumes/DAT/Users/rudi/Library/ssdtPRGen/ssdt.aml to /Extra/ssdt.aml? (y/n)? y
Creating temporarily mount point: /Volumes/EFI
Password:
Mounting EFI partition...
mount_hfs: error on mount(): error = -1.   # probably because of APFS
mount_hfs: Invalid argument
umount: /Volumes/EFI: not currently mounted
Do you want to open ssdt.dsl (y/n)?

# look up the generated data
$ $ cd ~/Library/ssdtPRGen/
$ ls -ls | cut -c 30-60
total 32
   816 18 Feb 04:11 ACPI
   408 18 Feb 04:15 Data
   136 18 Feb 04:17 Tools
  1998 18 Feb 05:17 ssdt.aml
 11284 18 Feb 05:17 ssdt.dsl

$ ls -ls Data/ | cut -c 30-66
  5590 18 Feb 04:11 Broadwell.cfg
  8072 18 Feb 04:11 Haswell.cfg
  6189 18 Feb 04:11 Ivy Bridge.cfg
  3063 18 Feb 04:11 Kaby Lake.cfg
  4545 18 Feb 04:11 Models.cfg
   678 18 Feb 04:11 Restrictions.cfg
  4800 18 Feb 04:11 Sandy Bridge.cfg
  4923 18 Feb 04:11 Skylake.cfg
  1701 18 Feb 04:11 User Defined.cfg
   338 18 Feb 05:17 Versions.cfg

$ ls -ls ACPI/ | cut -c 31-61
    132 18 Feb 05:17 APIC.aml
     84 18 Feb 05:17 DBG2.aml
     52 18 Feb 05:17 DBGP.aml
 158564 18 Feb 05:17 DSDT.aml
    244 18 Feb 05:17 FACP.aml
     64 18 Feb 05:17 FACS-1.aml
     64 18 Feb 05:17 FACS.aml
    156 18 Feb 05:17 FIDT.aml
     68 18 Feb 05:17 FPDT.aml
     56 18 Feb 05:17 HPET.aml
    148 18 Feb 05:17 LPIT.aml
     60 18 Feb 05:17 MCFG.aml
    180 18 Feb 05:17 RSDT.aml
  12633 18 Feb 05:17 SSDT-1.aml
   9567 18 Feb 05:17 SSDT-2.aml
   3557 18 Feb 05:17 SSDT-3.aml
   3806 18 Feb 05:17 SSDT-4.aml
    671 18 Feb 05:17 SSDT-5.aml
  12290 18 Feb 05:17 SSDT-6.aml
    956 18 Feb 05:17 SSDT.aml
     66 18 Feb 05:17 UEFI.aml
     40 18 Feb 05:17 WSMT.aml

Folgende Tabellen sind gängig:

Zu den BIOS Einstellungen gibt es noch einen Hinweis:

USB Ports finden

/!\ Voraussetzungen: Es muss im Ordner /EFI/CLOVER/kexts/Other/ die aktuelle Kernel Extension USBInjectAll.kext sein, und es darf keine Port-Einschränkung durch eine SSDT Tabelle oder eine Kernel Extension gemacht werden.

Den USB port zuzuordnen, ob er aktiv ist, geht am einfachsten mit dem stecken von zwei USB sticks, eine USB 2.0 und eine USB 3.0 Version.

Aus der Mainboard Beschreibung ist am schnellsten die Anzahl der vorhandenen USB ports zu ermitteln:

attachment:GAH270M_USB_rear2.png

.

attachment:GA-H270M_Hackintool-USB.png

IORegstryExplorer

Die bekannte Methode: IORegistryExplorer_302.app (Mainboard GA-H270M)

Das funktioniert, ist aber sehr abstrakt.

Hackintool

Mit der hackintool.app zeigen sich bei dem Reiter USB alle vom BIOS gemeldeten USB ports. Die Anzeige wird zyklisch aufgefrischt, man sieht also gleich wenn ein USB-stick gesteckt wird. Siehe das Bild rechts. Leider muss man die benannten Geräte Bezeichnungen etwas interpretieren.

Oben im Bild sieht man den vorhandenen USB Controller, meist ein Intel typ.

Wenn man mit dem Programm USBmap.command arbeitet, sollte man zuest die Funktion D = Discover Ports benutzen, siehe die foldende Tabelle, die bereits mit einer vorher per Programm gebauten USBmap.kext eingeschränkt wurde. Man bemerke die nicht überschrittene Grenze von maximal 15 USB ports. Davon sind zur Zeit nur 6 ports belegt.

Anzeige von Kommando D - Discover Ports: USB.plist

1. HS01 - Controller XHC
2. HS02 - Controller XHC
3. HS03 - Controller XHC
    - USB 2.0 Hub [MTT]
        - Mass Storage Device  # SD-card Reader
        - USB 2.0 Hub
4. HS04 - Controller XHC
    - hub_device
        - miscellaneous_device
        - hub_device
5. HS05 - Controller XHC
6. HS06 - Controller XHC
7. HS12 - Controller XHC
    - BRCM20702 Hub
        - Bluetooth USB Host Controller
8. HS13 - Controller XHC
    - composite_device        # USB keyboard
9. HS14 - Controller XHC
    -  USB OPTICAL MOUSE
10. SS01 - Controller XHC
11. SS02 - Controller XHC
12. SS03 - Controller XHC
13. SS04 - Controller XHC
14. SS05 - Controller XHC
    - hub_device
        - hub_device
15. SS06 - Controller XHC

Populated:  XHC:6

USBmap.kext

Das Python Programm Paket USBmap kann man als USBmap-master.zip File herunterladen und entpacken. Die Struktur des Ordners ist:

USBmap-master
    LICENSE  # MIT
    ReaDME.md
    Results
        SSDT-EC.aml
        SSDT-EC.dsl
        SSDT-USBX.aml
        SSDT-USBX.dsl
        USBMap.kext   # copy to /EFI/CLOVER/kexts/Other/
    Scripts
        __init__.py
        ...
        USB.plist     # USB data file, to be edited
        ...
        utils.py
    USBmap.commmand

/!\ Die Voraussetzungen von Kapitel #USB_Ports_finden sollten erfüllt sein.

Man kann das Programm USBmap.command per Maus Doppelklick starten. Dann erscheint in einem Terminal Fenster folgende Maske:

  #######################################################
 #                      USBMap                         #
#######################################################

Plist:          USB.plist
UIA Boot Args:  None
USBInjectAll:   Not Loaded - NVRAM boot-args WILL NOT WORK
AptioMemoryFix: Loaded

NVRAM Arg Options:
  H. Exclude HSxx Ports (-uia_exclude_hs)
  S. Exclude SSxx Ports (-uia_exclude_ss)
  C. Clear Exclusions

R.  Remove USB.plist from Scripts Folder
T.  Reset Settings to Defaults
P.  Edit Plist & Create SSDT/Kext
D.  Discover Ports
U.  Validate USB Power Settings
Q.  Quit

Please select an option:

/!\ Solange man noch nicht das Kommando D - Discover Ports aufgerufen hat, gibt es den USB-Daten File USB.plist noch nicht.

### USB Typ Stecker ###
0: Type A connector
1: Mini-AB connector
2: ExpressCard
3: USB 3 Standard-A connector
4: USB 3 Standard-B connector
5: USB 3 Micro-B connector
6: USB 3 Micro-AB connector
7: USB 3 Power-B connector
8: Type C connector - USB2-only
9: Type C connector - USB2 and SS with Switch
10: Type C connector - USB2 and SS without Switch
11 - 254: Reserved
255: Proprietary connector - intern

Per the ACPI 6.2 Spec.

### Edit USB.plist ###
[#] 1. HS01 - Type 0 - Controller XHC
[ ] 2. HS02 - Type 3 - Controller XHC
[#] 3. HS03 - Type 0 - Controller XHC
    - USB 2.0 Hub [MTT]
        - Mass Storage Device           # SD-card Reader
        - USB 2.0 Hub
[#] 4. HS04 - Type 0 - Controller XHC
    - hub_device
        - miscellaneous_device
        - hub_device
[ ] 5. HS05 - Type 0 - Controller XHC
[ ] 6. HS06 - Type 0 - Controller XHC
[#] 7. HS12 - Type 0 - Controller XHC
    - BRCM20702 Hub
        - Bluetooth USB Host Controller
[#] 8. HS13 - Type 0 - Controller XHC
    - composite_device                   # USB Tastatur
[#] 9. HS14 - Type 0 - Controller XHC
    -  USB OPTICAL MOUSE                 # USB Maus
[ ] 10. SS01 - Type 3 - Controller XHC
[ ] 11. SS02 - Type 3 - Controller XHC
[ ] 12. SS03 - Type 3 - Controller XHC
[ ] 13. SS04 - Type 3 - Controller XHC
[#] 14. SS05 - Type 3 - Controller XHC
    - hub_device
        - hub_device
[#] 15. SS06 - Type 3 - Controller XHC
    - ADATA USB Flash Drive              # USB-stick USB 3.0

Selected:  XHC:8

Check EC:    Yes
Check USBX:  Yes
One SSDT:    No - Separate SSDT-EC, SSDT-USBX, and SSDT-UIAC

E. Toggle EC (Yes, No, Force)
U. Toggle USBX (Yes, No)
D. Toggle One SSDT
O. Set USB Overrides

M. Main Menu
A. Select All
N. Select None
K. Build USBMap.kext
S. Build SSDT-UIAC
T. Show Types
Q. Quit

Select ports to toggle with comma-delimited lists (eg. 1,2,3,4,5)
Change types using this formula T:1,2,3,4,5:t where t is the type
Set custom names using this formula C:1:Name - Name = None to clear

Please make your selection:

Jetzt muss man noch zu den bereits belegten USB ports alle aktiven ports markieren (#).

  #######################################################
 #               Creating USBMap.kext                  #
#######################################################

Loading plist
Generating Info.plist
Writing to USBMap.kext
 - Created USBMap.kext!
Checking EC
 - EC SSDT required
Writitng SSDT-EC.dsl
Compiling SSDT-EC.dsl
Downloading iasl.zip
 - Extracting
 - Found iasl
   - Chmod +x
   - Copying to Scripts directory
 - Created SSDT-EC.aml!
Checking USBX requirements
 - iMac18,1 not found in IOUSBHostFamily.kext - checking for USBX
 --> USBX device NOT found!
 ---> iMac18,1 not found in IOUSBHostFamily.kext
 ------> Using properties from iMac15,2
 -- kUSBWakePowerSupply --> 5100
 -- kUSBSleepPowerSupply --> 5100
 -- kUSBSleepPortCurrentLimit --> 2100
 -- kUSBWakePortCurrentLimit --> 2100
Writitng SSDT-USBX.dsl
Compiling SSDT-USBX.dsl
 - Created SSDT-USBX.aml!

Created the following files:

SSDT-EC.aml
SSDT-USBX.aml
USBMap.kext

Copy automatically to booted EFI? (y/n):

Ich möchte nur die Kernel Extension USBmap.kext kopieren, also gebe ich n ein, und kopiere per Hand in den Ordner /EFI/CLOVER/kexts/Other/.

Dann verschiebt man die Kernel Extension USBInjectAll.kext am einfachsten in den Ordner misc/, damit sie nicht mehr wirkt.

Dann kann man sich nach einem Reboot überzeugen ob nicht mehr als 15 USB ports aktiv sind, mit:

Die SSDT.aml betrachte ich hier nicht, weil ich die Benutzung von USBmap.kext einfacher finde.

USB SSDT erstellen

/!\ Das benutze ich wegen #USBmap.kext nicht mehr.

Mit den gefundenen USB Ports kann man jetzt mit einem Python script USB-SSDT.command erstellen. Die Forum-Diskussion ist hier zu lesen.

Die original Version dieses Skriptes ist von Pike R. Alpha, dort gibt es auch eine Diskussion dazu.

Der iasl61 ACPI Compiler im Zip Archiv ist leider veraltet. Eine aktuelle Version von 2016-12-10 ist von RehabMan in github und das binary zum download. Das binary sollte in den Ordner GAH270M kopiert werden.

# Ordner erstellen, wenn noch nicht vorhanden:
$ mkdir ~/Install/Clover/GAH270M

# wechsele den Pfad zum Script
$ cd ~/Install/Clover/GAH270M/

# es sollte im Ordner sein:
    iasl61                      # ACPI compiler für Terminal
    IORegistryExplorer_302.app  # I/O Baum zeigen, IOService
    MaciASL                     # ACPI compiler/decompiler mit GUI
    USB-SSD.command             # Python script

# make executable
$ chmod +x USB-SSDT.command

# SSDT Tabelle erstellen
$ ./USB-SSDT.command
# Jetzt werden die gefundenen USB Ports abgefragt. Der Großbuchstabe ist die Voreinstellung.
# Weiter geht es immer mit der Taste ENTER.

...
Do you want to enable: HS04? [Y/n] n
Do you want to enable: HS05? [Y/n]
You enabled: HS05, are you using it as an internally connected port (For example WiFi/Bluetooth module)? [y/N]
Is: HS05 a USB 3.0 connector? [Y/n]
Do you want to enable: HS06? [Y/n]
...
# Nach der letzten Abfrage wird die Tabelle erstellt: /Schreibtisch/USB-SSDT.aml
# Diese verschiebt man am besten in den GAH270M Ordner.
Die SSDT hat die TableID: "xh_rvp10"

# EFI Partition mounten (mit Clover Configurator oder TINU)
# File USB-SSDT.aml kopieren nach EFI/CLOVER/ACPI/patched/

Dann muss man in der EFI/CLOVER/config.plist folgender Eintrag eingeben (z. B. mit Clover Configurator):

<key>DropTables</key>
     <array>
         <dict>
            <key>Signature</key>
            <string>SSDT</string>
            <key>TableId</key>
            <string>xh_rvp10</string>
         </dict>
     </array>

Es kann sein, dass bereits ein Eintrag DropTables vorhanden ist. Dann muss nur der Teil <dict>...</dict> eingesetzt werden.

Mac OS X

Hier werden die Betriebssystem Themen dokumentiert.

Clover

Aktualisieren Sie Clover auch mit dem Clover-Installationsprogramm auf den neuesten Stand. Stellen Sie sicher, dass Sie EFI/Clover/kexts korrigieren, sodass nur EFI/Clover/kexts/Other vorhanden ist. Alle versionsspezifischen Verzeichnisse unter EFI/Clover/kexts sollten entfernt werden. Von RehabMan.

Für Laptop BIOS: Aktuell halten, und Reset the EC (Embedded Controller).

ASM1042 USB

Es ist ein ASM1042 USB 3.0 Chip eingebaut (Rückseite, 2 x USB blau Buchsen), die aber anscheinend keinen Treiber haben. GenericUSBXHCI.kext

Intel NUC6i7KYK

Info: RehabMan nutzt den Intel NUC6i7KYK als Mac Mini Ersatz. Preis: 560 EUR + RAM + M2 SSD.

Kommandozeile

Die Dateibearbeitung in der Kommandozeile geht am einfachsten mit dem Midnight Commander.

Man kann die binär Version installieren, siehe Links, oder mit dem System homebrew package manager.

Auflistung der PCI und USB Geräte mit einem Linux (Ubuntu) USB Stick.

# Bei dem Mainboard GA-H270M, und USB 2 und USB 3 Hub
$ brew install lsusb
$ lsusb
Bus 020 Device 001: ID 045b:0210 Renesas Electronics Corp. Hub
Bus 020 Device 003: ID 05dc:a833 Lexar Media, Inc. USB Flash Drive  Serial: AAJITNU51106MGAT
Bus 020 Device 002: ID 045b:0210 Renesas Electronics Corp. Hub
Bus 020 Device 011: ID 15d9:0a4c 15d9 USB OPTICAL MOUSE
Bus 020 Device 010: ID 046a:0023 CHERRY GmbH Composite Device
Bus 020 Device 005: ID 045b:0209 Renesas Electronics Corp. Hub
Bus 020 Device 009: ID 045b:0209 Renesas Electronics Corp. Hub
Bus 020 Device 004: ID 1a40:0201 TERMINUS TECHNOLOGY INC. USB 2.0 Hub [MTT]
Bus 020 Device 007: ID 1307:0330 USBest Technology Inc. Mass Storage Device  Serial: 00000000000006
Bus 020 Device 008: ID 7392:7811 7392 802.11n WLAN Adapter  Serial: 00e04c000001
Bus 020 Device 006: ID 1a40:0101 TERMINUS TECHNOLOGY INC. USB 2.0 Hub
Bus 000 Device 001: ID 1d6b:ISPT Linux Foundation USB 3.0 Bus

Um die PCI Geräte zu sehen empfielt sich (2013) DPCIManager

# Bei dem Mainboard GA-H270M, Fenster PCI List
Vendor Device Sub Ven Sub Dev Vendor name
10DE, 0E0F, 1462, 8C93, NVIDIA Corporation, GK208 HDMI/DP Audio Controller
10DE, 128B, 1462, 0010, NVIDIA Corporation
8086, 1901, 007F, 0000, Intel Corporation, Sky Lake PCIe Controller (x16)
8086, 1911, 1458, 5000, Intel Corporation, Sky Lake Gaussian Mixture Model
8086, 590F, 1458, 5000, Intel Corporation
8086, 5912, 106B, D000, Intel Corporation
10EC, 8168, 1458, E000, Realtek Semiconductor Co., Ltd., RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
8086, A282, 1458, B005, Intel Corporation
...
8086, A2F0, 1458, A182, Intel Corporation

USB HUB blockiert Rechner Start

Ein Logitech USB 2.0 10-Port HUB blockiert das Rechner einschalten. Bei laufendem Rechner eingesteckt, funktioniert der HUB. Aber aus dem Ruhezustand wacht der Rechner dann nicht mehr auf.

Mit einem USB 2.0 aktiven HUB Digitus 4-Port funktioniert es normal.

Das Netzteil Start-Problem mit einem aktiven USB-HUB ist bekannt, siehe Link

Die Problemlösung war, wie beschrieben im Link, die +5 V Leitung am USB-Kabel zu kappen. Das habe ich an einem Ersatz Kabel gemacht. Anscheinend war die HUB-Netzteil Spannung mit 5.22 V zu hoch.

List of pages in this category:

-- RudolfReuter 2019-02-23 05:51:35


Go back to CategoryMacOSX or StartSeite