シリアルポート端末> / dev / ttyS0を開けません:許可が拒否されました


19

このボックスにWindows XPがあり、失敗しました。OSが破損していると思い、再インストールを試みましたが失敗しました。しかし、その後、Ubuntuをインストールしようとしましたが、USBまたはHDから実行できませんでした。

DID MEMのテストをして、私の512MBのスティック(2を持っていた)のいずれかが失敗した見つけました。悪いものを削除し、Ubuntuをインストールできましたが、動作が遅くなりました。

ハリケーンサンディのパケットラジオをすばやくセットアップしようとしていました。シリアルポートターミナルをダウンロードし、使用できるようになりましたが、システムはロックし続けました。そのため、Xubuntuをその隣にインストールし、翌日には箱のRAMを確保することを計画しています。Xubuntuをオンにすると、シリアルポートターミナルで次のエラーが表示されます。

Cannot open /dev/ttyS0: Permission denied

シリアルポートターミナルまたは同等のXubuntuを使用して、kpc3パケットターミナルを使用して、コンピューターの背面にあるcomポートに接続できるようにしたいと思います。

何か案は?

回答:


39

ttyデバイスは「dialout」グループに属します。あなたはこのグループのメンバーではないため、/ dev / ttyS0へのアクセスが拒否されていると思われるため、そのグループに自分を追加する必要があります。

あなたがそのグループのメンバーであるかどうかを最初に確認してください:

groups ${USER}

..これは、所属するすべてのグループをリストします。ダイアルアウトグループに所属していない場合は、次のように自分を追加します。

sudo gpasswd --add ${USER} dialout

次に、ログアウトしてから再度ログインして、有効にする必要があります。次に、問題が解決するかどうかを確認します。


id 1000のダイヤルアウトグループユーザーであっても、シリアルポートを開いて読み取ることができません。再起動後。ただし、同じ実行可能ファイルに対してsudoを使用すると、を開くことができます/dev/ttyS0。考えられる理由は何ですか?
オリエント

2
@Orient私も同じ問題を抱えていましたが、それはグループdialoutが定義されていなかったからです。実行newgrp dialoutすると問題が修正されました。
TheGr8_Nik

@ TheGr8_Nikありがとう。ソリューションはUbuntu 16.04で機能しました。再起動は必要ありません。デフォルトでは、このシステムにはグループ名がありませんdialoutgroupsコマンドで確認します。dialoutcommandを介してグループにユーザー名を追加した後でもsudo usermod -a username -G dialout。を使用した後newgrp dialout、このコマンドesptool.py -p /dev/ttyUSB0 flash_idは機能しました。
サンベア

11

私のために働く唯一の解決策は次のとおりです:(マシンを起動するたびに)

sudo chmod 666 /dev/ttys0

本当にインストール時に修正する必要があります。私は15.10で、16.04 LTSを試しましたが、まだ同じです。このような単純な修正のようです。

古いバージョン10.04LTSにはこの問題はありませんでした。


2
これはraspberry pi 3で機能しますが、再起動すると権限が失われます。
J261

1
ダイアルアウト用のユーザー名へのアクセス許可の追加は、非常に簡単に修正できました。
DRJ101

6

次のコマンドを使用できます。

sudo adduser $USER dialout

これにより、現在のユーザーがダイヤルアウトグループに追加されます。ログインしてから有効にします。


4

Ubuntu 18.04では、次のコマンドを使用してこの問題を修正しました。

sudo usermod -a -G tty $USER
sudo usermod -a -G dialout $USER

そして、この後、再起動します。

それでも問題が解決しない場合は、次を使用してデバッグしてください。

strace -ff <COMMAND> > strace.txt 2>&1

そして、トレースで「拒否」を探します。


3

さまざまなフォーラムを調べてみたところ、権限に関連するバグのようです。問題を回避する方法は次のとおりです(長いバージョン)。両方cusetserialパッケージをインストールする必要があります。

3つの端末タブで、からの監視出力は、# tail -f /var/log/messages それがあるかどうかを知る方法/dev/ttyUSB0です。

2番目のタブで、ls -lこのデバイスへのループを実行して、 アクセス許可とグループIDが「ダイヤルアウト」であることを確認します。これが重要なビットです。何らかの理由で、ユーザーはこのGIDを使用してを実行する必要がcuあるため、...

3番目のタブで、rootとして# newgrp dialout(ダイヤルアウトのGIDに対応するため)しました。でテスト # touch /tmp/anything...やってls -l、それがダイヤルアウトグループとルートによって作成され、このファイルショーに、私たちはそうしているに...準備ができ# cu -l /dev/ttyUSB0 、他の例では速度が必要になることがあり、私は、期待されるプロンプトを確認するために再びリターンを打つために必要な私の場合指定されます。


これは私を助けた実際の作品でした。何らかの理由で、ユーザーはこのGIDを使用してcuを実行する必要があります。どうもありがとう。
ΤΖΩΤΖΙΟΥ

1

解決策は次のとおりです。

オペレーティングシステムをUbuntu 18にアップデートしました。通常、Arduino Webサイトからarduino IDEをインストールします。Ubuntuソフトウェアポータル経由で提供されるものは常に古いバージョンであり、最新の機能とボードサポートが必要でした。しかし、私は最新のオペレーティングシステムをインストールしたばかりなので、ubuntuの公式ソフトウェアセンターには最新バージョンのIDEがリストされていると思いました。

ジューシーな部分に!ラップトップとデスクトップの両方で、シリアルポートへのアクセスで同じ問題が発生しました。私はユーザーをダイヤルアップグループの一部にし、シリアルポートのアクセス権を設定しましたが、常にログアウトしてから再度ログインする必要があり、再起動するたびにすべてをやり直しました!楽しくない!。

今回は、うまくいきませんでした。ソフトウェアセンターでも、ソフトウェアのアクセス許可オプションにシリアルポートが「切断」されていることが示されています。sudoを使用してターミナルウィンドウからすべてのアクセス許可を手動で付与した後でも、ポートへのアクセス許可を許可するオプションはありません。

ソフトウェアセンターからArduino IDEをアンインストールし、Webサイトからインストールすることにしました。今回はインストールファイルを読みましたが、シリアルポートのアクセス許可が記載されているかどうかを確認するためだけに、もちろん*****でした。******すべてのポートにはフルアクセス許可、ユーザーアクセスが全面的に設定されています。これが答えだったことがわかりました。arduinoが提供するarduino-linux-setup.shファイルを実行すると、シリアルポートの問題はすべて解決されました。以下はarduino-linux-setup.shファイルからの抜粋です。

echo ""
echo "******* Add User to dialout,tty, uucp, plugdev groups *******"
echo ""

sudo usermod -a -G tty $1
sudo usermod -a -G dialout $1
sudo usermod -a -G uucp $1
sudo groupadd plugdev
sudo usermod -a -G plugdev $1


acmrules () {

    echo ""
    echo "# Setting serial port rules"
    echo ""

    cat <<EOF
    "KERNEL="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="$1"
   "KERNEL="ttyACM[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="$1"
   EOF

}

KERNELが影響を受けることもわかります。私のおすすめ:

arduino ide Webサイトからインストールします。現時点では、修復されるまでソフトウェアセンターを無視します。はい、ソフトウェアセンターは、インストール中、および永久にシリアルポートへのアクセスを許可していません。

問題が解決しました!


0

私の場合、次を使用してユーザーをグループに追加しても、問題は依然として存在します。

だから私が使用するとき:

sudo gpasswd --add ${USER} dialout

そして、私が入力したとき、私groupsはこの結果を得ました:

ilyahoo adm cdrom sudo dip plugdev lpadmin sambashare

しかしid -Gn ilyahoo、プットを入力すると:

ilyahoo adm tty dialout cdrom sudo dip plugdev lpadmin sambashare 

私はそれが正直に何であるかわからないという問題があることを知っています。

入力したソリューションを取得するには

newgrp ilyahoo

そして問題は修正されました。


ilyahooをaskubuntuにようこそ!ガイドラインに従って投稿をフォーマットしてください。より読みやすい方法で出力をフォーマットしてください。ありがとう
-abu_bua

1
@abu_buaは、引用形式ではなく、コマンド出力にコード形式を使用してください。
ムル

0

答えは簡単です。USBポートにアクセスするには、ユーザーを2つのグループに追加する必要があります。これらのグループは、dialouttty

sudo usermod -a -G dialout <user>
sudo usermod -a -G tty <user>

<user>これらのコマンドの実際のユーザー名に置き換えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.