当我从 USB 集线器快速插入和拔出 USB 设备时,我在 Android 系统上遇到了奇怪的行为。发生的情况是,在集线器上快速插入/拔出设备后,我开始得到:
<6>[18121.010764] usb 2-1: new low speed USB device number 8 using tegra-ehci
<3>[18121.253237] hub 2-0:1.0: cannot reset port 1 (err = -110)
<3>[18121.478006] hub 2-0:1.0: cannot reset port 1 (err = -110)
<3>[18121.702795] hub 2-0:1.0: cannot reset port 1 (err = -110)
<3>[18121.927899] hub 2-0:1.0: cannot reset port 1 (err = -110)
<3>[18122.153156] hub 2-0:1.0: cannot reset port 1 (err = -110)
<3>[18122.153272] hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
<3>[18122.378371] hub 2-0:1.0: cannot reset port 1 (err = -110)
<3>[18122.603889] hub 2-0:1.0: cannot reset port 1 (err = -110)
此后,我插入集线器的任何东西都无法工作,直到集线器本身再次拔出/插入。
我已经能够通过使用 USBDEVFS_RESET 发送 ioctl 来修复此无响应问题。不幸的是,这需要 root 权限,我是对的吗?
有没有其他可能的方法来解决这个问题而不需要 root 权限?
答案1
我已经能够通过使用 USBDEVFS_RESET 发送 ioctl 来修复此无响应问题。不幸的是,这需要 root 权限,我是对的吗?
可能是。
有没有其他可能的方法来解决这个问题而不需要 root 权限?
好吧,如果您已经编写了自己的应用程序来发送ioctl
,您可以将其设置为 setuid root,以便它始终以 root 权限运行,无论谁在执行它。