USB Type-C,电力输送方向是如何控制的?

USB Type-C,电力输送方向是如何控制的?

假设我有一台笔记本电脑和一台移动电源(或两台笔记本电脑),它们通过 USB C 型连接在一起,那么如何决定哪个给哪个充电?

是由驱动程序控制的吗?Linux内核支持这样的控制吗?

更新:

我看到了这组补丁(目前是 v14)但是它还没有进入主线。

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

但是 4.10 中已经有一个叫做 UCSI 的东西了:

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.

那么,针对此问题的 Linux 内核驱动程序从 4.10 开始就处于开发中,这样说正确吗?

答案1

在 Linux 中,您可以通过将“source”或“sink”写入适当的 sysfs 控制来控制给定端口的电源方向,例如:

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

括号中的术语表示当前电源如何流动。请参阅内核文档:https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-typec

当然,所有这些功能只有在连接到 USB Type-C 端口的设备支持 Power Delivery 时才有效。因此,它无法与典型的 Type-C 电源适配器或大多数 Type-C 便携式电池配合使用,因为截至 2019 年,它们很少支持 PD。

答案2

USB Type C 连接在一起,那么如何决定哪个给哪个充电?

到目前为止,这一切都令人费解。Type-C 连接器有两个作用

  1. 数据通讯
  2. 电力输送。

这些几乎是独立的功能。整个功能取决于

  1. 两个端口都是 USB 主机
  2. 两个端口都是 USB 设备
  3. 一个端口是双角色数据,另一个不是
  4. 一个端口为双角色电源

...

n. 两个端口均为 DRD 和 DRP,

我在这里失去了所有的排列。UCSI 是微软试图将这种巨大的排列纳入 API 标准的一种尝试。有关主要想法,请参阅推介会,以及更多关于“UCSI 界面”的出版物。

答案3

正如 Marc 上面所回答的,可以通过 控制 PD 方向/sys/class/typec/port*/power_role,但是,如果它不起作用,就像在我的 Thinkpad Yoga 6 上一样:

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

然后,你可以尝试“硬件”方法,快速重新插入你的移动电源,正如这个答案

最初我自己也持怀疑态度,但出乎意料的是,它真的有效!这需要一些练习——你需要快速拔下并重新插入,但不要太快。就我而言,我使用 Romoss PPD20 移动电源,我需要拔下它大约半秒钟——直到充电指示灯停止闪烁。

相关内容