![带电源的 USB 数据直通(有点像集线器,但又不是)](https://linux22.com/image/1531126/%E5%B8%A6%E7%94%B5%E6%BA%90%E7%9A%84%20USB%20%E6%95%B0%E6%8D%AE%E7%9B%B4%E9%80%9A%EF%BC%88%E6%9C%89%E7%82%B9%E5%83%8F%E9%9B%86%E7%BA%BF%E5%99%A8%EF%BC%8C%E4%BD%86%E5%8F%88%E4%B8%8D%E6%98%AF%EF%BC%89.png)
我有一个不支持 USB 集线器且不供电的设备。我需要将手机连接到此设备,但不幸的是,这意味着我无法在使用手机的同时为手机充电。
我尝试了以下简单、朴素的方法:
- 尝试自供电集线器;主机设备不支持集线器。
- 尝试通过切断设备到手机的电源线来直接供电;基于 USB 的电源协商会告诉手机没有可用电源,并且不会充电。
- 首先将数据引脚短路,以便手机充电,然后将其打开。正如预期的那样,这意味着它不会与主机设备通信。
我的想法是,我需要一个几乎像集线器一样的东西,但它会传递除用于电源协商的消息之外的所有 USB 协议消息,并终止这些消息以提供电源。
有这样的设备吗?
答案1
通过为链路提供外部电源 (VBUS),弥补了“设备”USB 端口的设计缺陷,您确实解决了问题的第一部分。这是一个相当合理的解决方案。
第二部分(作为 USB 设备连接时充电)更具挑战性。
解决方案将取决于您的手机在保持数据链路协议的同时能够理解哪种端口充电签名。当手机插入 PC 或工作集线器的任何普通 USB 端口时,手机是否会充电?
如果无法通过普通数据端口充电(需要 500mA 电流并充电,但可能速度很慢),那么您需要尝试“电池充电”(BC1.2)端口(如果您能找到的话)。如果您的手机支持/识别 BC1.2 充电签名,您需要制作自己的设备,即手机和特殊“设备”之间的 BC1.2 附加模拟器。