Erstmalige Einrichtungserlaubnis verweigert USB-Port-Ubuntu 14.04


18

Ich habe gerade mein Arduino angeschlossen und das Licht ist an, aber der Blinktest konnte nicht hochgeladen werden. hier ist mein fehler:

Arduino: 1.6.7 (Linux), Board: "Arduino / Genuino Uno"

Sketch belegt 1.030 Byte (3%) des Programmspeicherplatzes. Maximal sind 32.256 Bytes möglich. Globale Variablen belegen 9 Bytes (0%) des dynamischen Speichers, während für lokale Variablen 2.039 Bytes verbleiben. Maximal sind 2.048 Bytes möglich. avrdude: ser_open (): Gerät kann nicht geöffnet werden "/ dev / ttyUSB0": Berechtigung verweigert ioctl ("TIOCMGET"): Unangemessenes ioctl für Gerät Problem beim Hochladen auf Board. Vorschläge finden Sie unter http://www.arduino.cc/en/Guide/Troubleshooter#upload .

In diesem Bericht sind weitere Informationen verfügbar, wenn "Ausführliche Ausgabe während der Kompilierung anzeigen" unter "Datei"> "Einstellungen" aktiviert ist.

usb  ubuntu 


2
@ IgnacioVazquez-Abrams - kannst du daraus eine Antwort machen? Wir versuchen, unseren Prozentsatz zu beantworten. :) Vielleicht mit ein bisschen Kopieren und Einfügen, es ist also nicht nur ein Link.
Nick Gammon

Ich habe alle Schritte gemacht und es hat beim ersten Mal funktioniert. Jetzt versuche ich mein zweites Programm hochzuladen und erhalte die Meldung 'avrdude: ser_open (): Gerät kann nicht geöffnet werden "/ dev / ttyUSB0": Berechtigung verweigert' Ich habe dies getan: roquet @ roquet-HP-ENVY-x360-m6 -Convertible: ~ $ sudo adduser roquet dialout Die Benutzerauswahl roquet' is already a member of '. roquet @ roquet-HP-ENVY-x360-m6-Cabrio: ~ $ sudo chmod a + rw / dev / ttyUSB0 roquet @ roquet-HP-ENVY-x360-m6-Cabrio: ~ $ ls-l / dev / ttyUSB * crw -rw-rw- 1 root dialout 188, 0 Jan 20 13:12 / dev / ttyUSB0 roquet @ roquet-HP-ENVY-x360-m6-Cabrio: ~ $ aber immer noch die Erlaubnis verweigern
Roque Zabalet

Antworten:


25

Aus der Dokumentation :

Öffnen Sie das Terminal und geben Sie Folgendes ein:

ls -l /dev/ttyACM*

Sie erhalten so etwas wie:

crw-rw---- 1 root dialout 188, 0 5 apr 23.01 ttyACM0

Die "0" am Ende von ACM kann eine andere Zahl sein oder es können mehrere Einträge zurückgegeben werden. Die Daten, die wir benötigen, sind "Dialout" (ist der Gruppeneigentümer der Datei).

Jetzt müssen wir nur noch unseren Benutzer zur Gruppe hinzufügen:

sudo usermod -a -G dialout $USER

dann:

sudo chmod a+rw /dev/ttyACM0

Sie müssen sich abmelden und erneut anmelden, damit diese Änderung wirksam wird.

Beachten Sie, dass das Vorhergehende alte Ubuntu-Anweisungen sind. In modernen Distributionen, die ConsoleKit verwenden, erstellen Sie die Datei /etc/udev/rules.d/01-ttyusb.rulesmit den folgenden Inhalten, laden Sie die udev-Regeln neu und schließen Sie das Arduino-Gerät erneut an:

SUBSYSTEMS=="usb-serial", TAG+="uaccess"

Gute Antwort. Bei neueren Installationen müssen Sie die udev-Regeln nicht neu laden. Udev wird /etc/udev/rules.d auf Änderungen überprüfen. Sie müssen das Arduino erneut einstecken.
Ppareit

@ppareit was zählt als "neuere installationen"? Dies funktioniert bei mir unter Ubuntu 16.04 nicht mit oder ohne erneutes Laden der Regeln (via sudo udevadm control --reload).
Desty

1
Ich denke, es hat nicht funktioniert, weil die Karte als Teil des Subsystems "tty" und nicht "usb-serial" identifiziert wurde. Wie auch immer, das Erstellen der folgenden udev-Regel funktionierte stattdessen für mich:, SUBSYSTEM=="tty", ATTRS{idVendor}=="(vendor)", ATTRS{idProduct}=="(product)", ATTRS{serial}=="(serial)", SYMLINK+="ttyUSB.arduino", GROUP="adm"wobei (Vendor) und (Product) von lsusbund (Serial) von der Ausgabe von genommen werden udevadm info -a -n /dev/ttyACM0|grep '{serial}'|head -n1.
Desty

Zumindest mit Ubuntu 16.04 habe ich dieses Problem auf Mint 18.1 nicht gesehen. Freut mich zu hören, dass Sie eine Lösung gefunden haben!
2.

GESCHAFFT!!!! UPVOTED. Ich habe eine 17.04 Distribution und die 1. Lösung war nicht persistent!
Tony Gil

3

Alles, was Sie tun müssen, ist, sich der Einwählgruppe hinzuzufügen, wie in der Antwort von Ignacio Vazquez-Abrams beschrieben. Dies geschieht im Terminal durch Eingabe von:

sudo usermod -a -G dialout $USER

Sie müssen nicht verwenden chmod. Dies gibt allen Benutzern und nicht nur Mitgliedern der Gruppe Lese- / Schreibzugriff. Bevor Sie jedoch versuchen, eine Verbindung herzustellen , müssen Sie sich abmelden und erneut anmelden . Sobald Sie sich wieder angemeldet haben, werden Sie als Mitglied der Dialout-Gruppe erkannt und können das Gerät öffnen.



0

Nichts oben hat mir geholfen. Wenn ich von einer offiziellen Website aus eine Datei installiert habe, startet sie nicht einmal. Dann habe ich Arduino IDE aus dem "Linux App Store" installiert und es hat funktioniert, aber ich habe ein Problem wie unser Freund von oben. Also habe ich es deinstalliert und über das Terminal installiert sudo apt install arduinound jetzt funktioniert es. Prost.


-1

Oder verwenden Sie einfach den Befehl chown.

sudo chown <username> /dev/ttyACM*

Das hat bei mir funktioniert


1
Diese Frage wurde auf dieser Website schon oft gestellt und die gleiche Antwort wurde von einem anderen Benutzer gegeben. Ich werde Chris Stratton zu diesem Thema zitieren: Dies ist eine schlechte Idee, insbesondere auf einem typischen dynamisch konfigurierten Linux mit udev oder ähnlichen Managing / Dev-Knoten, die Sie jedes Mal ausführen müssen, wenn Sie das Gerät anschließen. Fügen Sie stattdessen Ihren Benutzer der entsprechenden Gruppe hinzu. Dies ist eine dauerhafte Lösung.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.