latency_timer
내 애플리케이션에서는 USB 장치를 1로 편집 해야 합니다 . 왜냐하면 통신 지연이 많이 발생하기 때문입니다. 편집하려면 루트 액세스가 필요하지만 일반 사용자가 수행하기를 원합니다.
파일 latency_timer
은 다음과 같습니다
/sys/bus/usb-serial/devices/ttyUSB0/latency_timer
그것은 644/root:root입니다. 현재는 부팅할 때마다 루트 권한으로 편집해야 합니다.
내 생각에는 두 가지 해결책이 있으며 둘 다 받아들일 수 있습니다.
- 일반 사용자에게 편집 권한을 부여합니다
latency_timer
. latency_timer
장치가 연결되면 항상 1로 설정되도록 시스템 설정을 변경합니다 .
1, 2번은 어떻게 할 수 있나요?
(참고: "일반 사용자"는 이 dialout
그룹에 속하므로 장치에 대한 정기적인 읽기/쓰기 액세스 권한을 갖습니다.)
답변1
간단한 해결책은 방법 1을 사용하는 것입니다.
먼저 다음과 같은 bash 스크립트를 만듭니다 /sbin/fix_usb_latency.sh
.
#!/bin/bash
dev=ttyUSB0
if [ $# -ge 1 ];then
dev=$1
fi
if [ -f /sys/bus/usb-serial/devices/$dev/latency_timer ] && [ `cat /sys/bus/usb-serial/devices/$dev/latency_timer` -gt 1 ];then
echo "Fixing the latency issue of $dev..."
echo 1 | sudo tee /sys/bus/usb-serial/devices/$dev/latency_timer
fi
그런 다음 /etc/sudoer
사용자 또는 그룹이 /sbin/fix_usb_latency.sh
루트 권한 없이 실행할 수 있도록 편집합니다.
$ sudo visudo
사용자 akihikoy 권한을 부여합니다.
akihikoy ALL=PASSWD: ALL, NOPASSWD: /sbin/fix_usb_latency.sh
그룹( %
그룹을 나타냄)에 다이얼아웃 권한을 부여합니다.
%dialout ALL=PASSWD: ALL, NOPASSWD: /sbin/fix_usb_latency.sh
그러면 이 스크립트를 실행하는 데 비밀번호가 필요하지 않습니다.
$ sudo /sbin/fix_usb_latency.sh ttyUSB0