Libusbを介して特定のUSBデバイスを使用するMonoアプリケーションをRaspbianで実行しています。アプリケーションを正常に起動すると、デバイスを開くことができません。 rootとして(またはSudoを介して)アプリケーションを起動すると、アプリケーションはデバイスを正常に開きます。
アプリケーションをrootとして起動する必要がないように、アプリケーションまたはユーザーにUSBデバイスの適切なアクセス許可を与えるにはどうすればよいですか?
特定のグループにUSBデバイスへのアクセスを許可するには、/etc/udev/rules.d/
のudev
にルールを追加する必要があります。次の行を含む50-MyDevice.rules
というファイルを追加しました。
SUBSYSTEM=="usb",ATTRS{idVendor}=="abcd",ATTRS{idProduct}=="1234",MODE="0660",GROUP="mygroup",SYMLINK+="mydevice%n"
idVendorおよびidProductの後の値をUSBデバイスのVIDおよびPIDに置き換えました。各パラメータの後の等号の数に特に注意してください!
この後、Linuxを再起動しました。
これで、USBデバイスを接続するたびに(または同じデバイスを複数接続した場合)、/dev/mydevice1
または/dev/mydevice2
というシンボリックリンクが表示されます。これは、/dev/bus/usb/001/001
(または2番目の場合は/dev/bus/usb/001/002
)を指すシンボリックリンクです。これらのシンボリックリンクのターゲットには、ルールファイルで定義された適切なモードとグループのアクセス許可があります。