web-dev-qa-db-ja.com

シリアルポートのアクセス許可を変更する

UbuntuでArduino IDEを使用していますが、シリアルポートに問題があります。過去にも機能していましたが、不必要な理由から、一部のファイルの所有権をルート所有権からユーザー所有権に変更する必要性を感じました。

これによりIDEが正しく動作しましたが、正しいシリアルポートを使用する機能が失われました。 devフォルダーでは、必要なポートは許可166としてリストされています。誰か(私を助けるためにこのエリアにいなくなった)が許可を666に交換しました。

しかし、コンピューターを再起動するとすぐに元に戻り、コマンドを使用しようとすると:

Sudo chmod 666 ttyACM0

何も起こりません。エラーメッセージは表示されませんが、権限は変更されません。

どうすれば変更でき、永久に変更するにはどうすればよいですか。

この質問が過度に単純化されていたり、不明瞭だったり、私がubuntu noobだとしたら、謝罪します。フィードバックをgrしまないでしょう!

54
Terrik

/dev/ttyACM0の権限に関する問題は、dialoutグループに自分を追加することで永続的に解決できます。グループの変更が認識される前に、ログアウトしてから再度ログインする必要があります。

Sudo usermod -a -G dialout $USERでこれを行うことができます

76
Rinzwind

Rinzwindの提案 を取得できませんでした。ユーザーアカウントが既に存在するという苦情があったためです。代わりに、このコマンドを使用して、既存のユーザー(terrik)を既存のグループ(dialout)に追加しました( buntu Help Wiki で説明しています)。

Sudo adduser terrik dialout

また、Rinzwindが言っているように、シリアルポートからのログインを開始する前にログアウトしてログインする必要がありますが、現在のグループをリストするにはこのコマンドが便利です。

groups terrik
20
Don Kirkby

Terrikの答え を取得できませんでしたが、ttyACM0のパスにこのわずかな調整を加えるとできました。

Sudo chmod 666 /dev/ttyACM0

コメントとして投稿しますが、その権限はまだありません...

10
gbmhunter

もう1つの可能性は、/etc/udev/rules.d/ディレクトリにルールファイルを作成することです。私は同様の問題を抱えていたので、上記のディレクトリに次のコンテンツで50-myusb.rulesファイルを作成しました。

KERNEL=="ttyACM[0-9]*",MODE="0666"

これにより、ttyACMソケットに接続されたデバイスに読み取り/書き込み権限が付与されることに注意してください。読み取り/書き込み権限を取得するために特定のデバイスのみが必要な場合は、idVendorおよびidProductも確認する必要があります。これらを見つけるには、lsusbコマンドを2回実行します。1回はデバイスを接続せずに、もう1回は接続してから、出力の追加行を確認します。そこにBus 003 Device 005: ID ffff:0005のようなものが表示されます。この場合、idVendor = ffffおよびidProduct = 0005。あなたのものは異なります。ルールファイルを次のように変更するより:

ACTION=="add", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="0005", MODE="0666"

これで、このデバイスのみが許可を取得します。 こちらをお読みください udevルールの作成について詳しく知る.

10

System/Users and Groupsに移動して、TTYグループのユーザー名のボックスをチェックしてみてください。

2
user247020