루트 권한 없이 USB 장치 재설정

루트 권한 없이 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을 전송하여 이 무응답 문제를 해결할 수 있었습니다. 불행히도 루트 액세스가 필요합니다. 그렇죠?

루트 권한 없이 이 문제를 해결할 수 있는 다른 방법이 있습니까?

답변1

USBDEVFS_RESET을 사용하여 ioctl을 전송하여 이 무응답 문제를 해결할 수 있었습니다. 불행히도 루트 액세스가 필요합니다. 그렇죠?

아마도.

루트 권한 없이 이 문제를 해결할 수 있는 다른 방법이 있습니까?

글쎄, 당신이 send를 위한 당신의 애플리케이션을 작성했다면 ioctl, 그것을 누가 실행하든 상관없이 항상 루트 권한으로 실행되도록 setuid 루트로 설정할 수 있습니다.

관련 정보