新しくインストールしたUbuntuでUSBデバイスを開くことができないlibusbベースのプログラムがあります。これはアクセス許可がないためです。
この解決策 はおそらく私にとってはうまくいくでしょうが、それはすべてのデバイスを手動で指定する必要があります-そして私はかなりあります。だから私はこれを試しました(ファイル/etc/udev/rules.d/41-cvs-permissions.rules
で):
SUBSYSTEM=="usb", MODE:="0666"
VIDとPIDを省略し、すべてのデバイスにルールを単純に適用することを期待しています。確かに何らかの効果がありますが、その効果はかなり奇妙です。開くことができない5つのデバイスを検出する代わりに、libusbは2つだけを検出します。両方とも実際のデバイスではなくUSBホストコントローラーです。
私が望むものを達成するには?
USBデバイスを扱う方法は、特定のグループにすべてのデバイスへのアクセスを許可することです。
ルートとして:
echo 'SUBSYSTEM=="usb", MODE="0660", GROUP="plugdev"' > /etc/udev/rules.d/00-usb-permissions.rules
udevadm control --reload-rules
基本的にこれは、USBデバイスの読み取りおよび書き込みアクセスをplugdevグループのメンバーに許可することです。
VID/PIDを使用してルールを一致させることは明確な解決策ではないことに同意します。しかし、すべてのUSBデバイスを盲目的にターゲットにすることなく、同じルールで複数のデバイスを使用できます。 DRIVER
name(usb-storage
、usbhid
、..)またはKERNEL
name(tty*
、sd*
、..)を使用した例正規表現(sd[a-z][0-9]*
、usb*
)。
属性の類似点を探す必要があります。
/dev
にデバイスの現在のリストを保存します
ls /dev > /tmp/dev_list0.txt
ターゲットデバイスの1つを接続します
デバイスのリストを別のファイルに保存します
ls /dev > /tmp/dev_list.txt
ファイルを比較、>
デバイスを追加、<
デバイスを削除
$ colordiff /tmp/dev_list0.txt /tmp/dev_list.txt
85a86,87
> sdc
> serial
89a92,93
> sg4
> sg5
93a98
> sr1
194a200,201
> ttyUSB0
> ttyUSB1
これは3Gモデムです。
必要なすべてのインターフェイスの属性を確認します。例:
udevadm info --attribute-walk --name=/dev/ttyUSB0
必要なすべてのデバイスで同じことを行います。方法がわからない場合は、udevadm info --attribute-walk --name=...
出力をアップロードし、質問にリンクしてください。
すべてのUSBデバイスが/dev
にノードを作成するわけではないことに注意してください。 SYSFSツリー/sys
で探しているものもあります。次に、--path
を使用して属性を確認します
udevadm info --attribute-walk --path=...
上記と同じ手順を使用して、udev
イベントを監視して作成されたデバイスノードを確認できます。
udevadm monitor