root権限なしでUSBデバイスをリセットする

root権限なしでUSBデバイスをリセットする

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権限なしでこの問題を解決する他の方法はありますか?

答え1

USBDEVFS_RESETを使用してioctlを送信することで、この無応答問題を解決できました。残念ながら、ルートアクセスが必要です。そうですか?

おそらく。

root権限なしでこの問題を解決する他の方法はありますか?

さて、あなたがsendのためのあなたのアプリケーションを書いたらioctl、それが誰が実行されているかにかかわらず、常にroot権限で実行されるようにsetuid rootに設定できます。

関連情報