Forum: Compiler & IDEs avrdude schmeißt beharrlich USB-Fehler


von Jan R. (janra)


Lesenswert?

Hallo zusammen,
diese Fehlermeldung

avrdude: stk500v2_recv_mk2: error in USB receive

ist wahrlich kein Einzelfall, dennoch war es mir bisher nicht möglich, 
einen Grund oder gar eine Lösung dafür zu finden hier. Die letzten 
Meldungen, die ich fand, waren zudem >4 Jahre alt. Trotzdem habe ich ihn 
heute immer noch. Ausgemerzt ist er also nicht.

Ich nutze avrdude 6.1 auf einem Mac mit 10.10.3, also einem BSD-System. 
Als Programmer habe ich einen Atmel AVR ISP mkII mit der FW 1.10 am 
Start.

Mein avrdude-Aufruf ist stets dieser:

$ avrdude -P usb -c avrispmkII -p t85 ....

Nach allem, was ich gelesen habe hierzu, ist mir völlig unklar, ob das 
Problem im USB-Stack des OS ist, ob die Firmware des ISP oder avrdude 
eine Macke hat. Weiß hierzu jemand mehr? Dann könnte ich gezielter 
suchen.

Laut Atmel gäbe es wohl Firmware-Updates für den mkII, diese allerdings 
in deren Windows-only-Programmierstudio, oder als Standalone-Installer 
in einer atfw.exe oder so. Auch Windows.
Eigentlich will ich auch nicht in dem Teil herumstochern, auch nicht mit 
Büroklammer als Jumper, wie Atmels Webseite beschreibt, denn der mkII 
funzte immer gut und ich sehe den eher als verläßliche Größe im 
Dreikampf aus eigenem Code (buggy), eigener Hardware (buggy) und dem 
ISP.

Wer kann mich etwas erleuchten?  Die Fehlermeldung an sich wäre ja zu 
tolerieren, nur legt der mkII immer lange Bedenkpausen hierüber ein, was 
die Turnaroundzeiten echt in die Länge zieht.

VG, Jan.

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


Lesenswert?

AVRDUDE kümmert sich ja nicht selbst um die USB-Kommunikation, sondern
wickelt das alles über die libusb ab.

Ich habe allerdings lange kein JTAGICEmkII mehr an einem OSX 
ausprobiert.

Kannst du mal gucken, ob du mit dtruss eine Erleuchtung bekommst, an
welcher Stelle das klemmt?

von Jan R. (janra)


Lesenswert?

Jörg Wunsch schrieb:
> AVRDUDE kümmert sich ja nicht selbst um die USB-Kommunikation,
> sondern wickelt das alles über die libusb ab.
>
> Ich habe allerdings lange kein JTAGICEmkII mehr an einem OSX
> ausprobiert.
>
> Kannst du mal gucken, ob du mit dtruss eine Erleuchtung bekommst, an
> welcher Stelle das klemmt?

Hallo Jörg,
besonders erleuchtet werde ich durch die SysCalls nicht; hier paste ich 
mal ein paar Zeilen rings um die Stelle mit der Fehlermeldung. Um hier 
im Forum nicht alles vollzukleistern (dtruss hustet echt eine Menge 
raus), habe ich den ganzen Auswurf im http://pastebin.com/7WzvRM9z 
abgelegt.

Hier der Auszug:

poll(0x7FC569730140, 0x3, 0xEA60)     = 1 0
read(0x8, "@\0", 0x10)     = 16 0
write(0x9, "@\0", 0x10)     = 16 0
poll(0x7FC569730140, 0x3, 0xEA60)     = 1 0
read(0x8, "@\0", 0x10)     = 16 0
avrdude: stk500v2_recv_mk2: error in USB receive
write(0x9, "@\0", 0x10)     = 16 0
poll(0x7FC569730140, 0x3, 0xEA60)     = 1 0
read(0x8, "@\0", 0x10)     = 16 0
write_nocancel(0x2, "avrdude: stk500v2_recv_mk2: error in USB 
receive\n\0", 0x31)     = 49 0
write(0x9, "@\0", 0x10)     = 16 0
poll(0x7FC569730140, 0x3, 0xEA60)     = 1 0
read(0x8, "@\0", 0x10)     = 16 0
avrdude: stk500v2_recv_mk2: error in USB receive
write(0x9, "\0", 0x10)     = 16 0
poll(0x7FC56B0000F0, 0x3, 0xEA60)     = 1 0
read(0x8, "\0", 0x10)     = 16 0
write_nocancel(0x2, "avrdude: stk500v2_recv_mk2: error in USB 
receive\n\0", 0x31)     = 49 0
write(0x9, "@\0", 0x10)     = 16 0
poll(0x7FC569730140, 0x3, 0xEA60)     = 1 0
read(0x8, "@\0", 0x10)     = 16 0
write(0x9, "\260yPi\305\177\0", 0x10)     = 16 0
poll(0x7FC569507590, 0x3, 0xEA60)     = 1 0
read(0x8, "\260yPi\305\177\0", 0x10)     = 16 0


VG, Jan.

von Jan R. (janra)


Lesenswert?

Hallo,
um die lästigen und mir unerklärlichen Wartezeiten loszuwerden, nach 
denen der Programmierschritt ja stets dennoch funktionierte, hatte ich 
mich entschlossen, es mit einem Firmware-Update im mkII anzugehen. Dies 
schien mir der überfälligste und auch der einzige gehbare Schritt zu 
sein.

Da Atmel ja Windows-only ist, beschaffte ich mir übergangsweise eine VM 
mit Windows. Dort mußte ich zunächst ein SP installieren, dann kam 
Visual Studio Runtime irgendwas und dann war Atmel Studio befriedigt, es 
ließ sich installieren. Kurz nach seinem Start vermeldete es xxx Updates 
aus allen erdenklichen Sparten, auch eins für "Tools" war dabei. Das 
wollte ich runterladen und wählte es aus. Das Download-Layover-Fenster 
blieb aber leider leer. Der Klick zum Fensterschließen führt jedesmal 
unweigerlich zum Absturz der Applikation Atmel Studio. Visual Studio 
kriegt das mit und fragt mich dann keck, welchen Debugger ich denn jetzt 
wohl gerne einsetzen möchte, um dem Ganzen auf den Grund zu gehen ...
Also ließ ich Downloads innerhalb von Atmel Studio sein. Immerhin hatte 
die gerade heruntergeladene und installierte 6.2sp2_1563 schon ein 
neueres im Bauch für den mkII, nämlich das 1.17, als meiner in seinem 
Flash hat: v1.a. Was ist "a" denn für eine Zahl? Warum ändert man 
unterwegs das Versionsschema?

Dieses 1.17 wollte ich dennoch in den mkII reinflashen. Zuvor überprüfte 
ich die Funktion des mkII vom AStudio aus, wählte Port und Part aus und 
holte mir Signatur und anderes aus meiner Schaltung mit dem tiny85. Kaum 
war das Update angestoßen, war der Vorgang auch schon wieder zu Ende. 
Der mkII blinkte schnell und bunt, AStudio warf einen Fehler "Verbindung 
unterbrochen". Natürlich ließ ich alles unberührt, während das lief. Ich 
probierte es erneut, das Resultat bleibt immer gleich.

In diesem Fall schlägt die Atmel-Webseite eine dafür vorbereitete 
Handlungsliste vor (ja, die haben sie extra dafür). Es gibt noch einen 
atfw.exe in einem Verzeichnis, dem ich die neurere FW und die 
vollständige Seriennummer (incl. der führenden 3 Nullen!!! Obwohl diese 
nicht auf dem Gehäuseetikett gedruckt sind) des mkII mitgab, den Pfad 
und Namen der Datei auch, und dann ... schlug auch dieses Tool fehl, 
obwohl es doch der Rettungsanker von Atmel für genau solche Fälle sein 
sollte. Die Brücke von Pin1 zu 3 im mkII hatte ich gem. Doku 
geschlossen.

Jetzt habe ich also einen frischen Eindruck von der SW-Quali von Atmel 
bekommen (der von MS geht nicht mehr zu verschlechtern) und ich habe 
einen Programmer, der außer Blinken nichts mehr macht. Er antwortet 
schon noch am USB, aber programmieren tut er nicht mehr. Außerdem habe 
ich keine besonders gute Laune nach den verschwendeten Stunden 
Lebenszeit mit diesem Schund, denn ich kann auch nicht an meinem Projekt 
weitermachen.

Ich fragte mich oft während der Klickerei-und-Warterei, wer mit solcher 
Pre-Alpha-Qualität eigentlich arbeitet? Vor allem beruflich? Und die 
schreiben eine sechs im Major Release ihrer SW. Unfaßbar.

Euch noch einen (viel) schöneren Tag,
    Jan.

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


Lesenswert?

Jan R. schrieb:

> Also ließ ich Downloads innerhalb von Atmel Studio sein. Immerhin hatte
> die gerade heruntergeladene und installierte 6.2sp2_1563 schon ein
> neueres im Bauch für den mkII, nämlich das 1.17, als meiner in seinem
> Flash hat: v1.a. Was ist "a" denn für eine Zahl? Warum ändert man
> unterwegs das Versionsschema?

Das hat man nicht geändert.  Die geben seit ewig aus mir völlig
unverständlichen Gründen die Zahlen hexadezimal aus.  In AVRDUDE
hab' ich diesen Quatsch jedoch nicht adoptiert, sondern gebe die
Versionsnummern dezimal aus.  Du hattest also eine 1.10 und würdest
eine 1.23 bekommen.

> Kaum
> war das Update angestoßen, war der Vorgang auch schon wieder zu Ende.
> Der mkII blinkte schnell und bunt, AStudio warf einen Fehler "Verbindung
> unterbrochen". Natürlich ließ ich alles unberührt, während das lief. Ich
> probierte es erneut, das Resultat bleibt immer gleich.

Was für eine VM hast du?  VirtualBox?  Deren USB-Implementierung
ist leider nicht die beste.  Das Problem bei dieser Firmwarefummelei
ist, dass ja initial ein anderes USB-Gerät da ist als später, wenn
der Bootloader aktiv ist, d. h. das meldet sich zwischendrin vom Bus
ab und dann mit neuer PID wieder an.  Das muss deine VM dann so
schnallen, dass sie das auch schnell wieder durchreicht.

Irgendwo bei VMware bekommst du eine kostenlose, funktional leicht
eingeschränkte (bspw. keine Snapshots) Version vom VMware Player
(nicht Player Pro, der kostet Geld!).  Probier mal, ob du dein
schon installiertes Windows dahin migrieren kannst (könnte ggf. über
Export der VM aus VirtualBox gehen).  Ich habe bislang unter VMware
erst ein einziges USB-Gerät gehabt, welches partout nicht zum Spielen
zu bekommen war(*), die Firmwarefummelei der Atmel-Teile klappt damit.

Alternativ kann ich dir anbieten, dir den FW-Update zu machen, wenn
du willst.

(*) MSP-FET430UIF, laut Aussage von IAR (unter dem es nicht ging) liegt
es am Treiber von TI, aber trotz kompletten USB-Sniffer-Traces habe
ich von TI dann nie wieder etwas zurück gehört … naja, wenigstens
ging das billige Launchpad, da es via HID arbeitet.

von Jan R. (janra)


Lesenswert?

Jörg Wunsch schrieb:
> Jan R. schrieb:
>
>> Also ließ ich Downloads innerhalb von Atmel Studio sein. Immerhin hatte
>> die gerade heruntergeladene und installierte 6.2sp2_1563 schon ein
>> neueres im Bauch für den mkII, nämlich das 1.17, als meiner in seinem
>> Flash hat: v1.a. Was ist "a" denn für eine Zahl? Warum ändert man
>> unterwegs das Versionsschema?
>
> Das hat man nicht geändert.  Die geben seit ewig aus mir völlig
> unverständlichen Gründen die Zahlen hexadezimal aus.

Ach so! Na, da wäre ich vllt. mit Blick auf mehrere Nummern drauf 
gekommen, mit diesen zwei Stück noch nicht.

> In AVRDUDE hab' ich diesen Quatsch jedoch nicht adoptiert, sondern
> gebe die Versionsnummern dezimal aus.  Du hattest also eine 1.10 und
> würdest eine 1.23 bekommen.

Verstehe. Danke für die Aufklärung und daß Du das bei avrdude dezimal 
gelassen hast.

>> Kaum war das Update angestoßen, war der Vorgang auch schon wieder zu Ende.
>> Der mkII blinkte schnell und bunt, AStudio warf einen Fehler "Verbindung
>> unterbrochen". Natürlich ließ ich alles unberührt, während das lief. Ich
>> probierte es erneut, das Resultat bleibt immer gleich.
>
> Was für eine VM hast du?  VirtualBox?  Deren USB-Implementierung
> ist leider nicht die beste.

Ja, korrekt: VirtualBox.

> Das Problem bei dieser Firmwarefummelei
> ist, dass ja initial ein anderes USB-Gerät da ist als später, wenn
> der Bootloader aktiv ist, d. h. das meldet sich zwischendrin vom Bus
> ab und dann mit neuer PID wieder an.  Das muss deine VM dann so
> schnallen, dass sie das auch schnell wieder durchreicht.

Aha, verstehe.

> Irgendwo bei VMware bekommst du eine kostenlose, funktional leicht
> eingeschränkte (bspw. keine Snapshots) Version vom VMware Player
> (nicht Player Pro, der kostet Geld!).  Probier mal, ob du dein
> schon installiertes Windows dahin migrieren kannst (könnte ggf. über
> Export der VM aus VirtualBox gehen).

Möglich, daß das gehen könnte. Dann hätte ich allerdings immer noch das 
Versagen des aktuellen Atmel Studios an der Backe, das ja beim 
Runterladen von neuen Tools, Parts, etc. stets abschmierte in dieser VM. 
Das riecht für mich schlimm, zum Weglaufen. Und nicht nach weiterem 
Zeitinvest.

> Alternativ kann ich dir anbieten, dir den FW-Update zu machen, wenn
> du willst.

Wenn Du das netterweise anbietest, nehme ich das gerne an. Vielen Dank, 
das wäre toll! Ich habe zwar noch einen alten AVR-Doper wieder 
ausgegraben, den ich am WE versuchen werde an den Start zu bringen, aber 
der mkII soll ja trotzdem wieder laufen. Wie kann ich Dir den denn 
zukommen lassen?

Viele Grüße,
      Jan.

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


Lesenswert?

Jan R. schrieb:
> Dann hätte ich allerdings immer noch das Versagen des aktuellen Atmel
> Studios an der Backe, das ja beim Runterladen von neuen Tools, Parts,
> etc. stets abschmierte in dieser VM.

Kannst ja einen Bugreport bei Atmel aufmachen. ;-)

Derart extreme Instabilitäten habe ich darüber allerdings bisher weder
selbst erlebt noch gehört.  Allerdings kann ich das Teil auch nicht
wirklich leiden (und bin froh, dass ich normalerweise nicht damit
geplagt bin).

von neuer PIC Freund (Gast)


Lesenswert?

Kleine Entwarnung.

Gestern Abend habe ich meinen Atmel-ICE mit VistaHome in einer 
Virtualbox, wo dann das AS6 SP2 drauf lief, gebrickt. Die Virtualbox 
kannte beide pid (2141/2142). Mit "atfw.exe -t atmelice -a 
..\xxx\xfw.zip" gab es kurz vor Schluss den GenericError.


Heute Morgen selbiges noch mal unter qemu ausprobiert. Selbes Vista, 
allerdings SP1 vom Atmel Studio. Und es funktionierte anstandslos; mein 
Atmel-ICE lebt wieder.

Aufruf:
1
qemu-system-i386 -enable-kvm -m 1G -cpu host -smp cpus=2 -vga vmware -drive file=VistaHomePremium32.img -usb -device usb-ehci,id=ehci -device usb-host,bus=ehci.0,vendorid=0x03eb,productid=0x2141 -device usb-host,bus=ehci.0,vendorid=0x03eb,productid=0x2142

Also ist die VirtualBox der Bösewicht in diesem undurchsichtigen Spiel.

Meine udev-Regel, damit die Virtualisierung nicht als root laufen muss:
1
#Atmel Corp. ATMEL-ICE
2
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2141", GROUP="users", MODE="0666"
3
4
#Atmel Corp. ATMEL-HIDBLDR
5
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2142", GROUP="users", MODE="0666"

von Simpel (Gast)


Lesenswert?

Hab das selbe Problem. Gestern den avrispmk2 (Klon) bekommen. Hundert 
Versuche mit verschiednen avrdude-Versionen, Timings und 
avrdude-Parametern... Der mk2 wird im Gerätemanager erkannt und als 
ordnungsgemäss funktionierend dargestellt, die LED leuchtet nach einigem 
Blinken grün...

Aber: avrdude: stk500v2_recv_mk2: error in USB receive

Muss ich jetzt die ganze AVR-Studio-Suite installieren, nur um ab und zu 
nen kleinen Tiny10 in Assembler zu programmieren...?

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.