USB Typ C, wie wird die Richtung der Stromversorgung gesteuert?

USB Typ C, wie wird die Richtung der Stromversorgung gesteuert?

Angenommen, ich habe einen Laptop und eine Powerbank (oder zwei Laptops) mit USB Typ C miteinander verbunden. Wie wird dann entschieden, wer was auflädt?

Wird es vom Treiber gesteuert? Unterstützt der Linux-Kernel eine solche Steuerung?

Aktualisieren:

Ich sehe diesen Patchsatz (derzeit Version 14), aber er ist noch nicht in der Hauptlinie.

https://lwn.net/Articles/710741/

Aber etwas namens UCSI ist bereits in 4.10 enthalten:

http://lxr.free-electrons.com/source/drivers/usb/misc/Kconfig

270 config UCSI
271         tristate "USB Type-C Connector System Software Interface driver"
272         depends on ACPI
273         help
274           UCSI driver is meant to be used as a convenience tool for desktop and
275           server systems that are not equipped to handle USB in device mode. It
276           will always select USB host role for the USB Type-C ports on systems
277           that provide UCSI interface.

Ist es also richtig zu sagen, dass der Linux-Kerneltreiber für dieses Problem ab 4.10 in Arbeit ist?

Antwort1

Unter Linux können Sie die Stromrichtung an einem bestimmten Port steuern, indem Sie „Quelle“ oder „Senke“ in die entsprechende Sysfs-Steuerung schreiben, z. B.:

# echo source >/sys/class/typec/port0/power_role
# cat /sys/class/typec/port0/power_role
[source] sink

Der Begriff in Klammern gibt an, wie der Strom derzeit fließt. Siehe die Kernel-Dokumentation unter:https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-typec

Natürlich funktioniert das alles nur, wenn das an den USB-Typ-C-Anschluss angeschlossene Gerät Power Delivery unterstützt. Mit einem typischen Typ-C-Netzteil oder den meisten Typ-C-Akkus funktioniert es also nicht, da diese ab 2019 nur noch selten PD unterstützen.

Antwort2

USB Typ C zusammen verbunden, wie wird dann entschieden, wer wer lädt?

Das ist alles bisher unverständlich kompliziert. Der Typ-C-Anschluss übernimmt zwei Funktionen

  1. Datenkommunikation
  2. Leistungsabgabe.

Dies sind nahezu unabhängige Funktionen. Die gesamte Funktionalität hängt davon ab, ob

  1. beide Ports sind USB-Hosts
  2. beide Ports sind USB-Geräte
  3. Ein Port ist Dual-Role-Data und ein anderer nicht
  4. Ein Port ist Dual-Role-Power

...

n. beide Ports sind DRD und DRP,

Ich habe hier alle Permutationen verloren. Die UCSI ist ein Versuch von Microsoft, diese enorme Permutivität in einen API-Standard zu zähmen. Die wichtigsten Ideen finden Sie hierPräsentation, und viele weitere Veröffentlichungen zum Thema „UCSI-Schnittstelle“.

Antwort3

Wie Marc oben geantwortet hat, kann die PD-Richtung über gesteuert werden. /sys/class/typec/port*/power_roleWenn dies jedoch NICHT funktioniert, wie bei meinem Thinkpad Yoga 6:

sudo bash -c 'echo sink > /sys/class/typec/port1/power_role'
bash: line 1: echo: write error: Invalid argument

Dann können Sie die "Hardware"-Methode ausprobieren, indem Sie Ihre Powerbank schnell wieder anschließen, wie vondiese Antwort.

Anfangs war ich selbst skeptisch, aber überraschenderweise funktioniert es! Es erforderte etwas Übung – man muss es schnell aus- und wieder einstecken, aber nicht zu schnell. In meinem Fall verwende ich die Romoss PPD20-Powerbank und muss sie etwa eine halbe Sekunde lang ausstecken – nur bis die Ladeanzeige aufhört zu blinken.

verwandte Informationen