Forum: Mikrocontroller und Digitale Elektronik DIAMEX-AVR unter arch linux


von Sebastian X. (slice)


Lesenswert?

Hi,
da ich mich mit AVR-Microcontroller programmierung beschäftigen wollte, 
habe ich mir einen Atmega168 & DIAMEX USB ISP 
(https://www.reichelt.de/Programmer-Entwicklungstools/DIAMEX-USB-ISP/3/index.html?ACTION=3&LA=5700&ARTICLE=110344&GROUPID=2969&artnr=DIAMEX+USB+ISP) 
gekauft. Als Entwicklungsumgebung habe ich Eclipse inkl. AVR Plugin 
installiert. Nun habe ich das Problem, dass mein programmer nicht 
erkannt wird. Ich erhalte in Eclipse folgende Fehlermeldung:
avrdude: error: usbasp_transmit: Input/output error
avrdude: error: usbasp_transmit: Input/output error
avrdude: warning: cannot set sck period. please check for usbasp 
firmware update.
avrdude: error: usbasp_transmit: Input/output error
avrdude: error: usbasp_transmit: Input/output error
avrdude: error: program enable: target doesn't answer. 0
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: error: usbasp_transmit: Input/output error

avrdude done.  Thank you.

lsusb ergibt folgende Ausgabe:
Bus 003 Device 026: ID 16c0:2a9b Van Ooijen Technische Informatica

Hoffe ihr könnt mir helfen.

MfG sebastian.

von Alexander S. (alesi)


Lesenswert?

Hallo,

das könnte an einer (fehlenden) Berechtigung liegen.
Gehörst Du zur Gruppe dialout (groups aufrufen).
Evtl. ausnahmsweise einmal als root probieren.

Kann aber auch an was anderem liegen, z.B. an den udev rules.

Oder die Fehlermeldung "please check for usbasp firmware update."
beachten.

: Bearbeitet durch User
von Sebastian X. (slice)


Lesenswert?

Alexander S. schrieb:
> Hallo,
>
> das könnte an einer (fehlenden) Berechtigung liegen.
> Gehörst Du zur Gruppe dialout (groups aufrufen).
> Evtl. ausnahmsweise einmal als root probieren.
>
> Kann aber auch an was anderem liegen, z.B. an den udev rules.
>
> Oder die Fehlermeldung "please check for usbasp firmware update."
> beachten.

Funktioniert als root auch nicht, die Gruppe dialout kann ich nicht 
finden. Ein Firmware update habe ich mit meinem windows laptop versucht, 
was aber nicht funktioniert hat.

von Axel S. (a-za-z0-9)


Lesenswert?

Sebastian X. schrieb:
> da ich mich mit AVR-Microcontroller programmierung beschäftigen wollte,
> habe ich mir einen Atmega168 & DIAMEX USB ISP
> gekauft. Als Entwicklungsumgebung habe ich Eclipse inkl. AVR Plugin
> installiert. Nun habe ich das Problem, dass mein programmer nicht
> erkannt wird. Ich erhalte in Eclipse folgende Fehlermeldung:
> avrdude: error: usbasp_transmit: Input/output error
...
> Hoffe ihr könnt mir helfen.

Anscheinend versuchst du, den Diamex USB ISP als usbasp anzusprechen. 
Ein Blick auf die Herstellerseite

http://www.diamex.de/dxshop/Programmiergeraete

zeigt 4 Geräte, die in Frage kommen. Wobei aber keines davon ein 
usbasp Klone ist, sondern alle das Protokoll entweder des AVRISP mk2 
oder des STK500 sprechen.

Andererseits spricht die Ausgabe von lsusb dafür, daß es doch ein 
usbasp sein könnte. Ein AVRISP mk2 würde sich so melden:

03eb:2104 Atmel Corp. AVR ISP mkII

Ein STK500(v2?) könnte sich aber mit der angegebenen (unspezifischen) 
USB ID melden. Da würde der Kernel dann aber ein serielles Device drauf 
mappen (/dev/ttyUSBxx oder /dev/ttyACMxx). Finde also erstmal heraus, 
was das für Hardware ist, die du da angesteckt hast. 'dmesg' könnte 
helfen.

Siehe auch den Beitrag "Programmer zum laufen bringen"

von Sebastian X. (slice)


Lesenswert?

Axel S. schrieb:
> Finde also erstmal heraus,
> was das für Hardware ist, die du da angesteckt hast. 'dmesg' könnte
> helfen.

Habe den programmer unter folgender Bezeichnung gefunden:
[474168.999540] cdc_acm 3-14:1.0: ttyACM0: USB ACM device

von c-hater (Gast)


Lesenswert?

Sebastian X. schrieb:

> avrdude: warning: cannot set sck period. please check for usbasp
> firmware update.

avrdude bekommt also schon auf eine trivialste Anfrage nicht die 
erwartete Antwort und empfiehlt ein Firmware Update. Diese Empfehlung 
ist falsch. avrdude rechnet hier schlicht nicht mit der Unfähigkeit 
seiner Benutzer, es nimmt einfach an, dass dieser wenigstens in der Lage 
wäre, den korrekten Typ der Hardware anzugeben...

Die Sache ist, dass dieser DIAMEX-Stick überhaupt kein 
usbasp-kompatibles Gerät ist. Deswegen versteht er Fragen in der 
usbasp-Sprache nicht.

Es ist vielmehr ein STK500v2 kompatibles Gerät. Das muss man avrdude 
bloss mitteilen und schon kann avrdude auch mit dem Stick in seiner 
Sprache reden...

von Axel S. (a-za-z0-9)


Lesenswert?

Sebastian X. schrieb:
> Axel S. schrieb:
>> Finde also erstmal heraus,
>> was das für Hardware ist, die du da angesteckt hast. 'dmesg' könnte
>> helfen.
>
> Habe den programmer unter folgender Bezeichnung gefunden:
> [474168.999540] cdc_acm 3-14:1.0: ttyACM0: USB ACM device

Dann ist es anscheinend ein STK500v2 kompatibler Programmer. Jetzt wo 
ich mal auf den Link zu Reichelt geklickt habe, steht das da sogar.
Port ist dann entsprechend /dev/ttyACM0.

von Sebastian X. (slice)


Lesenswert?

c-hater schrieb:
> avrdude rechnet hier schlicht nicht mit der Unfähigkeit
> seiner Benutzer, es nimmt einfach an, dass dieser wenigstens in der Lage
> wäre, den korrekten Typ der Hardware anzugeben...

Da ich meinen Programmer nicht in der Liste gefunden habe, habe ich den 
Programmer mit der gleichen USBVID genommen (PID habe ich angepasst).

c-hater schrieb:
> Es ist vielmehr ein STK500v2 kompatibles Gerät. Das muss man avrdude
> bloss mitteilen und schon kann avrdude auch mit dem Stick in seiner
> Sprache reden...

Bin ein kompletter Neuling im Bereich AVR-Programmierung, könntest du 
mir verraten wie ich das machen kann?

von Stefan F. (Gast)


Lesenswert?

Irgendwo wird dein Eclipse Plugin eine entsprechende Einstellung haben. 
Ich würde mal im Dialog Window/Preferences nach dem Plugin suchen.

von Thomas G. (blasebalg)


Lesenswert?

Vielleicht erst mal "direkt" mit dem Teil ohne IDE sprechen ?
http://www.stecklina.net/projekte/notes_linux.html
Bei mir läuft so'n Teil schon länger unter Ubuntu Studio... mußte mich 
glaub ich nur zur Gruppe dailout zufügen

von Sebastian X. (slice)


Lesenswert?

Thomas G. schrieb:
> Vielleicht erst mal "direkt" mit dem Teil ohne IDE sprechen ?
> http://www.stecklina.net/projekte/notes_linux.html
> Bei mir läuft so'n Teil schon länger unter Ubuntu Studio...

Ich konnte mit dem Befehl "avrdude -pm16 -c stk500v2 -P /dev/ttyACM0 -t 
-F
" als root eine Verbindung aufbauen. Ohne root Rechte ist keine 
Verbindung möglich. Wie kann ich das ganze in Eclipse anwenden damit ich 
Eclipse zum programmieren verwenden kann?

Thomas G. schrieb:
> mußte mich
> glaub ich nur zur Gruppe dailout zufügen

Kann diese Gruppe leider nicht finden.

von c-hater (Gast)


Lesenswert?

Sebastian X. schrieb:

> Ich konnte mit dem Befehl "avrdude -pm16 -c stk500v2 -P /dev/ttyACM0 -t
> -F
> " als root eine Verbindung aufbauen.

Das ist doch schonmal gut, das heisst nämlich: avrdude funktioniert und 
der DIAMEX-Adapter funktioniert auch.

> Ohne root Rechte ist keine
> Verbindung möglich.

Das musst du als allererstes ändern. In diesem Zusammenhang ist das 
relevant:

> Thomas G. schrieb:
>> mußte mich
>> glaub ich nur zur Gruppe dailout zufügen
>
> Kann diese Gruppe leider nicht finden.

Ich hoffe für dich, dass dich nicht schon der kleine Tippfehler von 
Thomas ausgeschäkelt hat. Die Gruppe heisst natürlich üblicherweise 
"dialout", nicht "dailout".

Allerdings gibt es keinerlei Zwang für eine Linux-Distribution, dass sie 
so heißen muss. Du musst also ggf. herausfinden, welche Gruppe deine 
Linux-Distribution für die entsprechende Aufgabe verwendet (nämlich: 
Zugriff auf serielle Schnittstellen (vom Typ UART) zu gewähren). 
Übrigens: Warum verwendest du eigentlich arch-Linux, wenn du keine 
Ahnung hast, wie das funktioniert?

> Wie kann ich das ganze in Eclipse anwenden damit ich
> Eclipse zum programmieren verwenden kann?

Und noch ein warum: Warum verwendest du eigentlich Eclipse, wenn du 
keine Ahnung hast, wie das funktioniert bzw. zu konfigurieren ist?

von Thomas G. (blasebalg)


Lesenswert?

OK...OK die Gruppe heißt unter arch weder dailout noch dialout 
sondern... scheinbar "uucp"
So... Rest mußt aber nu selber fummeln:
https://wiki.archlinux.org/index.php/Users_and_groups

von R. M. (Gast)


Lesenswert?

Habe bei mir unter
/etc/udev/rules.d
eine Datei 12-serial.rules, mit folgendem Inhalt:
////
KERNEL=="ttyUSB[0-9]*",SYMLINK+="%k",GROUP="nutzer",MODE="0666"
KERNEL=="ttyACM[0-9]*",SYMLINK+="%k",GROUP="nutzer",MODE="0666"
////
angelegt (statt "nutzer", die Gruppe eintragen, in der Du bist).
Nach abziehen/neustecken des Gerätes, oder Neustart des udev-Daemon
sudo /etc/init.d/udev restart
sollten die Zugriffsrechte so stehen, das jeder von lesen/drauf 
schreiben kann.

crw-rw-rw- 1 root dialout 188, 0 Feb  8 18:32 /dev/ttyUSB0

PS: sehe gerade, die Zuweisung der Gruppenzugehörigkeit greift bei mir 
nicht, die Ports gehören der Gruppe dialout, aber die Zugriffsrechte 
passen.

mfG

von Sebastian X. (slice)


Lesenswert?

c-hater schrieb:
> Ich hoffe für dich, dass dich nicht schon der kleine Tippfehler von
> Thomas ausgeschäkelt hat. Die Gruppe heisst natürlich üblicherweise
> "dialout", nicht "dailout".

Nein.

c-hater schrieb:
> Warum verwendest du eigentlich arch-Linux, wenn du keine
> Ahnung hast, wie das funktioniert?

Weil ich vor kurzer Zeit von Windows auf Linux umgestiegen bin, und 
eigentlich ziemlich gut damit zurecht komme.

c-hater schrieb:
> Und noch ein warum: Warum verwendest du eigentlich Eclipse, wenn du
> keine Ahnung hast, wie das funktioniert bzw. zu konfigurieren ist?

Weil ich bis jetzt in Eclipse nichts groß konfigurieren musste und fast 
alles ohne zusätzlicher konfiguration funktioniert hat.

Edit:

R. M. schrieb:
> Habe bei mir unter
> /etc/udev/rules.d
> eine Datei 12-serial.rules, mit folgendem Inhalt:
> ////
> KERNEL=="ttyUSB[0-9]*",SYMLINK+="%k",GROUP="nutzer",MODE="0666"
> KERNEL=="ttyACM[0-9]*",SYMLINK+="%k",GROUP="nutzer",MODE="0666"
> ////
> angelegt (statt "nutzer", die Gruppe eintragen, in der Du bist).

Hat funktioniert, Danke.

: Bearbeitet durch User
von neuer PIC Freund (Gast)


Lesenswert?

Die Gruppe uucp ist doch extra für RS232-Peripherie. Da wäre es 
eleganter, deine Gruppenzugehörigkeit zu erweitern, als die Hardware 
umzudefinieren. Obwohl das natürlich auch geht.

von R. M. (Gast)


Lesenswert?

neuer PIC Freund schrieb im Beitrag #4894837:
> Die Gruppe uucp ist doch extra für RS232-Peripherie. Da wäre es
> eleganter, deine Gruppenzugehörigkeit zu erweitern, als die Hardware
> umzudefinieren. Obwohl das natürlich auch geht.

Ist natürlich richtig, zu Zeiten als an manchem seriellen Anschluss noch 
ein Modem, mit Amtsleitung oder Amtsberechtigung hing, sollte man sich 
schon überlegen, ob das Jeder angemeldete Nutzer in die Hände bekommen 
darf ;-)

Jetzt, wo oft nur noch ein Mensch vor dem Rechner sitzt, der den 
Programmer auch noch vorher reinstecken muss, kann man solch kleinen 
Schlendrian ja ausnahmsweise mal durchgehen lassen glaub ich..
mfG

von neuer PIC Freund (Gast)


Lesenswert?

MODE="0666" hat doch auch irgendwie Scheunentorcharakter. Da wäre es 
knuffiger, das Device wird mit MODE="0660" unter Zuhilfenahme von 
ATTRS{idVendor} und Co. zu ttyDIAMEX.

Aber als root brauchen ihn die normalen User-Gängeleien nicht zu 
kümmern.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.