저는 Lubuntu 16.04.3 LTS에서 HIDAPI를 사용하여 맞춤형 USB HID 장치와 함께 사용할 데스크톱 앱을 만들고 있습니다. myapp
지금은 전화하겠습니다 .
분명히 , 에서는 $ ./myapp
실패 libusb_open()
합니다 LIBUSB_ERROR_ACCESS
. (내 디버거에는 로 표시됩니다 -3
. 열거형이 잘 문서화되지 않은 것 같아서 알아내는 데 시간이 좀 걸렸습니다.)
하지만 그렇게 하면 $ sudo ./myapp
성공합니다. 루트 권한을 갖고
싶지 않은데 루트 권한 없이 어떻게 USB 장치와 통신할 수 있습니까?myapp
나는 대답을 바랐다.여기, 하지만 정확히 이 시점에서 버려진 것 같습니다. 사용자 권한에 대한 내용이 나와 있지만 내 시스템에서는 해당 내용을 찾을 수 없는 것 같습니다. 나는 이름이 붙은 그룹을 찾 usb
거나 libusb
나 자신을 추가할 수 있는 그룹을 찾을 수 있을 것이라고 생각했지만 그런 행운은 없었습니다.
다른 SE 사이트의 이 질문일부 엄격한 텍스트 파일을 사용하여 전역적으로(아마도 나쁜 생각일 수 있음) 또는 특정 장치에 대한 권한을 변경하는 답변이 있지만 다음과 같습니다.
- 제가 찾던 '머글의 트윅'이 아니네요.
- 이러한 파일의 대부분은 자동 생성되므로 직접 수정하지 말라는 경고가 표시됩니다. 그렇다면 무작위 패키지 업데이트로 인해 변경 사항이 지워져서 중단되지 않을 것이라고 어떻게 확신할 수 있습니까
myapp
? - 어쨌든 아무것도하지 않는 것 같습니다. 해당 지침에 따라 재부팅했는데
myapp
사용자 권한이 있어도 여전히 USB와 통신할 수 없습니다.
답변1
내가 정말로 찾고 있는 것은 여전히 "머글의 비틀기"는 아니지만 적어도 이것은 작동합니다:
분명히 udev에는 두 개의 디렉토리가 있습니다(이유는 모르겠습니다):
/etc/udev/rules.d
/lib/udev/rules.d
나는 그 /lib
사람을 엉망으로 만들고 아무데도 가지 못했습니다. 나는 그것을 /etc
찾았다여기, 작동합니다.
놓다SUBSYSTEM=="usb", ATTRS{idVendor}=="VID", ATTRS{idProduct}=="PID", MODE="0666"
VID
은USB-IF 할당 공급업체 ID문제의 장치 *PID
해당 장치의 공급업체 할당 제품 ID입니다. *0666
이 줄과 일치하는 모든 항목에 대한 보편적인 읽기/쓰기 액세스를 제공합니다.*
$ lsusb
연결된 모든 USB 장치와 해당 ID를 확인합니다.
있음 /etc/udev/rules.d/xx-my-rule.rules
(root/sudo 권한이 필요할 수 있음)
xx
50보다 큰 임의의 숫자입니다(기본값은 50이고 더 높은 숫자가 우선순위를 갖습니다).my-rule
네가 부르고 싶은 대로 부르면 돼- 다음으로 끝나야 합니다
.rules
그런 다음 udevadm control --reload-rules
(root/sudo 권한이 필요할 수도 있음) 특정 VID/PID 쌍에 대해 "작동"해야 합니다.
권한을 좀 더 강화하는 또 다른 옵션 TAG+="uaccess"
은 MODE="0666"
. 이는 모든 사용자가 아닌 현재 로그인한(물리적) 사용자로 액세스를 제한합니다. @Lekenstein님 감사합니다!
답변2
이 문제로 어려움을 겪고 있는 다른 사람을 위해 - 추가해야 했습니다.그룹="플러그개발"Ubuntu 18.04에서 내 udev 규칙을 적용하여 작동하게 합니다.
내 BTD-400 어댑터의 경우 파일/etc/udev/rules.d/51-usb-device.rules읽는다:
SUBSYSTEM=="usb", ATTRS{idVendor}=="0a5c", ATTRS{idProduct}=="21e8", GROUP="plugdev", TAG+="uaccess"