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


54

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

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

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

sudo chmod 666 ttyACM0

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

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

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


1
sudo chmod 666 / dev / ttyACM0これは、このページで14.04 beta2ライブ環境で機能する唯一の提案でした。ありがとう!

回答:


76

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

あなたはこれを行うことができます sudo usermod -a -G dialout $USER


このことを知ったのは、Arduino IDEが「Dailoutグループ」に自分自身を追加するためにrootに与えることを要求したときです。今、私はそれが何であるかを知っています。
Ufoguy

新しいテレビで使用するためにPulse-Eight USB-CECアダプターを購入しましたが、UbuntuのKodiで最初は動作しませんでした。クラッシュログを確認し、エラーメッセージ「エラー:CecLogMessage-シリアルポート '/ dev / ttyACM0'を開くときにエラーが発生しました:許可が拒否されました」を検索した結果、このページが表示されました。あなたのおかげで(そして、以下のドン・カークビーも-うまくいきます)、私はすぐに問題を修正することができました。
Rich.T.

また、「user247020」からの回答は、別の解決策を提供しました。GUIツール「Users and Groups」を開き、自分を「Administrator」にします。これにより、特に「ダイヤルアウト」グループ(「モデムを使用」)に追加されます。
Rich.T.

usermod -a -G dialout piは、sudo chgrp dialout / dev / ttyS0の後に正常に動作し、正常に動作しますが、再起動するとすべての設定が失われます。私はラズベリーパイ3
J261

やり直す必要があるコマンドを起動スクリプトに追加します。したがって、bashまたは/ etc / profileまたはinit。
リンツウィンド

20

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

sudo adduser terrik dialout

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

groups terrik

10

Terrikの回答を機能させることはできませんでしたが、のパスにこのわずかな調整を加えた場合はできttyACM0ます。

sudo chmod 666 /dev/ttyACM0

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


1
Arduinoを取り外して再度接続すると、アクセス許可がリセットされるようです。
user1063287

動作しません。:(
フレディ

同様に機能します。しかしreppluggingに再許可にudevのルールが必要です
pylover

試したがsudo chmod 666 /dev/ttyACM0、再起動時に機能しません。誰にも解決策がありますか?
user1063287

うーん、これは機能します....起動スクリプトにコマンドを追加します。(/ Devはブート時に再作成されるため、各ブートでこのコマンドをやり直す必要があります)
Rinzwind

10

別の可能性は、/etc/udev/rules.d/ディレクトリにルールファイルを作成することです。私は同様の問題を抱えており50-myusb.rules、上記のディレクトリに次の内容のファイルを作成しました。

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

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

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

これで、このデバイスのみが許可を取得します。これ読んで、 udevルールの記述について詳しく知ってください。


2

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


[Errno 13] Permission denied: '/dev/ttyACM0'ttyグループだけでなく、ユーザーもdialoutグループに属します。Linux Mint 17.1。
user1063287

1
@ user1063287試してくださいsudo chmod a+rw /dev/ttyACM0
ウラジミールS.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.