latency_timer
私のアプリケーションでは、USBデバイスを1に編集する必要があります。なぜなら、通信遅延が多く発生するからです。編集にはrootアクセスが必要ですが、通常のユーザーが実行したいと思います。
ファイルlatency_timer
は次のとおりです
/sys/bus/usb-serial/devices/ttyUSB0/latency_timer
それは 644/root:root です。現在は、起動するたびにroot権限で編集する必要があります。
私の考えには2つの解決策があり、両方を受け入れることができます。
- 一般ユーザーに編集権限を付与します
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
root権限なしで実行できるように編集します。
$ 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