Terminal für serielle Schnittstelle> Kann / dev / ttyS0 nicht öffnen: Berechtigung verweigert

19

Ich hatte Windows XP auf dieser Box und es ist fehlgeschlagen. Ich dachte, es sei ein beschädigtes Betriebssystem. Ich habe versucht, es neu zu installieren, und es ist fehlgeschlagen. Aber dann habe ich versucht, Ubuntu zu installieren, und ich konnte es nicht von USB oder von der Festplatte ausführen.

Hab den mem Test gemacht und herausgefunden, dass einer meiner 512MB Sticks (hatte 2) ausgefallen ist. Ich habe die schlechte entfernt und konnte Ubuntu installieren, aber es war träge.

Ich habe versucht, schnell mein Paketfunkgerät für den Hurrikan Sandy einzurichten. Das Serial Port Terminal wurde heruntergeladen und konnte verwendet werden, das System stürzte jedoch weiter ab. Also installierte Xubuntu daneben und plante, am nächsten Tag nicht mehr genügend RAM für die Box zu haben. Wenn Sie Xubuntu einschalten, wird der folgende Fehler mit dem seriellen Anschluss angezeigt:

Cannot open /dev/ttyS0: Permission denied

Ich möchte in der Lage sein, ein Terminal mit serieller Schnittstelle oder ein mit Xubuntu vergleichbares Terminal zu verwenden, damit ich mein kpc3-Paket-Terminal verwenden und eine Verbindung mit dem COM-Port auf der Rückseite meines Computers herstellen kann.

Irgendwelche Ideen?

Joe Reynolds
quelle

Antworten:

39

Die tty-Geräte gehören zur Gruppe "Dialout". Ich vermute, Sie sind kein Mitglied dieser Gruppe. Daher wird Ihnen der Zugriff auf / dev / ttyS0 verweigert. Sie müssen sich also dieser Gruppe hinzufügen.

Überprüfen Sie zunächst, ob Sie Mitglied dieser Gruppe sind:

groups ${USER}

..dies listet alle Gruppen auf, zu denen Sie gehören. Wenn Sie nicht zu den Dialout-Gruppen gehören, fügen Sie sich hinzu, zum Beispiel:

sudo gpasswd --add ${USER} dialout

Anschließend müssen Sie sich abmelden und erneut anmelden, damit dies wirksam wird. Dann versuchen Sie, das Problem zu beheben.

Colin Ian King
quelle
Selbst wenn Sie sich in einer Einwählgruppe mit der ID 1000 befinden, kann der serielle Port nicht zum Lesen geöffnet werden. Nach dem Neustart. Aber wenn ich sudo für die selbe ausführbare Datei benutze, kann es sich öffnen /dev/ttyS0. Was ist der mögliche Grund?
Orient
2
@Orient Ich hatte das gleiche Problem und es lag daran, dass die Gruppe dialoutnicht definiert war. Running hat newgrp dialoutdas Problem behoben.
TheGr8_Nik
@ TheGr8_Nik Danke. Ihre Lösung lief unter Ubuntu 16.04. Kein Neustart erforderlich. Standardmäßig hatte dieses System keinen Gruppennamen dialout. per groupsBefehl überprüft . Auch nach dem Anhängen des Benutzernamens an die dialoutGruppe per Befehl sudo usermod -a username -G dialout. Nach der Verwendung newgrp dialouthat dieser Befehl esptool.py -p /dev/ttyUSB0 flash_idfunktioniert.
Sun Bear
11

Die einzige Lösung, die für mich funktioniert, ist: (jedes Mal, wenn ich die Maschine starte)

sudo chmod 666 /dev/ttys0

Es muss wirklich zum Zeitpunkt der Installation behoben werden. Ich bin am 15.10 und habe 16.04 LTS ausprobiert, immer noch das selbe da. Scheint so eine einfache Lösung zu sein.

Die älteren Versionen 10.04LTS hatten dieses Problem nicht.

DRJ101
quelle
2
diese arbeit mit raspberry pi 3 aber beim neustart gingen die berechtigungen verloren.
J261
1
Das Hinzufügen von Berechtigungen zu meinem Benutzernamen für das Hinauswählen hat problemlos funktioniert, ziemlich einfache Korrektur.
DRJ101
6

Sie können einfach diesen Befehl verwenden:

sudo adduser $USER dialout

Dadurch wird der aktuelle Benutzer der Wählgruppe hinzugefügt. Loggen Sie sich ein und aus, um wirksam zu werden.

Bonnom
quelle
4

Unter Ubuntu 18.04 habe ich dieses Problem mit den folgenden Befehlen behoben:

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

Und danach neu starten.

Wenn Sie immer noch Probleme haben, versuchen Sie zu debuggen mit:

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

Und suchen Sie nach "verweigert" in der Straße.

Tseho
quelle
3

Wir haben uns in verschiedenen Foren umgesehen und es scheint ein Fehler in Bezug auf Berechtigungen zu sein. Hier ist, wie ich das Problem umgangen habe (lange Version). Sie müssen BEIDE cuund setserialPakete installiert haben.

Überwachte Ausgabe von Auf drei Registerkarten # tail -f /var/log/messages wissen wir, ob wir eine haben /dev/ttyUSB0oder nicht.

ls -lFühren Sie auf der zweiten Registerkarte einfach eine Schleife zu diesem Gerät aus, um die Berechtigungen anzuzeigen und die Gruppen-ID lautet "Dialout". DAS ist das kritische Stück. Aus irgendeinem Grund MUSS Ihr Benutzer diese GID verwenden cu, um ...

In der dritten Registerkarte, als root, wurde # newgrp dialout(entsprechend der GID des Dialouts). Getestet mit # touch /tmp/anything... ls -lzeigt, dass diese Datei von root mit einer Dialout-Gruppe erstellt wurde. Wir sind also bereit für ... # cu -l /dev/ttyUSB0 In meinem Fall musste ich erneut die Eingabetaste drücken, um die erwartete Eingabeaufforderung zu sehen. In anderen Fällen kann Geschwindigkeit erforderlich sein um genau zu sein.

linuxhelpie
quelle
Dies war das eigentliche Stück , das mir geholfen hat: Aus irgendeinem Grunde Ihre Benutzer muss diese GID verwenden , um die cu zu tun, so ... . Tausend Dank.
ΤΖΩΤΖΙΟΥ
1

Hier ist die Lösung:

Ich hatte gerade mein Betriebssystem auf Ubuntu 18 aktualisiert. Normalerweise würde ich die Arduino IDE über die Arduino Web-Sicht installieren, da die über das Ubuntu Software-Portal bereitgestellte Version immer eine ältere Version war und ich die neuesten Funktionen und Board-Unterstützung haben wollte. Da ich jedoch gerade das neueste Betriebssystem installiert habe, stellte ich fest, dass im offiziellen Software-Center von Ubuntu die neueste Version der IDE aufgeführt ist, und das tat es auch.

Nun zum saftigen Teil! Sowohl mein Laptop als auch mein Desktop hatten die gleichen Probleme beim Zugriff auf die seriellen Schnittstellen. Ich hatte den Benutzer zum Teil der Einwählgruppe gemacht und Berechtigungen für den seriellen Port festgelegt, musste mich aber immer wieder abmelden und alles bei jedem Neustart wiederholen! KEIN SPASS!.

Diesmal hat es nicht funktioniert. Auch im Software-Center wird in der Berechtigungsoption für die Software die serielle Schnittstelle "nicht verbunden" angezeigt. Es gibt keine Option, um die Berechtigung für den Port zuzulassen, auch wenn alle Berechtigungen manuell über das Terminalfenster mit sudo erteilt wurden.

Ich habe beschlossen, die Arduino IDE aus dem Software-Center zu deinstallieren und sie über die Web-Ansicht zu installieren. Dieses Mal habe ich die Installationsdateien gelesen, nur um zu sehen, ob darin Berechtigungen für die serielle Schnittstelle erwähnt sind oder nicht, ***** hat es natürlich getan! ****** Alle Ports sind mit Vollzugriffsberechtigungen eingerichtet, Benutzerzugriff auf der ganzen Linie. Es stellte sich heraus, dass dies die Antwort war. Nach dem Ausführen der von arduino bereitgestellten Datei arduino-linux-setup.sh wurden alle Probleme mit der seriellen Schnittstelle behoben. das folgende ist ein Auszug aus der arduino-linux-setup.shAkte;

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

}

Sie sehen also, dass sogar der KERNEL betroffen ist. Mein Vorschlag:

Installieren Sie von der Arduino Ide-Website. Ignorieren Sie das Software Center zu diesem Zeitpunkt, bis es repariert ist. Ja, das SOFTWARE-CENTER lässt während der Installation und für immer keine Berechtigungen für die serielle Schnittstelle zu.

Problem gelöst!

Joseph Wimsatt
quelle
0

In meinem Fall bleibt das Problem bestehen, auch wenn ich meinen Benutzer zur Gruppe hinzufüge mit:

Also wenn ich benutze:

sudo gpasswd --add ${USER} dialout

und wenn ich tippe: groupsIch habe folgendes Ergebnis:

ilyahoo adm cdrom sudo dip plugdev lpadmin sambashare

Aber wenn ich id -Gn ilyahootippe, ist der Putput:

ilyahoo adm tty dialout cdrom sudo dip plugdev lpadmin sambashare 

Ich weiß, dass es ein Problem gibt, von dem ich ehrlich gesagt nicht weiß, woran es liegt.

Um eine Lösung zu finden, habe ich nur getippt

newgrp ilyahoo

und das problem wurde behoben.

Ilyahoo
quelle
Willkommen ilyahoo bei askubuntu! Bitte versuchen Sie, den Beitrag gemäß unserer Richtlinie zu formatieren. Versuchen Sie, die Ausgabe besser lesbar zu formatieren. Danke
abu_bua
1
@abu_bua Bitte verwenden Sie die Code-Formatierung für die Befehlsausgabe, nicht die Formatierung in Anführungszeichen.
muru
0

Die Antwort ist einfach. Sie müssen Ihren Benutzer zu zwei Gruppen hinzufügen, um Zugriff auf die USB-Ports zu erhalten. Diese Gruppen sind dialoutund tty:

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

Ersetzen Sie <user>in diesen Befehlen durch den tatsächlichen Benutzernamen.

Soham Shailesh Ranade
quelle