USB mittels SSDT deklarieren

  • Ich habe einen USB C port an meinem rechner. Ich nutze den zwar nicht, aber mich würde interessieren, was die Bezeichnung bedeutet: "USB 3.2 Type-C+Sw." Sw = switch? Was wird denn da geswitcht? offline

    hatte ich im Eingangsthread geschrieben, vielleicht nicht genügend erklärt.

    0x00 – USB2 (ausschliesslich unabhängige USB2 werden so deklariert)

    0x03 – USB3 (auch zugehörige USB2, das heißt gleiche Buchse, werden so deklariert)

    0x09 – USB-C (wenn unabhängig von der Drehung des USB-C-Steckers der _GLEICHE_ Port genutzt wird)

    0x0A – USB-C (wenn je nach Drehrichtung des USB-C-Steckers ein weiterer Port genutzt wird)

    0xFF – USB2 intern (zum Beispiel für Bluetooth)

    Dein hinterer USB-C Port ist soweit ich mich erinnere, HS08/SS08. Die bekommen "0x09" (SW = Switch). Denn du kannst den Stecker verdrehsicher einstecken, völlig egal wie rum, es sind alle Kontakte doppelt zum eigentlichen Port gelegt.


    Der interne USB-E (so heißt die Buchse), den du für ein Gehäuse-USB-C verwenden kannst, liegt auf SS01 und SS02 für USB3.2, beide Ports werden abwechselnd je nach Steckerrichtung genutzt, bekommen also beide "0x0A". Der passende usb2-Anteil dazu ist SS01. Auch der wird mit "0x0A" deklariert. Der wechselt nicht mit einem anderen Port. Denn SS02 soll nach deinem PDF ja ein interner USB2-Hub sein.


    Könnte mir jemand diese Konstruktion erklären?

    Das "Package" (die vier Werte) werden übergeben in jeden Port in die Methode _UPC. Die ersten beiden Werte ("Zero" und "One") des Package sind variabel und werden mittels Argument "Arg0" und "Arg1" angetriggert.

    In jeden Port hingegen hast du dann die eigentliche Methode "_UPC".

    Beispielsweise:

    Code
    1. Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities
    2. {
    3. Return (GUPC (0xFF, 0x03))
    4. }

    Hier wird letztlich über "return" gesagt, packe mir den Inhalt des Package von GUPC mit Arg0=0xFF, Arg1=0x03 rein. Mann kann das dann wieder differenzierter machen mit:


    In diesem Falle würde bei "Darwin" (macOS) dieser Port deaktiviert, unter allen anderen Systemen allerdings als "USB3.x" (mit "normaler" USB-A Schnittstelle) deklariert werden.

    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)

  • apfelnico Vielen Dank für die Erläuterungen. Du hast dann in meinem Fall "Arg1" zu "GUPC" hinzugefügt, damit man Port an/aus und Porttyp unabhängig von einander deklarieren kann, richtig?

  • ST33Z0


    mal etwas näher an deinem speziellen Code dran:



    _UPC ist einfach, falls du aber auch _PLD ändern möchtest – hier wird nur beschrieben, wo sich der Port befindet, ob er zu einer Gruppe gehört, welcher Farbe er hat etc, sieht letztendlich so ausgeschrieben aus:




    Bei dir im vorhanden Code werden da auch zwei Variablen übergeben, und es ist schon eine If/Else-Schleife vorhanden. Die habe ich dann mal um If/ElseIf/Else verlängert, um im Falle "Darwin" (macOS) nur "Zero, Zero" zu übergeben (nix), während unter allen anderen Systemen das gemacht wird, was dort eh schon stand. Die Werte "Zero, Zero" sieht man bei dir bei den beiden "Platzhalterports" USR1 und USR2. Daran hatte ich mich orientiert. Die sind eh IMMER tot.

    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)

  • Hier kann etwas dazu gestöbert werden, welche Position wofür steht und noch mehr:


    https://uefi.org/specs/ACPI/6.…upc-usb-port-capabilities


    Das ist jetzt nur der Direktlink zu dieser Thematik. Generell ist das DIE Adresse, um sich Klarheit zu verschaffen.

    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)

  • Ja, das mit den If/else und OSI-weichen hatte ich verstanden. Hatte nur noch nicht kapiert wie diese "Args" funktionieren. Aber jetzt hab ich's glaub ich verstanden. Danke. In dem Dokument habe ich gestern auch schon gediggt.


    Wenn ich die Werte 3 und 4 des Packages auch noch übergeben wollen würde, würde ich noch

    PCKG [Two] = Arg2 und PCKG [Three] = Arg3 einbauen, ja?

  • Ich habe da mal eine Bitte, könntest du dir eventuell die SSDT / DSDT von meinem GA-Z390 D Board anschauen?


    (SSDT-6-AMI) Die Ports HS08 und HS13 verweisen auf die Methoden TUPC / TPLD. Diese beiden Ports sind die USB2 Ports des Onboard Thunderbolt Controllers. Wie würde man bei diesen Ports vorgehen, um sie richtig einzubinden oder zu deaktivieren?

    Hier siehst du, dass der zweite Wert (One) getauscht wird. Und zwar auf den Wert "0x0A", welcher nebenbei bemerkt falsch wäre, wenn die beiden HS08/13 auf je einen Thunderboltport laufen. Korrekt wäre dann "0x09" – USB-C (SW). Gehen die beide an einen Thunderboltport, dann bleibt es bei "0x0A". Möchtest du diese auch ausschalten könnten, füge in die Methode "TUPC" die Zeile "PCKG [Zero] = Arg0" ein und ändere die Zeile "PCKG [One] = Arg0" in "PCKG [One] = Arg1".


    Dann wäre in zum Beispiel HS08 der Code so zu gestalten

    Code
    1. Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities
    2. {
    3. Return (TUPC (0xFF, 0x09))
    4. }

    mit "0xFF" ist der aktiv, mit "Zero" (0x00) aus. Analog dazu HS13 gestalten.


    Edit: "GA-Z390 D" hat keinen onboard Thunderbolt.Controller?

    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)

  • Wenn ich die Werte 3 und 4 des Packages auch noch übergeben wollen würde, würde ich noch

    PCKG [Two] = Arg2 und PCKG [Three] = Arg3 einbauen, ja?

    :) fast.

    Nur "Zero" und "One" sind zulässig als alternativer Schreibweise zu "0x00" und "0x01". In dem Fall wäre also "0x02" und "0x03" angebracht. Allerdings findet da nix weiter statt, sind Platzhalter für eventuelle zukünftige Werte, müssen aber wie gehabt als "Viererpackage" übergeben werden.

    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)

  • Okay. Danke. Ja, mir ging es nur darum, die Logik zu verstehen. Nutzen möchte ich das nicht. Packages müssen also immer mindestens 4 werte enthalten, ja?

    Einmal editiert, zuletzt von 5T33Z0 ()

  • Edit: "GA-Z390 D" hat keinen onboard Thunderbolt.Controller?

    ...ich meinte das Z390 Designare [floet] sorry...und vielen Dank für die Erläuterung. Werde ich nachher gleich mal testen...


    Edit:

    Funktioniert ausgezeichnet! :thumbup:

    ...er, sie und es haben eingeschalteT, ausgeschalteT, umgeschalteT

    ...er, sie und es können einschalteN, ausschalteN, umschalteN

    Einmal editiert, zuletzt von maschinenwart ()

  • Packages müssen also immer mindestens 4 werte enthalten, ja?

    Nein, beliebig. Nur diese für _UPC jedoch. Denn der korrekte (direkte) Ausdruck in einem Port wäre zum Beispiel:


    Code
    1. Name (\_UPC, Package (0x04) // _UPC: USB Port Capabilities
    2. {
    3. 0xFF,
    4. 0x03,
    5. Zero,
    6. Zero
    7. })


    Das entspricht letztendlich dem Konstrukt Methode _UPC und GUPC. So wie ich es im ersten Thread beschrieb.

    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)

  • Eine weitere, eigene Variante für Methode _UPC innerhalb eines Ports.


    inklusive "Weiche":



    und ohne "Weiche":

    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)

  • Was ich bis jetzt noch gar nicht verstanden habe, ist, wie man erkennt, an welchem Port der USB stick gerade steckt. Mit IORegExploere, nehme ich an?


    Ich kannte meine Ports ja schon vorher, von daher ware es in meinem Fall egal, aber das gilt ja für die meisten nicht, denke ich.

  • Jupp, IORegistryExplorer zeigt das wunderbar dynamisch an. Bei einem neuen Gerät wird ein Baum hinzugefügt, dabei für eine kurze Zeit grün eingefärbt. Beim Entfernen ist's rot.

    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)

  • ...


    Ein letztes Special findet ihr unter HS13. Hieran hängt mein interner Bluetooth. Nach dieser Definition bleibt auch beim "DeepSleep" Bluetooth weiterhin aktiv, ich kann den Rechner per Maus oder Tastatur wecken und Bluetooth ist auch nach dem Wake selbstverständlich weiterhin aktiv. Dieses Problem hatte ich zuvor nicht, aber mit macOS Monterey war nach dem Sleep/Wake Bluetooth "tot". Das ist nun auch gefixt. :)

    Hierzu hätte ich noch ein paar Fragen. Ich benutze dieses Board ja auch schon einige Jahre als Hauptrechner aber sleep/wake hatte bisher bei mir noch nie funktioniert.


    Funktioniert das bei dir und wenn ja, welche Einstellungen (BIOS) sind hierfür notwendig?

    Benutzt du den internen Bluetooth und wenn ja, benötigt man hierfür besondere Kexts?


    Beste Grüße

    MW

    ...er, sie und es haben eingeschalteT, ausgeschalteT, umgeschalteT

    ...er, sie und es können einschalteN, ausschalteN, umschalteN

  • maschinenwart

    "normale", öfter gepostete BIOS-Einstellungen. Sleep funktioniert so wie es soll. Benutze internes WLan und Bluetooth, keine extra Kexts. Denn ich habe vom Mainboard die weiße Plastik-Abdeckung abgenommen, den "Blechkasten" abgeschraubt und das interne Wifi/BT-Modul gegen ein originales von Apple (inklusive Adapter) eingesetzt. Die Antennenstecker passten perfekt.

    Aber auch, wenn du eine extra Karte nutzt und dessen BT-Modul an einen internen USB-Slot gesteckt ist, kannst du diese Einstellungen des Ports auf deinen Port übertragen.

    Du kannst mir gern dein EFI zukommen lassen, dann schaue ich mir das an.

    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)

  • ...das Angebot nehme ich gerne wahr, vielen Dank!


    Ich habe eine Fenvi am USB-Port HS08 angeschlossen. Die funktioniert ja auch OOB.

    Im Anhang mein EFI...

    Dateien

    • oc_074_EFI.zip

      (11,17 MB, 62 Mal heruntergeladen, zuletzt: )

    ...er, sie und es haben eingeschalteT, ausgeschalteT, umgeschalteT

    ...er, sie und es können einschalteN, ausschalteN, umschalteN

  • maschinenwart

    bitte schicke mir noch ein aktuelles IORegistryExplorer-File. Muss noch etwas nachschauen. Gern auch per PM

    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)

  • ...hab ich dir gerade geschickt... :thumbup:

    ...er, sie und es haben eingeschalteT, ausgeschalteT, umgeschalteT

    ...er, sie und es können einschalteN, ausschalteN, umschalteN

  • _PLD zuweisen ist eher "Kür" als "Pflicht", oder? Zumindest wenn man es so detailliert macht, wie im Codesnippet.

  • ST33Z0

    Jein. :)

    Position, Form und Farbe muss nicht. Die Punkte "Ejectable" und "Visible" sind dann doch wieder interessant.

    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)