Forum: Mikrocontroller und Digitale Elektronik Linux Mint 17.3 || Arduino IDE 1.6.5 || avrdude: ser_open(): can't open device


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Jan M. (pietus3)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute

Ich hoffe ihr könnt mir helfen.

Ich versuche momentan die Arduino IDE auf Linux Mint zum laufen zu 
bringen.
Wenn ich versuche mein Sketch zu übertragen mit meinem normalen Nutzer 
bekomm ich diesen Fehler:
1
avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied

Diesen Fehler bekomm iuch wenn ich root rechte nutze:
1
avrdude: ser_open(): can't set attributes for device "/dev/ttyACM0": Inappropriate ioctl for device
2
ioctl("TIOCMGET"): Bad file descriptor
Ich habe meinen nutzer der Gruppe dialout hinzugefügt, dies hat aber 
nicht den erwünscht Effekt gehabt. Zudem scheint mir Folgene Zeile etwas 
merkwürdig
1
lrwxrwxrwx 1 root root 5 Aug 12 13:43 /dev/ttyACM0 -> loop0

Während ich nach Lösungen gesucht habe sieht man eben diesen Zeile 
ziemlich häufig nur dass bei mir zweimal root steht und nicht root 
dialout, wie bei all denen ich das zuvor gesehen habe.

Hoffe ihr könnt mir helfen.

Vielen Dank für eure Bemühungen

Pietus3

von Harry L. (mysth)


Bewertung
0 lesenswert
nicht lesenswert
Die Serielle dürfte eher auf /dev/ttyUSB0 liegen.

von noreply@noreply.com (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Was ist loop0?

von Jan M. (pietus3)


Bewertung
0 lesenswert
nicht lesenswert
Ich denke dass ist egal.

von Jan M. (pietus3)


Bewertung
0 lesenswert
nicht lesenswert
Was loop0 ist weiß ich auch nicht.

von noreply@noreply.com (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jan M. schrieb:
> Was loop0 ist weiß ich auch nicht.

https://de.wikipedia.org/wiki/Loop_device

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Jan M. schrieb:

> Ich habe meinen nutzer der Gruppe dialout hinzugefügt, dies hat aber
> nicht den erwünscht Effekt gehabt.

Für ein normales serielles Gerät sollte es den gewünschten Effekt
haben.

> Zudem scheint mir Folgene Zeile etwas
> merkwürdig

Ist sie in der Tat.

> Während ich nach Lösungen gesucht habe sieht man eben diesen Zeile
> ziemlich häufig nur dass bei mir zweimal root steht und nicht root
> dialout, wie bei all denen ich das zuvor gesehen habe.

Das liegt daran, dass die Permissions eines Symlinks Schall und
Rauch sind: nur die Permissions des Link-Ziels sind für die
Beurteilung der Zugriffsrechte relevant.

Aber dennoch ist es natürlich Unfug, dass das jemand auf loop0
verlinkt hat, und der ioctl-Fehler ist dann folgerichtig.

noreply@noreply.com schrieb:
> Was ist loop0?

Irgendein Block-Gerätetreiber.  Hat zwar eine wunderhübsche
Kurzgeschichte über die Versionen und ihre Editierungen im Kopf
der Implementierungsdatei stehen, aber kein Sterbenswörtchen, wofür
er denn eigentlich gut wäre – und eine man page gibt's natürlich
auch nicht.

Harry L. schrieb:
> Die Serielle dürfte eher auf /dev/ttyUSB0 liegen.

It depends.  Treiber wie FTDI legen ttyUSB* an, während der USB
CDC-Treiber ttyACM* anlegt (automatic calling machine).

von Jan M. (pietus3)


Bewertung
0 lesenswert
nicht lesenswert
Hab ich die ausversehen die ganzen ACMs gebindet ? oder etwas in der 
Art?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Jan M. schrieb:
> Hab ich die ausversehen die ganzen ACMs gebindet ?

Ge-was-t?

Was hast du denn überhaupt als Hardware da dran?  Insbesondere, was
ist auf dieser Hardware genau als Kommunikationsschnittstelle verbaut?

von Oppa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> und eine man page gibt's natürlich
> auch nicht.

Bei mir schon, man loop.

Um dem System eine Datei als Blockdevice vorzugaukeln, z.B. um Image 
Dateien zu mounten.

Aber warum zeigt ACM0 darauf ?

von Jan M. (pietus3)


Bewertung
0 lesenswert
nicht lesenswert
Einen Arduino Uno.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Oppa schrieb:
> Jörg W. schrieb:
>> und eine man page gibt's natürlich
>> auch nicht.
>
> Bei mir schon, man loop.

Dann hat offenbar mittlerweile jemand eine geschrieben, das ist ja
schon mal positiv.

(Der Wikipedia-Artikel gaukelt vor, dass die Bezeichnung „loop“
dafür universelle Übereinkunft wäre … Unter FreeBSD ist dafür der
memory-disk-Treiber zuständig, und diese Funktionalität ist nur
eine seiner möglichen Varianten.)

> Aber warum zeigt ACM0 darauf ?

Ja, das ist wohl das, was hier die große Verwunderung produziert.

Das kann der TE aber nur selbst rausfinden.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Jan M. schrieb:
> Einen Arduino Uno.

Bitte Teil zwei der Frage auch beantworten.  Ich mag jetzt ungern
für dich raussuchen, ob da nun ein FTDI drauf ist oder ein
USB-AVR oder was auch immer.

von noreply@noreply.com (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:

> noreply@noreply.com schrieb:
>> Was ist loop0?
>
> Irgendein Block-Gerätetreiber.  Hat zwar eine wunderhübsche
> Kurzgeschichte über die Versionen und ihre Editierungen im Kopf
> der Implementierungsdatei stehen, aber kein Sterbenswörtchen, wofür
> er denn eigentlich gut wäre – und eine man page gibt's natürlich
> auch nicht.
>

Das ist die optimistische Version. In der pessimistischen Version wurde 
ein Kommando irgendwo gekupfert, um ein /dev/ttyACM0 als Device zu 
haben, an das avrdude senden kann.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
noreply@noreply.com schrieb:
> Das ist die optimistische Version.

Nö, /dev/loop0 gibt's auch sonst auf Linuxen, das ist schon ganz
real.

von Oppa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Lösche mal spaßeshalber den ACM0, ist eh nicht richtig so. Dann nochmal 
neu starten - den Arduino einstöpseln und dann die Arduino IDE.

Was sagt denn lsusb wenn der Arduino verbunden ist ?

von Oppa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich meine der UNO war noch FTDI, ich gucke mal ob ich meinen schnell 
finde.

von Jan M. (pietus3)


Bewertung
0 lesenswert
nicht lesenswert
Es ist FTDI bei mir.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Oppa schrieb:
> Ich meine der UNO war noch FTDI, ich gucke mal ob ich meinen schnell
> finde.

Hast schon recht: ein lsusb würde auch genügen, und der Tipp, den
Symlink mal zu löschen und das Gerät neu zu stöpseln, ist auch nicht
so verkehrt.  Ich hätte ja gedacht, dass das udev-Framework das selbst
tut, scheint aber nicht der Fall zu sein.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Jan M. schrieb:
> Es ist FTDI bei mir.

Dann muss es aber /dev/ttyUSB<n> heißen, mit <n> als bei 0 beginnender
Zählung für die Anzahl der entsprechenden Geräte im System.

ttyACM<n> wird nur für CDC (Communication Device Class) benutzt.

von Oppa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Falsch gemeint: ATMEGA 16U2-MU(R)

von noreply@noreply.com (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> noreply@noreply.com schrieb:
>> Das ist die optimistische Version.
>
> Nö, /dev/loop0 gibt's auch sonst auf Linuxen, das ist schon ganz
> real.

Ich habe nur /dev/loop-control. ;-)

Für /dev/loop0 muß der root schon gearbeitet haben.

von Jan M. (pietus3)


Bewertung
0 lesenswert
nicht lesenswert
Gibt es einen Befehl mit dem man solche Verknüpfungen löschen kann?

Also sämtliche ttyACM* sind bei mir zu etwas verknüpft.

von Oppa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> dass das udev-Framework das selbst
> tut, scheint aber nicht der Fall zu sein.

Aha, meiner ist Rev3.

Tja, tut udev überhaupt noch. Hat das nicht inzwischen auch Systemd in 
den Händen ?

von Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht lesenswert
Oppa schrieb:
> Ich meine der UNO war noch FTDI,

Uno R1 hat einen 8U2
R3 einen 16U2
China UNOs öfter mal einen CH340

Andere, z.B. mit FTDI sind mir noch nicht unter gekommen.
Mag es aber geben....

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Jan M. schrieb:
> Gibt es einen Befehl mit dem man solche Verknüpfungen löschen kann?

rm

von Oppa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Linux is eint Unix - alles ist eine Datei.

sudo rm /dev/ttyACM0

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Arduino F. schrieb:
> Oppa schrieb:
>> Ich meine der UNO war noch FTDI,
>
> Uno R1 hat einen 8U2
> R3 einen 16U2

Dann dürfte es wohl in der Tat ein /dev/ttyACM0 sein.

Wie schon gesagt, lsusb könnte da etwas Klarheit bringen, und auch
der Blick nach /var/log/syslog (direkt nach dem Anstöpseln), denn
dort sollte sowas stehen wie:
1
Aug 12 17:13:08 mani kernel: [3640226.651862] cdc_acm 2-1.6.1.3:1.1: ttyACM0: USB ACM device

oder halt beim FTDI:
1
Aug 12 17:21:26 mani kernel: [3640725.021049] usb 2-1.6.7.3: FTDI USB Serial Device converter now attached to ttyUSB0

von noreply@noreply.com (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Teil abstecken.



tail -f /var/log/messages

3x Return eingeben

Teil anstecken.

Ergebnisse posten.

von Jan M. (pietus3)


Bewertung
0 lesenswert
nicht lesenswert
Also erstmal vielen Dank an alle. Nun funktioniert es.

Sollte ich sämtliche ttyACM* löschen? Um die Verknüpfungen zu löschen ?


Und kann mir jmd Tipps geben, wo ich über solche Themen mehr nachlesen 
kann um zu lernen.

Pietus3

von Jan M. (pietus3)


Bewertung
0 lesenswert
nicht lesenswert
noreply@noreply.com schrieb:
> tail -f /var/log/messages

Dieses Verzeichnis wird nicht gefunden

von Oppa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jan M. schrieb:
> Dieses Verzeichnis wird nicht gefunden
Yep, schöne Grüße von Systemd. plain text logfiles sind soo 90er :)

>Und kann mir jmd Tipps geben, wo ich über solche Themen mehr nachlesen
>kann um zu lernen.
http://openbook.rheinwerk-verlag.de/linux/

Wird Dich aber ein paar Jahre beschäftigen :) Zu udev bin auch über den 
Arduino gekommen.

von Oppa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hmm, so langsam vermisse ich das edit.

Es wird dann an dem falschen Link gelegen haben. udevd wollte das device 
anlegen aber da war ja schon eines.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Jan M. schrieb:
> Also erstmal vielen Dank an alle. Nun funktioniert es.

Schön.

> Sollte ich sämtliche ttyACM* löschen? Um die Verknüpfungen zu löschen ?

Wenn es ähnlich sinnloser Kram ist, ja.

Ein korrektes /dev/ttyACM* sieht irgendwie so aus:
1
crw-rw---- 1 root dialout 166, 0 Aug 12 17:13 /dev/ttyACM0

Die major number (166) könnte sich ggf. unterscheiden, sollte aber
für alle /dev/ttyACM* die gleiche sein.  Die minor number (direkt
dahinter) sollte mit der Ziffer nach /dev/ttyACM übereinstimmen.

> Und kann mir jmd Tipps geben, wo ich über solche Themen mehr nachlesen
> kann um zu lernen.

In Internetforen. :-)

Im Ernst: es gibt Dinge, die lernt man beim Betrieb eines Systems
nebenbei (so wie du gerade), danach merkt man sie sich einfach.

Jan M. schrieb:
>> tail -f /var/log/messages
>
> Dieses Verzeichnis wird nicht gefunden

Weil es, wie ich oben schon schrieb, bei vielen Linux-Distributionen
heute lieber als /var/log/syslog angelegt wird.  Ist halt eine Frage
der Konvention, dieser Name ist nicht in Stein gemeißelt, sondern
wird in der Konfiguration des syslog-Dämons festgelegt.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Oppa schrieb:
> Hmm, so langsam vermisse ich das edit.

Musst du dich halt anmelden und angemeldet posten.  Dann kannst du,
solange es noch keine Folgebeiträge gibt, deine eigenen Beiträge
editieren.

von noreply@noreply.com (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jan M. schrieb:
> noreply@noreply.com schrieb:
>> tail -f /var/log/messages
>
> Dieses Verzeichnis wird nicht gefunden

Debian kennt /var/log/messages. Könnte eine Eigenheit von Linux Mint 
17.3 sein oder ich werde zu alt.

Loggings stehen in /var/log. /var/log/syslog habe ich auch. Stehen 
ähnliche Dinge drin. Im Prinzip plaudert der Kernel munter über Geräte, 
die an USB angeschlossen werden. Das nimmt man zum Fehlersuchen.

Aber jetzt geht es ja.

von Jan M. (pietus3)


Bewertung
0 lesenswert
nicht lesenswert
Ja. Nur nachdem ich den Arduino einmal entferne und wieder anschließe 
ist wieder /dev/ttyACM0 wird mit loop verknüpft und muss dies erst 
wieder löschen. Das ist doch so nicht richtig oder?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Jan M. schrieb:
> Das ist doch so nicht richtig oder?

Ist es in der Tat nicht.

Dann wirst du dir wohl oder übel mal ansehen müssen, wer da den
udev-Dämon so verhunzt konfiguriert hat, dass er so einen Müll macht.

Die Konfigurationsdaten dafür liegen normalerweise in /etc/udev/rules.d/

von Jan M. (pietus3)


Bewertung
0 lesenswert
nicht lesenswert
So danke. Dass ist auch jz gelöst. Vielen Dank noch einmal.

von Oppa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
noreply@noreply.com schrieb:
> Debian kennt /var/log/messages. Könnte eine Eigenheit von Linux Mint
> 17.3 sein oder ich werde zu alt.

Nee, nur Dein Debian. Gibt es hier auch nicht. siduction = Debian sid

von Oppa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jan M. schrieb:
> So danke. Dass ist auch jz gelöst. Vielen Dank noch einmal.

Und wer war nun der Übeltäter ? Wo kam der eigenartige link auf 
/dev/loop her ?

von noreply@noreply.com (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Oppa schrieb:
> noreply@noreply.com schrieb:
>> Debian kennt /var/log/messages. Könnte eine Eigenheit von Linux Mint
>> 17.3 sein oder ich werde zu alt.
>
> Nee, nur Dein Debian. Gibt es hier auch nicht. siduction = Debian sid

Danke. Ich bin bei stretch (testing). Vielleicht hat sich die Testcrew 
ja was gegönnt. ;-) Hatte vorher aber auch squeeze, wheezy und jessie 
und mir ist nie etwas aufgefallen.

von Kaj (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Seit es systemd gibt ist journalctl dein freund.

/var/log/messages gibt es nicht mehr.

Bei aktuellen Systemen (hier Arch Linux, Kernel 4.7) steht das alles 
unter
/var/log/journal/<kryptischer random name>/<genauso kryptischer 
dateiname>, anzusehen mit journalctl.

Als Beispiel:
1
journalctl | tail -n 20
Ihr solltet einen Filter mittels grep, tail oder was auch immer 
anwenden, denn journalctl gibt ohne weiteres erstmal alles aus, was seit 
dem allerersten starten des systems so gelogt wurde. Das fängt bei 
diesem PC hier beim 24.4.2016 um 18:34:24 Uhr an.
1
-- Logs begin at So 2016-04-24 18:34:24 CEST, end at Fr 2016-08-12 21:34:55 CEST. --

Und das ist schon ungefähr solange so, solange es systemd gibt ;)
Also ja, der ein oder andere hier wird einfach alt :P

(Ob systemd toll ist oder nicht, ist eine andere frage!)

von Norbert (Gast)


Bewertung
0 lesenswert
nicht lesenswert
1
journalctl -n30 -f
 macht das Leben einfach.

von Norbert (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Kaj schrieb:
>... denn journalctl gibt ohne weiteres erstmal alles aus, was seit
> dem allerersten starten des systems so gelogt wurde.
1
journalctl -b
seit dem letzten Bootvorgang.

von noreply@noreply.com (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Kaj schrieb:
> Und das ist schon ungefähr solange so, solange es systemd gibt ;)
> Also ja, der ein oder andere hier wird einfach alt :P
>
> (Ob systemd toll ist oder nicht, ist eine andere frage!)

Yeah. Wird Zeit, das ihr meine Pension verdient. ;-)

Durch den Thread bin ich darauf aufmerksam geworden. Ein Haufen ewig 
Gestriger. :-)

https://devuan.org/

von Jan M. (pietus3)


Bewertung
0 lesenswert
nicht lesenswert
Oppa schrieb:
> Und wer war nun der Übeltäter ? Wo kam der eigenartige link auf
> /dev/loop her ?

Ich bin mir nicht sicher. Ich hatte eine Rule selbst erstellt, wie sie 
auf der offiziellen Arduino Seite steht. Aber da Bestand schon die 
Verknüpfung. Habe diese unnötige Rule trotzdem gelöscht. Zudem habe ich 
sämtliche /ttyACM* gelöscht und gerebootet seit dem läuft es :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.