【发布时间】:2022-11-16 09:07:27
【问题描述】:
长话短说
我想知道是否有办法从 USB 设备描述符控制 /sys/bus/usb/devices/5-1.1/power/control 文件中的值。主机总是将它设置为auto,我希望它隐式设置为on。
全文
我在笔记本电脑 USB 冷却器上添加了一个微控制器,因为我希望设备在主机挂起时进入休眠状态。微控制器是 DigiSpark ATTiny85,我正在使用 V-USB 库来模拟 USB 设备。
为了检测主机是否挂起,我不断检查主机是否发送了帧起始数据包(它每 3 毫秒左右发送一次,除非挂起),如果没有收到新数据包,设备就会进入休眠状态。接收 SoF 数据包会导致中断,从而唤醒微控制器,从而唤醒冷却器。
到目前为止,一切正常。
但是,我对这个文件有一个小问题:
/sys/bus/usb/devices/5-1.1/power/control 被设置为“自动”,并且由于冷却器和主机之间确实没有通信(除了主机发送到设备的 SoF 数据包),主机在连接后很快自动挂起设备。 :/
一旦我将文件值设置为on,主机就不会再根据是否存在通信来尝试自动挂起设备(所需的挂起睡眠行为仍然可以正常工作)。但是,当然,每次拔下并重新插入设备时都需要这样做。
现在......也许我也可以从冷却器向主机发送一些虚拟数据,以模拟通信,但是,除非主机读取它,否则一些缓冲区肯定会填满,这就是为什么这看起来不像一个解决方案。
我想知道是否有某种方法可以调整 USB 设备描述符以告诉主机虽然这是一个总线供电设备,但它不应该尝试自动挂起它。
任何想法都受到高度赞赏。
【问题讨论】: