USB Type-C, como é controlada a direção do fornecimento de energia?

USB Type-C, como é controlada a direção do fornecimento de energia?

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

  1. comunicação de dados
  2. entrega de energia.

Estas são funções quase independentes. Toda a funcionalidade depende se

  1. ambas as portas são hosts USB
  2. ambas as portas são dispositivos USB
  3. uma porta é de dados de função dupla e outra não é
  4. 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.

informação relacionada