Linux Mint 17.3 || Arduino IDE 1.6.5 || avrdude: ser_open(): can't open device

OP #4680630
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
Moderator Persönliche Seite #4680714
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).
Moderator Persönliche Seite #4680727
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.
Gast #4680730
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.
Moderator Persönliche Seite #4680761
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
Moderator Persönliche Seite #4680788
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.
Gast #4680791
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.
Gast #4681023
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.
Gast #4681030
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!)
Gast #4681061
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/
OP #4681382
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren