
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
- Datenkommunikation
- Leistungsabgabe.
Dies sind nahezu unabhängige Funktionen. Die gesamte Funktionalität hängt davon ab, ob
- beide Ports sind USB-Hosts
- beide Ports sind USB-Geräte
- Ein Port ist Dual-Role-Data und ein anderer nicht
- 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_role
Wenn 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.