ProMicro wird nicht mehr erkannt

Hallo,

mein ProMicro wird nicht mehr erkannt.

Bis gerade eben habe ich mehrmals erfolgreich kleine Sketche von meinem alten Windows-PC mit IDE1.6.4 auf den ProMicro übertragen. Da das Kompilieren sehr lange dauert und sich die IDE wiederholt beim Kompilieren aufgehängt hat, habe ich die neuste IDE 2.3.6 auf meinen modernen PC mit Linux Mint installiert und habe im ersten Versuch den Blink-Sketch hochgeladen. Die Board-Treiber von Sparkfunk hatte ich zuvor installiert und ausgewählt und als Schnittstelle “ttyACM0” ausgewählt. Seitdem reagiert der ProMicro nicht mehr.

Wenn ich ihn anschließe, meldet dmesg:

[ 382.332292] usb 1-3.3: new full-speed USB device number 22 using xhci_hcd
[ 382.485339] usb 1-3.3: device descriptor read/64, error -32
[ 382.714332] usb 1-3.3: device descriptor read/64, error -32
[ 382.945291] usb 1-3.3: new full-speed USB device number 23 using xhci_hcd
[ 383.099340] usb 1-3.3: device descriptor read/64, error -32
[ 383.329332] usb 1-3.3: device descriptor read/64, error -32
[ 383.441476] usb 1-3-port3: attempt power cycle
[ 387.097288] usb 1-3.3: new full-speed USB device number 25 using xhci_hcd
[ 387.249340] usb 1-3.3: device descriptor read/64, error -32
[ 387.482343] usb 1-3.3: device descriptor read/64, error -32
[ 387.713289] usb 1-3.3: new full-speed USB device number 26 using xhci_hcd
[ 387.866337] usb 1-3.3: device descriptor read/64, error -32
[ 388.097344] usb 1-3.3: device descriptor read/64, error -32
[ 388.209491] usb 1-3-port3: attempt power cycle
[ 389.708291] usb 1-3.3: new full-speed USB device number 27 using xhci_hcd
[ 389.735884] usb 1-3.3: Device not responding to setup address.
[ 389.975881] usb 1-3.3: Device not responding to setup address.
[ 390.188286] usb 1-3.3: device not accepting address 27, error -71
[ 390.189472] usb 1-3.3: WARN: invalid context state for evaluate context command.
[ 390.313288] usb 1-3.3: new full-speed USB device number 28 using xhci_hcd
[ 390.340940] usb 1-3.3: Device not responding to setup address.
[ 390.575884] usb 1-3.3: Device not responding to setup address.
[ 390.788284] usb 1-3.3: device not accepting address 28, error -71
[ 390.789416] usb 1-3.3: WARN: invalid context state for evaluate context command.
[ 390.793523] usb 1-3-port3: unable to enumerate USB device

Vor dem ersten Flashversuch wurde der Pro Micro nach dem Einstecken so erkannt:

[ 121.009267] usb 1-3.3: new full-speed USB device number 8 using xhci_hcd
[ 121.370005] usb 1-3.3: New USB device found, idVendor=1b4f, idProduct=9206, bcdDevice= 1.00
[ 121.370013] usb 1-3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 121.370016] usb 1-3.3: Product: SparkFun Pro Micro
[ 121.370019] usb 1-3.3: Manufacturer: SparkFun
[ 121.398700] input: SparkFun SparkFun Pro Micro Mouse as /devices/pci0000:00/0000:00:02.1/0000:16:00.0/usb1/1-3/1-3.3/1-3.3:1.2/0003:1B4F:9206.0005/input/input18
[ 121.398817] input: SparkFun SparkFun Pro Micro Keyboard as /devices/pci0000:00/0000:00:02.1/0000:16:00.0/usb1/1-3/1-3.3/1-3.3:1.2/0003:1B4F:9206.0005/input/input19
[ 121.450401] hid-generic 0003:1B4F:9206.0005: input,hidraw4: USB HID v1.01 Mouse [SparkFun SparkFun Pro Micro] on usb-0000:16:00.0-3.3/input2
[ 121.482716] cdc_acm 1-3.3:1.0: ttyACM0: USB ACM device
[ 121.482738] usbcore: registered new interface driver cdc_acm
[ 121.482746] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

Unter Windows wird das Teil nun als unbekanntes Gerät mit VID/PID 0000:0000 angezeigt.

Eine kurze Internetrecherche hat keine passende Hilfe ergeben. Ich vermute, dass der Bootloader platt ist.

Hat hier jemand eine Anleitung für Doofe, wie ich dem ProMicro wieder Leben einhauchen kann?

Zusatzinfos:

Unter Windows/IDE1.6.4 konnte ich bei der Boardauswahl die Taktfrequenz (16/8 MHz) und die Spannung (3,3/5 V) auswählen. Unter IDE2.3.6 gibt es diese Unterscheidungen nicht. Ich bin davon ausgegangen, dass die IDE das selbst erkennt und einstellt.

Als Reparaturversuch habe ich eine Anleitung auf dem Windows-PC/IDE1.6.4 getestet:

Pro Micro abstecken
Reset halten
Blinksketch kompilieren und hochladen
sobald die IDE “hochladen"…” meldet, Reset loslassen

Das funktioniert aber nicht, was mich auch nicht überrascht, da die IDE gar nicht weiß, wohin sie die Daten schicken soll.

Ist das nur der eine, der nicht mehr anspringt oder die anderen auch?

Versuch mal kurz RST mit GND zu verbinden. Dann sollte der in den Bootloader wechseln.

Da der USB Teil und der Teil den Du programmierst auf dem gleichen Controller sitzen passiert es leicht, daß Du den Bootloader am Starten blockierst.
Wie angeraten Reset mittels Kabel auf GND bringen, Upload starten und loslassen, wenn der Sketch fertig kompiliert ist.

Du solltest die IDE 1.8.19 verwenden und nicht die ältere 1.6x. wenn Du nicht die aktuelle verwenden willst / mußt.
Grüße Uwe

Reset hatte ich probiert, auch andere Anleitungen, wie Reset halten → anstecken → Reset lösen
Brachte nichts.

Ich habe inzwischen einen USBasp in der Grabbelkiste gefunden, den ProMicro daran angeschlossen und mit der IDE1.6.4 den Bootloader neu geschrieben. Dann Blink hochgeladen → funktioniert.

Dann ProMicro an anderen PC mit Linux/IDE2.3.6 angeschlossen, einen Sketch hochgeladen und hatte wieder das gleiche Problem, dass der ProMicro nicht mehr erkannt wurde und auch nichts Erkennbares mehr gemacht hat.

Ich konnte ihn dann erneut mit IDE1.6.4/Windows wiederbeleben.

Einen anderen ProMicro habe ich noch nicht getestet. Das andere Board hat die Stiftleist noch nicht angelötet und soll es erst mal auch nicht, weshalb ich das mit dem lieber nicht ausprobiere, da ich dann den USBasp nicht mehr angeschlossen bekomme.

Ist doch schon erledigt:

Versuch das mal.
Schreib mal das Ergebnis.

Und danach nimm die 1.8.19 auf der Linux-Maschine und mach die zu einer portablen Installation.
Alles was dann kommt, ist relativ easy.

Das müsste mit dem Boardpackage von Sparkfun gehen. Hast du das installiert?

Btw 16MHz Board mit 8MHz Firmware führt dazu dass USB nicht mehr geht.

OK, ich habe nun den zweiten ProMicro mit Win/IDE1.6.4 erfolgreich beschrieben. Dann an den Linuxrechner/IDE2.3.6 angeschlossen.

dmesg sagt:

[10397.508317] usb 1-3.4: new full-speed USB device number 43 using xhci_hcd
[10397.880281] usb 1-3.4: New USB device found, idVendor=1b4f, idProduct=9206, bcdDevice= 1.00
[10397.880290] usb 1-3.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[10397.880293] usb 1-3.4: Product: SparkFun Pro Micro
[10397.880295] usb 1-3.4: Manufacturer: SparkFun
[10397.908221] cdc_acm 1-3.4:1.0: ttyACM0: USB ACM device
[10397.909318] input: SparkFun SparkFun Pro Micro Mouse as /devices/pci0000:00/0000:00:02.1/0000:16:00.0/usb1/1-3/1-3.4/1-3.4:1.2/0003:1B4F:9206.0007/input/input22
[10397.909415] input: SparkFun SparkFun Pro Micro Keyboard as /devices/pci0000:00/0000:00:02.1/0000:16:00.0/usb1/1-3/1-3.4/1-3.4:1.2/0003:1B4F:9206.0007/input/input23
[10397.961602] hid-generic 0003:1B4F:9206.0007: input,hidraw4: USB HID v1.01 Mouse [SparkFun SparkFun Pro Micro] on usb-0000:16:00.0-3.4/input2

Dann Blink mit anderen Zeiten kompiliert und hochgeladen, was auch funktioniert hat, da die Blinkfrequenz passt. Allerdings ist der zweite ProMicro nun auch nicht mehr beschreibbar und dmesg meldet ohne, dass ich das Board nach dem Brennen vorher abgesteckt hatte:

[10755.869581] usb 1-3.4: USB disconnect, device number 43
[10756.206355] usb 1-3.4: new full-speed USB device number 44 using xhci_hcd
[10756.508575] usb 1-3.4: New USB device found, idVendor=2341, idProduct=0037, bcdDevice= 0.01
[10756.508583] usb 1-3.4: New USB device strings: Mfr=2, Product=1, SerialNumber=0
[10756.508586] usb 1-3.4: Product: Arduino Micro   
[10756.508589] usb 1-3.4: Manufacturer: Arduino LLC
[10756.529983] cdc_acm 1-3.4:1.0: ttyACM0: USB ACM device
[10759.709599] usb 1-3.4: USB disconnect, device number 44
[10759.957351] usb 1-3.4: new full-speed USB device number 45 using xhci_hcd
[10760.109407] usb 1-3.4: device descriptor read/64, error -32
[10760.339400] usb 1-3.4: device descriptor read/64, error -32
[10760.570355] usb 1-3.4: new full-speed USB device number 46 using xhci_hcd
[10760.723405] usb 1-3.4: device descriptor read/64, error -32
[10760.954407] usb 1-3.4: device descriptor read/64, error -32
[10761.066668] usb 1-3-port4: attempt power cycle
[10762.574368] usb 1-3.4: new full-speed USB device number 47 using xhci_hcd
[10762.602097] usb 1-3.4: Device not responding to setup address.
[10762.841097] usb 1-3.4: Device not responding to setup address.
[10763.053352] usb 1-3.4: device not accepting address 47, error -71
[10763.054634] usb 1-3.4: WARN: invalid context state for evaluate context command.
[10763.179352] usb 1-3.4: new full-speed USB device number 48 using xhci_hcd
[10763.207096] usb 1-3.4: Device not responding to setup address.
[10763.441108] usb 1-3.4: Device not responding to setup address.
[10763.653351] usb 1-3.4: device not accepting address 48, error -71
[10763.654637] usb 1-3.4: WARN: invalid context state for evaluate context command.
[10763.658747] usb 1-3-port4: unable to enumerate USB device

Das Problem liegt also nicht an dem einen Board, sondern ist mit beiden reproduzierbar.

Ich werde nachher mal 1.8 unter Linux installieren. Auf die Schnelle habe ich dafür kein Appimage gefunden und muss mich da erst mal reinfuchsen.

Ist nicht schwer.
Da Du bereits auf dem Port schreiben kannst, ist das ganz schnell erledigt.
Download:

https://downloads.arduino.cc/arduino-1.8.19-linux64.tar.xz

Das Ding entpacken an den Ort Deiner Wahl
NACH dem entpacken im Hauptverzeichnis der IDE einen Ordner portable erstellen.

Sieht dann so aus:

Im Hauptverzeichnis (hier arduino-1.8.19) die Datei arduino ausführbar machen und starten.

Interessant ist, dass Du jetzt alles in den Ordner portable bekommst, sowohl Sketche, als auch libs, als auch boardinstallationen und nur den noch sichern musst....
Vorteil 2: Du kannst eine weitere Instanz in einem neuen Ordner bauen und parallel laufen lassen.

EDIT:
Nach der Installation geht es so weiter:

In der dann installierten Version 1.8.19 gehe in DATEI - VOREINSTELLUNGEN.

Füge als zusätzliche Bordverwalter-URL ein:
https://raw.githubusercontent.com/sparkfun/Arduino_Boards/main/IDE_Board_Manager/package_sparkfun_index.json

Zusätzlich stellst Du die IDE noch ein:
grafik

dann holst Du Dir einmal über den Boardverwalter die Sparfun-Files.

IDE schliessen.

Dann lädst Du Dir folgendes Package herunter:
https://cdn.sparkfun.com/assets/learn_tutorials/1/2/1/SparkFunBoard_Addons_Jan_16.zip

Das entpackst Du.
Darin befindet sich ein Verzeichnis sparkfun

Diesen gesamten Ordner verschiebst Du in einen neu zu schaffenden Ordner hardware im vorher gebauten Ordner portable/sketchbook, so das dann so aussieht:

Wenn das alles dann kopiert ist, kannst Du die IDE neu starten.
Unter WERKZEUGE - BOARD findet sich dann:

Da ist auch der Bootloader enthalten.

Das ist LINUX.

Hast du die richtigen Gruppenrechte für die Schnittstelle gesetzt. ??

Gruß

Pucki

Pucky, warum musst Du wieder mit Deinen vollkommen sinnlosen Kommentaren um die Ecke kommen? Nachher jammerst Du wieder, dass Du gemobbt wirst.
Wenn Du schon nicht lesen willst, dann sei doch so nett und mach den Thread nicht kaputt.

Du kannst mir gerne sagen wo ich was falsch gelesen habe.

Gruß

Pucki

Ich bin nicht Dein Vorleser, der Dich mit der Nase auf #9 stossen muss, aber wäre ich es, würde ich Dich an die frische Luft setzen.

Entweder es ist ein Rechte-Problem oder das Teil verhungert.
= zu wenig Saft, weshalb ich sowas IMMER mit AKTIVEN Hub betreibe.

So sehe ich das.

Gruß

Pucki

Wenn Sie die Blink-Datei über ICSP hochgeladen haben, wurde der Bootloader gelöscht.

Normalerweise geht man folgendermaßen vor:

  1. Bootloader flashen (ICSP).
  2. Sketch über USB hochladen. Gegebenenfalls müssen Sie zweimal die Reset-Taste drücken.

Hat er nicht.

Bootloader via Windows-PC (1.6.4) installiert
Blinksketch hochgeladen -> funktioniert

Dann am Linux-Rechner (2.3.6) Sketch aufgespielt :white_check_mark:

Danach ist das Device geändert mit einem anderen Bootloader.
Das Device ist dann nicht mehr als Sparkfun, sondern als Arduino unter dmesg aufgeführt.

Da passt was nicht.
Das geht vermutlich auch in der 1.8.19 schief, wenn Du nur die Boardverwalter aktuallisierst und nicht den passenden Bootloader mit einbindest.

Zu meiner Anleitung oben habe ich noch etwas hinzugefügt!

Quelle: Pro Micro & Fio V3 Hookup Guide - SparkFun Learn

Also zunächst mal vielen Dank für alle Tipps und Hilfeversuche hier.

Ich habe das Problem inzwischen gelöst und leider saß der größte Teil davon mal wieder vor dem Rechner. Entgegen meiner Annahme, dass die IDE2.3.6 die Variante des ProMicro (3,3/5 V) selbst einstellt, ist es so, dass es dafür in neueren IDEs einen separaten Menüpunkt gibt. Dort war “3,3 V / 8 MHz” eingetragen, was nicht zu meinem “5 V / 16 MHz”-Board passt. Beim Hochladen der Programme wurde dann vermutl. jeweils der Bootloader falsch geschrieben oder Statusbits falsch gesetzt, sodass die Dinger nicht mehr richtig erkannt worden sind. Ich habe nun dem zweiten ProMicro mit dem USBasp unter Win/1.6.4 einen neuen Bootloader verpasst und dann mit der richtigen Einstellung unter Linux/2.3.6 erfolgreich 2 Sketche hintereinander laden können, ohne dass die Kommunikation zum Board abgebrochen ist.

Aufgefallen ist mir das beim Einrichten von IDE 1.8.19 unter Linux. Da fehlte von Werk aus die Unterstützung für die Sparkfun ProMicros. Google KI hat mich zuerst auf die falsche Fährte geschickt, aber als ich dann den richtigen Eintrag unter Datei→Grundeinstellungen→Zusätzliche Boardverwalter-URLs gefunden hatte, sprang mir das o.g. Untermenü ins Auge.

BTW: Google meinte, ich müsste folgenden Eintrag verwenden:

Aber nur mit diesem hier bekam ich die Sparkfun-Boards:

https://raw.githubusercontent.com/sparkfun/Arduino_Boards/main/IDE_Board_Manager/package_sparkfun_index.json

Nachdem ich den Unterordner “portable” angelegt hatte, wurden die zusätzlichen Dateien tatsächlich in den Ordner geschrieben.

Die Programmierung des ProMicro funktioniert auch mit 1.8.19.

EDIT:
@my_xy_projekt ich sehe jetzt erst, was du zus. zur Installationsanleitung der IDE1.8.19 geschrieben hast. Ich habe die Boardunterstützung für den Pro Micro nicht manuell heruntergeladen, sondern über den Boardmanager installiert. Spricht etwas dagegen, es so zu lassen, oder hat deine Varianten Vorteile?

Im Moment brauche ich es nicht, aber interessenhalber: Müsste ich dazu den kompletten Programmordner /arduino-1.8.19/ kopieren?

Und noch etwas: Wovon hängt es ab, ob es eine portable Version ist oder nicht? Muss der Unterordner genau an der beschriebenen Stelle liegen und genau den Namen /portable haben?

Du solltest Dich von allen IDE mit Versionen < 1.8.19 auf allen Systemen verabschieden. Die sind durch den log4j-Bug angreifbar und damit Deine Systeme.

Gruß Tommy