11

Ubuntu 12.04 の libusb-1.0 に基づいて、NetBeans で C/C++ アプリケーションを作成しています。USB デバイスから基本的な情報 (インターフェイスの説明など) を取得できますが、デバイスを開くことができません。関数 libusb_open は私にエラーを与えます:

libusb:error [op_open] libusb couldn't open USB device /dev/bus/usb/002/003: Permission denied.
libusb:error [op_open] libusb requires write access to USB device nodes.

アクセス許可を変更する必要があることは理解していますが、その方法がわかりません (私は非常に基本的な Linux ユーザーです)。ありがとうございました!

4

5 に答える 5

9

これは問題の一時的な解決策である可能性があると思いますが、プレストンの解決策は一貫して機能します。

1. デバイスに割り当てられている USB ポートを確認する

lsコマンドを 2 回呼び出すことで、どの USB ポートがデバイスに割り当てられているかを知ることができます(1 回目はデバイスが切断された状態で、2 回目はデバイスが接続された状態で)。

$ ls -l /dev/bus/usb/00*
/dev/bus/usb/001:
total 0
crw-rw-r-- 1 root root 189, 0  1월 10 12:08 001
crw-rw-r-- 1 root root 189, 1  1월 10 12:08 002

/dev/bus/usb/002:
total 0
crw-rw-r-- 1 root root 189, 128  1월 10 12:08 001
crw-rw-r-- 1 root root 189, 129  1월 10 12:08 002

/dev/bus/usb/003:
total 0
crw-rw-r-- 1 root root 189, 256  1월 10 12:08 001
crw-rw-r-- 1 root root 189, 257  1월 10 12:08 002
crw-rw-r-- 1 root root 189, 258  1월 10 12:08 003
crw-rw-r-- 1 root root 189, 259  1월 10 12:08 004
crw-rw-r-- 1 root root 189, 260  1월 10 12:08 005
crw-rw-r-- 1 root root 189, 263  1월 10 15:42 008 <-- this is your device

/dev/bus/usb/003/008があなたのデバイスだとしましょう。

2.全員(その他)に書き込み許可を与える

ls -lコマンドの出力によると、 root ユーザー (グループ)には読み取り/書き込み権限が003/008 portあり、他のユーザーには読み取り権限しかありません。

crw-rw-r-- 1 root root 189, 263  1월 10 15:42 008

コマンドを使用して、すべてのユーザーが特定のデバイスに書き込むことを許可できますchmod。コマンドの使用中は、権限chmodが必要になります。sudo

$ sudo chmod o+w /dev/bus/usb/003/008

また

$ sudo chmod a+w /dev/bus/usb/003/008

USBの許可を確認すると、この出力が表示されます

$ ls -l /dev/bus/usb/003/008
crw-rw-rw- 1 root root 189, 263  1월 10 15:42 /dev/bus/usb/003/008

3. プラグを抜くか、システムをシャットダウンするたびに、手順 1、2 を繰り返します。

デバイスを USB ポートから外すか、システムをシャットダウンすると、USB ポートに対して行った操作がリセットされます。

手順 1、2 をもう一度繰り返す必要があります。

これが、私の解決策が一時的(揮発性)であると言っている理由です。

さらなる読み物

この 2 つのブログ記事は、理解に役立つと思います。

于 2016-01-10T07:08:50.523 に答える
5

次のようなものにルールを追加した後/etc/udev/rules.d/

SUBSYSTEM=="usb", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="1234", MODE="0666", OWNER="YOU_USER_ID"

次のようにルールをリロードすることを忘れないでください。

$ sudo udevadm control --reload-rules
于 2017-08-25T08:09:05.490 に答える