
Digamos que eu tenha um laptop e um powerbank (ou dois laptops) com USB tipo C conectados entre si, então como é decidido qual carrega qual?
É controlado pelo motorista? O kernel do Linux suporta esse controle?
Atualizar:
Vejo este conjunto de patches (atualmente v14), mas ainda não está na linha principal.
https://lwn.net/Articles/710741/
Mas algo chamado UCSI já está na versão 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.
Então, é correto dizer que o driver do kernel Linux para este problema está em andamento a partir da versão 4.10?
Responder1
No Linux você pode controlar a direção da energia em uma determinada porta escrevendo "source" ou "sink" no controle sysfs apropriado, por exemplo:
# echo source >/sys/class/typec/port0/power_role
# cat /sys/class/typec/port0/power_role
[source] sink
O termo entre colchetes indica como a energia está fluindo atualmente. Veja a documentação do kernel, veja:https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-typec
É claro que tudo isso funciona apenas se o dispositivo conectado à porta USB Type-C suportar Power Delivery. Portanto, não funcionará com um adaptador de energia Tipo C típico ou com a maioria das baterias portáteis Tipo C, pois elas raramente suportam PD em 2019.
Responder2
USB tipo C conectados juntos, então como é decidido qual carrega qual?
Tudo isso está complicado além da compreensão até agora. O conector Tipo C desempenha duas funções
- comunicação de dados
- entrega de energia.
Estas são funções quase independentes. Toda a funcionalidade depende se
- ambas as portas são hosts USB
- ambas as portas são dispositivos USB
- uma porta é de dados de função dupla e outra não é
- uma porta é potência de função dupla
...
n. ambas as portas são DRD e DRP,
Perdi todas as permutações aqui. O UCSI é uma tentativa da Microsoft de domar essa vasta permutabilidade no padrão API. Para ideias importantes, veja istoapresentaçãoe muitas outras publicações sobre "Interface UCSI".
Responder3
Como Marc respondeu acima, a direção do PD pode ser controlada /sys/class/typec/port*/power_role
, no entanto, se NÃO funcionar, como acontece no meu Thinkpad Yoga 6:
sudo bash -c 'echo sink > /sys/class/typec/port1/power_role'
bash: line 1: echo: write error: Invalid argument
Então você pode tentar o método de "hardware" reconectando rapidamente seu powerbank conforme mencionado poresta resposta.
Originalmente eu estava cético, mas surpreendentemente funciona! Foi necessária alguma prática - você precisa desconectar e reconectar rapidamente, mas não muito rápido. No meu caso eu uso o powerbank Romoss PPD20 e preciso desconectá-lo por cerca de meio segundo - apenas até o indicador de carga parar de piscar.