
Digamos que tengo una computadora portátil y un banco de energía (o dos computadoras portátiles) con USB tipo C conectados entre sí, entonces, ¿cómo se decide cuál carga cuál?
¿Está controlado por el conductor? ¿El kernel de Linux admite dicho control?
Actualizar:
Veo este conjunto de parches (actualmente v14) pero aún no está en la línea principal.
https://lwn.net/Articles/710741/
Pero algo llamado UCSI ya está en 4.10:
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.
Entonces, ¿es correcto decir que el controlador del kernel de Linux para este problema está en proceso a partir de la versión 4.10?
Respuesta1
En Linux, puede controlar la dirección de alimentación en un puerto determinado escribiendo "fuente" o "sumidero" en el control sysfs apropiado, por ejemplo:
# echo source >/sys/class/typec/port0/power_role
# cat /sys/class/typec/port0/power_role
[source] sink
El término entre paréntesis indica cómo fluye la energía actualmente. Consulte la documentación del kernel, consulte:https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-typec
Por supuesto, todo esto sólo funciona si el dispositivo conectado al puerto USB tipo C admite Power Delivery. Por lo tanto, no funcionará con un adaptador de corriente tipo C típico ni con la mayoría de las baterías portátiles tipo C, ya que rara vez admiten PD a partir de 2019.
Respuesta2
USB tipo C conectados entre sí, entonces, ¿cómo se decide qué carga cuál?
Hasta ahora todo esto es complicado e incomprensible. El conector tipo C tiene dos funciones
- comunicación de datos
- la entrega de energía.
Estas son funciones casi independientes. Toda la funcionalidad depende de si
- ambos puertos son hosts USB
- ambos puertos son dispositivos USB
- un puerto es de datos de doble función y otro no
- un puerto es de alimentación de doble función
...
norte. ambos puertos son DRD y DRP,
Perdí todas las permutaciones aquí. La UCSI es un intento de Microsoft de domesticar esta enorme permutividad y convertirla en un estándar API. Para ideas importantes, consulte esto.presentación, y muchas más publicaciones sobre "Interfaz UCSI".
Respuesta3
Como respondió Marc anteriormente, la dirección de PD se puede controlar a través de /sys/class/typec/port*/power_role
, sin embargo, si NO funciona, como lo hace en mi Thinkpad Yoga 6:
sudo bash -c 'echo sink > /sys/class/typec/port1/power_role'
bash: line 1: echo: write error: Invalid argument
Luego, puede probar el método de "hardware" volviendo a enchufar rápidamente su banco de energía como lo mencionaesta respuesta.
Al principio yo también era escéptico, pero, sorprendentemente, ¡funciona! Requirió algo de práctica: debes desconectarlo y volver a enchufarlo rápidamente, pero no demasiado rápido. En mi caso utilizo la batería externa Romoss PPD20 y necesito desconectarla durante aproximadamente medio segundo, justo hasta que el indicador de carga deje de parpadear.