
假設我有一台筆記型電腦和一個行動電源(或兩台筆記型電腦),透過 USB Type 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 連接埠的裝置支援供電時,所有這些才有效。因此,它無法與典型的 Type-C 電源適配器或大多數 Type-C 便攜式電池配合使用,因為截至 2019 年,它們很少支援 PD。
答案2
USB Type C連接在一起,那麼如何決定哪個充電哪一個呢?
到目前為止,這一切都令人費解,難以理解。 Type-C連接器有兩個作用
- 數據通訊
- 電力傳輸。
這些是幾乎獨立的功能。整個功能取決於是否
- 兩個連接埠都是 USB 主機
- 兩個連接埠都是 USB 設備
- 一個連接埠是雙角色數據,另一個不是
- 一埠雙用電源
…
名詞兩個連接埠都是 DRD 和 DRP,
我在這裡失去了所有排列。 UCSI 是 Microsoft 將這種巨大的可變性納入 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 行動電源,我需要拔掉它大約半秒鐘 - 直到充電指示燈停止閃爍。