Hallo Forengemeinschaft, ich habe ein Problem damit den Bootloader auf einen ELEGOO Mega R3 16U2 zu bekommen. Ich brauchte einen HID-konformen Arduino Mega und bin auf den HoodLoader2 (https://github.com/NicoHood/HoodLoader2) gestoßen. Das Brennen hatte auch nach der Anleitung mittels Arduino Uno funktioniert, nur wurde der Arduino Mega dann unter Windows 11 nicht mehr angezeigt, auch nicht als HID-konformes Gerät. Ich habe den Arduino dann mal in einer virtuellen Maschine mit Windows 7 zum Laufen bekommen. Nur da nützt er mir nichts, weil ich ihn unter Windows 11 benötige. So habe ich mir dann einen Leonardo gekauft und konnte das Problem mit dem HID-konformen Gerät als Joystick erst einmal beseitigen. Ich wollte dann einfach in der Arduino IDE mittels eines Arduino UNO als ICSP den Mega wieder mit einem Mega Bootloader versehen, das ging nur nicht, weil angeblich kein Mega angeschlossen ist. Ich bekam dann mit, dass der HootLoader2 auch die Möglichkeit besitzt, den Mega-Bootloader wieder zu brennen. Nur kam dann die Fehlermeldung, dass kein Mega angeschlossen ist. Die Firmware eines Uno konnte ich problemlos auf den Mega bringen, nur ist es dann kein Mega mehr. Nun könnte ich den Mega als normalen Mega für ein anderes Projekt benötigen, kann ihn aber so nicht nutzen, weil der Uno weniger digitale und analoge Pins hat. Ich weiß nun nicht mehr weiter und im Internet bin ich auch nicht fündig geworden, weil ich zum einen nicht weiß, wonach ich suchen soll und mein Englisch dafür nicht zu gebrauchen ist. Hat jemand eine Idee, was ich noch machen kann, um den richtigen Bootloader auf den Mega zu bringen? Vielen Dank im voraus. Viele Grüße
Ist da der 16U2 nicht nur als USB-Serial Wandler drauf? Und der ist "transparent"? Gruss Chregu
Torsten A. schrieb: > ELEGOO Mega R3 16U2 Elegoo kennt nur einen "Mega 2560 R3": https://de.elegoo.com/products/elegoo-mega-2560-r3-board Und da hat Christian dann völlig recht, der Atmega16U2 darauf ist nur eine USB-UART, der ist nicht für Deinen Bootloader zuständig.
Harald K. schrieb: > Und da hat Christian dann völlig recht, der Atmega16U2 darauf ist nur > eine USB-UART Nachdem er diesen umprogrammiert hat ist er wohl kein USB-UART mehr. Mit einem ISP-Programmieradapter kriegt man das wieder hin. Falls nicht vorhanden, kann man einen Arduino Umo oder Nano mit dem "Arduino ISP" Sketch zum ISP-Programmieradapter machen. Das Netz ist voll mit Tutorials dazu.
:
Bearbeitet durch User
Harald K. schrieb: > Und da hat Christian dann völlig recht, der Atmega16U2 darauf ist nur > eine USB-UART, der ist nicht für Deinen Bootloader zuständig. Ja, aber der 16U2 ist jener, der das Gerät als USB-Device meldet und scheinbar nach HID umgeflasht werden kann. Wie man dem eigentlichen µC, dem AT2560, beibringt, HID zu spielen, wird die nächste Baustelle. Hans W. schrieb: > Falls nicht vorhanden, kann man einen Arduino Umo oder Nano mit dem > "Arduino ISP" Sketch zum ISP-Programmieradapter machen. Das Netz ist > voll mit Tutorials dazu. Auch für den 16U2?
Manfred P. schrieb: > Auch für den 16U2? ja. Deswegen hat das Board zwei ISP Stecker. > Wie man dem eigentlichen µC, dem AT2560, beibringt, HID zu spielen, wird > die nächste Baustelle. gar nicht, denn er hat keinen USB Anschluss.
:
Bearbeitet durch User
Hallo, vielen Dank für die zahlreichen Antworten. Ich bin nun noch einmal alles durchgegangen und kann euch nun auch die Anzeigen aus der Ausgabe und dem seriellen Monitor liefern. Wenn ich die Anleitung vom HoodLoader2 (https://github.com/NicoHood/HoodLoader2/wiki/Burn-the-bootloader-from-another-Arduino) nehme, gibt es zwei verschiedene Meldungen. Einmal gibt es die Meldung, wenn ich den Bootloader für den Mega (HEXFILE_Arduino_COMBINED_dfu_usbserial_atmega16u2_Mega2560_Rev3_hex_Ful l 202) nehme, kommt das dabei heraus:
1 | Atmega chip programmer. |
2 | Written by Nick Gammon, modified by NicoHood. |
3 | Version 1.32-HL205-B |
4 | Compiled on Apr 9 2026 at 09:06:43 with Arduino IDE 10607. |
5 | |
6 | Welcome to the HoodLoader2 installation sketch! |
7 | This version will install HoodLoader2 on your Arduino |
8 | |
9 | You selected number 202 as bootloader. |
10 | If this is not correct upload the program again with different settings |
11 | |
12 | Make sure all wires are connected as written in the documentation. |
13 | Please now insert the 100nF capacitor between Reset and Ground on a standalone Arduino. |
14 | In some cases the Arduino will reset then and display these messages again. |
15 | |
16 | On a standalone Arduino you will no longer see any messages here. |
17 | If you uploaded this sketch to a 2nd Aruino you will see some debug output. |
18 | |
19 | If the installation was successfull the on board Led will start blinking fast (every 100ms). |
20 | If the installation failed the on board Led will start blinking slow (every second). |
21 | |
22 | Starting programming in 10 seconds, please be patient and wait some time. |
23 | |
24 | 10
|
25 | 9
|
26 | 8
|
27 | 7
|
28 | 6
|
29 | 5
|
30 | 4
|
31 | 3
|
32 | 2
|
33 | 1
|
34 | 0
|
35 | |
36 | Attempting to enter programming mode ... |
37 | Entered programming mode OK. |
38 | Signature = 0x1E 0x94 0x89 |
39 | Processor = ATmega16U2 |
40 | Flash memory size = 16384 bytes. |
41 | LFuse = 0xEF |
42 | HFuse = 0xD9 |
43 | EFuse = 0xF4 |
44 | Lock byte = 0xCF |
45 | Clock calibration = 0xAC |
46 | No bootloader support for this device. |
47 | Programming mode off. |
Versuche ich dann dasselbe mit dem Boootloader vom Uno (HEXFILE_Arduino_COMBINED_dfu_usbserial_atmega16u2_Uno_Rev3_hex_Full 201), funktioniert das flashen und es kommt zu dieser Meldung (von mir gekürzt) im seriellen Monitor:
1 | Atmega chip programmer. |
2 | Written by Nick Gammon, modified by NicoHood. |
3 | Version 1.32-HL205-B |
4 | Compiled on Apr 9 2026 at 08:54:39 with Arduino IDE 10607. |
5 | |
6 | Welcome to the HoodLoader2 installation sketch! |
7 | This version will install HoodLoader2 on your Arduino |
8 | |
9 | You selected number 201 as bootloader. |
10 | If this is not correct upload the program again with different settings |
11 | |
12 | Make sure all wires are connected as written in the documentation. |
13 | Please now insert the 100nF capacitor between Reset and Ground on a standalone Arduino. |
14 | In some cases the Arduino will reset then and display these messages again. |
15 | |
16 | On a standalone Arduino you will no longer see any messages here. |
17 | If you uploaded this sketch to a 2nd Aruino you will see some debug output. |
18 | |
19 | If the installation was successfull the on board Led will start blinking fast (every 100ms). |
20 | If the installation failed the on board Led will start blinking slow (every second). |
21 | |
22 | Starting programming in 10 seconds, please be patient and wait some time. |
23 | |
24 | 10
|
25 | 9
|
26 | 8
|
27 | 7
|
28 | 6
|
29 | 5
|
30 | 4
|
31 | 3
|
32 | 2
|
33 | 1
|
34 | 0
|
35 | |
36 | Attempting to enter programming mode ... |
37 | Entered programming mode OK. |
38 | Signature = 0x1E 0x94 0x89 |
39 | Processor = ATmega16U2 |
40 | Flash memory size = 16384 bytes. |
41 | LFuse = 0xEF |
42 | HFuse = 0xD9 |
43 | EFuse = 0xF4 |
44 | Lock byte = 0xCF |
45 | Clock calibration = 0xAC |
46 | Bootloader address = 0x0 |
47 | Bootloader length = 16384 bytes. |
48 | Programming the chip with the bootloader ... |
49 | Erasing chip ... |
50 | Writing bootloader ... |
51 | Committing page starting at 0x0 |
52 | [...]
|
53 | Committing page starting at 0x3F80 |
54 | Written. |
55 | Verifying ... |
56 | No errors found. |
57 | Writing fuses ... |
58 | LFuse = 0xEF |
59 | HFuse = 0xD9 |
60 | EFuse = 0xF4 |
61 | Lock byte = 0xCF |
62 | Clock calibration = 0xAC |
63 | Done. |
64 | Programming mode off. |
Versuche ich den Bootloader nach der Anleitung von der Internetseite von Arduino zu flashen (https://support.arduino.cc/hc/en-us/articles/4841602539164-Burn-the-bootloader-on-UNO-Mega-and-classic-Nano-using-another-Arduino), kommt folgende Fehlermeldung:
1 | Error: cannot open port \\.\COM3: Zugriff verweigert |
2 | |
3 | |
4 | Error: unable to open port COM3 for programmer stk500v1 |
5 | Chip-Löschung fehlgeschlagen: Hochladefehler: exit status 1 |
Zu dieser Fehlermeldung wird der Hinweis gegeben, danach zu schauen, ob das richtige Zielboard gewählt ist und die Verbindung zum Reset-Pin richtig ist. Das ist alles richtig geklemmt und gewählt, nur funktioniert es nicht. Das sind die Anleitungen, denen ich gefolgt bin. Sie funktionieren nur nicht. Die Anleitung von der Arduino-Seite ist doch die, welche ihr mit der Anleitung für die ICSP-Programmierung meint, oder? Viele Grüße.
Nur um meinem Ruf gerecht zu werden ☻: Was bin ich froh, dass ich solchen Krampf im A...., dank JTAG, SWD, I(C)SP, ... nicht brauche.
Der Arduino Uno R3 enthält zwei Prozessoren, den 16U2, der für die Kommunikation über USB zuständig ist und vom Benutzer normalerweise nicht programmiert wird, und den ATmega328P, der vom Benutzer z. B. über die Arduino-IDE programmiert wird. Um ein selbstgeschriebenes Programm in den ATmega328P zu bekommen, verwendet man ein "Bootloader" genanntes Programm im ATmega328P. Um einen Bootloader in einen ATmega328P zu programmieren, verwendet man einen USB-Programmier-Adapter, der mit einem Flachbandkabel auf einen 6-poliger Header auf der Arduino Uno R3-Platine gesteckt wird. Wichtig: Auf einer Arduino Uno R3-Platine gibt es zwei dieser "ISP-Header", einen für den 16U2 und einem für den ATmega328P. Anscheinend hast du den 16U2 mit einem Programm programmiert, das für den ATmega328 gedacht war. Was du jetzt tun kannst: Falls du eine zweite Elegoo-Platine hast, könntest du mit einem USB-Programmier-Adapter den Original-Code aus dem noch nicht verprogrammierten 16U2 auslesen und damit den verprogrammierten 16U2 programmieren. Desgleichen mit dem ATmega328P. Ob allerdings der Zeitaufwand hierfür in Anbetracht der geringen Kosten der Elegoo-Platine gerechtfertigt ist, sei dahingestellt. Anschließend würde ich versuchen, mit dem Arduino-Bootloader zurechtzukommen, der im Originalzustand auf dem 328er der Elegoo-Platine drauf war, und auf den Hoodloader zu verzichten.
Torsten A. schrieb: > ich habe ein Problem damit den Bootloader auf einen ELEGOO Mega R3 16U2 > zu bekommen. Bei soviel Krampf den ich hier gelesen habe wäre es schon längst an der Zeit gewesen sich mit einem günstigen ISP Programmer ans Werk zu machen. https://www.ebay.de/itm/357351519383 Und dazu noch AVR Studio 4.1xx zu verwenden um von der kryptischen Syntax des AVRDudes loszukommen. Dann könnte man endlich auch einfach die Fuses so programmieren wie man möchte ohne das AVRDude Nachschlagewerk auswendig zu lernen.
Die Firmware für den 16u2 muss man nicht kopieren. Sie ist in der Arduino IDE (bzw dem Core) enthalten. http://wiki.sunfounder.cc/index.php?title=How_to_Reburn_the_firmware_onto_Atmega16u2
Hallo, https://forum.arduino.cc/t/arduino-uno-as-hid/1177693/43 https://forum.arduino.cc/t/arduino-mega-2560-als-tastatur-verwenden/623633 Ich würde dir außerdem für alle ISCP Spielereien einen Programmer empfehlen. Das erleichtert vieles im Umgang.
:
Bearbeitet durch User
Wastl schrieb: > Bei soviel Krampf den ich hier gelesen habe wäre es schon längst > an der Zeit gewesen sich mit einem günstigen ISP Programmer ans > Werk zu machen. > > https://www.ebay.de/itm/357351519383 > > Und dazu noch AVR Studio 4.1xx zu verwenden um von der kryptischen > Syntax des AVRDudes loszukommen. Dann könnte man endlich auch > einfach die Fuses so programmieren wie man möchte ohne das AVRDude > Nachschlagewerk auswendig zu lernen. Nachdem ich auf den ebay-Link geklickt habe, ist mir aufgefallen, dass ich sogar so einen Programmer da habe. Das ist sogar der im Link. Als ich das Bild davon gesehen habe, kam mir das Teil bekannt vor. Den muss ich mir, für was auch immer mal angeschafft haben. Ich habe ihn jedenfalls nie gebraucht, weil ich immer mit fertigen Sketchen klar gekommen bin, welche ich nur nach meinen Bedürfnissen anpassen konnte. Einen baugleichen Mega von Elegoo habe ich sogar auch noch da, sodass man sich an dem bedienen könnte, was den originalen Bootloader angeht. Nur habe ich keinen Plan davon, wie das geht. Der Mega hängt gerade mit einen Haufen Tastern, Potis und Drehimpulsgebern in meinem Projekt drin. Muss ich das alles jetzt zerlegen oder kann ich die Daten auch mit allen angeschlossenen Sachen holen? Es wäre schön, wenn ich den Mega wieder zum Laufen bekommen, weil ich gerade mit dem Sketch bezüglich einer Tasten-Matrix (6x5) mit einem Nano überhaupt nicht weiter komme. Mit dem Mega könnte ich mir die Tastenmatrix sparen.
Wastl schrieb: > Bei soviel Krampf den ich hier gelesen habe wäre es schon längst > an der Zeit gewesen sich mit einem günstigen ISP Programmer ans > Werk zu machen. > https://www.ebay.de/itm/357351519383 > Und dazu noch AVR Studio 4.1xx zu verwenden um von der kryptischen > Syntax des AVRDudes loszukommen. Aber gerade dieser Programmieradapter wurd vom AVR Studio nicht unterstützt! Ich glaube, dein verschmähtes Avrdude ist das einzige dazu passende Programm.
Torsten A. schrieb: > Muss ich das alles jetzt zerlegen oder kann ich die Daten auch mit allen > angeschlossenen Sachen holen? Was für "Daten holen"? Es gibt doch im Internet jede Menge Anleitung und Videos, die den Umgang mit solchen Programmieradaptern erklären. Es macht echt keinen Sinn, das für dich nochmal abzuschreiben. Berücksichtige, dass du wie gesagt zwei Mikrocontroller vor dir hast. Auf den 16u2 gehört die bereits genannte Firmware (Link hatte ich gepostet), und auf den ATmega2560 gehört der Bootloader, den du ohne Umwege direkt mit der Ardiuno IDE flashen kannst. Die hat dafür extra einen Menü-Eintrag. Und den USBASP Programmieradapter unterstützt sie auch ganz regulär ohne Umwege.
:
Bearbeitet durch User
Hans W. schrieb: > Aber gerade dieser Programmieradapter wurd vom AVR Studio nicht > unterstützt! Sollte das so sein gibt es immer noch die STK500-kompatiblen Geräte wie dieses: https://www.ebay.de/itm/282205704549 oder solche: https://www.amazon.de/s?k=AVRISP+MKII+AVR+ISP+Programmer Mit diesem Herum-ge-eiere mit zwei Arduinos ohne echten Programmer ist das eine ewige Quälerei. So einen Programmer wird man immer wieder mal brauchen (können).
:
Bearbeitet durch User
Wastl schrieb: > Sollte das so sein gibt es immer noch die STK500-kompatiblen > Geräte wie dieses: Ja. Dann kommt der nächste Haken: Der alte Jungo Treiber vom Atmel Studio läuft nicht ohne Weiteres unter Windows 11. So kommt er vom Regen in die Traufe. Viel Glück beim Fummeln!
Hans W. schrieb: > Der alte Jungo Treiber vom Atmel > Studio läuft nicht ohne Weiteres unter Windows 11. Der läuft problemlos.
Hans W. schrieb: > Viel Glück beim Fummeln! Dann lieber weiter fummeln mit zwei Arduinos und Dupont-Stolperdrähten.
Hans W. schrieb: >> Wie man dem eigentlichen µC, dem AT2560, beibringt, HID zu spielen, wird >> die nächste Baustelle. > gar nicht, denn er hat keinen USB Anschluss. Das nicht, aber der kommuniziert mit dem USB-Wandler 16U2 in einer Weise, die von HID abweicht. Michael schrieb: > Der Arduino Uno R3 enthält zwei Prozessoren, den 16U2, der für die > Kommunikation über USB zuständig ist und vom Benutzer normalerweise > nicht programmiert wird, und den ATmega328P, der vom Benutzer z. B. über > die Arduino-IDE programmiert wird. > > Um ein selbstgeschriebenes Programm in den ATmega328P zu bekommen, > verwendet man ein "Bootloader" genanntes Programm im ATmega328P. Aus der Google KI kopiert? Es geht hier um ein anderes Board, wobei das Prinzip gleich bleibt. Aber : Er will das Board als HID am PC haben, dafür flasht er den 16U2 um. Wenn das geklappt hat, wird es über den USB keinen Zugriff auf den 2560 per Bootloader mehr geben. Ich denke sogar, dass der AT2560 keinen Bootloader mehr haben darf, der PC würde beim Reset undefiniertes Zeug empfangen.
Manfred P. schrieb: > Er will das Board als HID am PC haben Ich habe ihn so verstanden, dass er das Board zunächst wieder in den originalen Zustand zurück versetzen will.
:
Bearbeitet durch User
Manfred P. schrieb: > Er will das Board als HID am PC haben, dafür flasht er den 16U2 > um. Nein, das habe ich ja schon gemacht und will wieder zurück. Leider wurde der Arduino nur in einem virtuell aufgesetztem Windows 7 als HID-konformes Gerät erkannt und nicht unter Windows 11, wo ich es benötigte . Das Flashen hatte auch mit dem Hootloader2 funktioniert und verlief ohne Fehler. Nachdem ich mir dann einen Arduino Leonardo gekauft hatte, habe ich das Problem lösen können und der Leonardo läuft nun als Eingabegerät jeden Tag und fehlerfrei am PC. Da ich den geflashten Arduino Mega nun als normalen Arduino wieder für ein neues Projekt benötigte, wollte ich den ursprünglichen Bootloader wieder drauf haben. Da gingen dann die Probleme los. Der Hootloader sagte mir, dass das Zielgerät kein Mega sondern ein Uno ist und in der IDE wollte das flashen auch nicht funktionieren. Nun habe ich aber wieder den Mega Bootloader auf dem Arduino drauf und er wird auch korrekt im Windows und der IDE angezeigt. Wie habe ich das nun hinbekommen? Veit D. hatte mir zwei Links vorgeschlagen, wo ich gelesen habe, dass man mit dem Programm FLIP den Bootloader brennen kann, wenn man den Arduino in den DFU-Modus bringt. Das habe ich getan, allerdings auch mit etwas Stolperei. Mit den im Programm vorhandenen Bootloadern funktionierte die Verifizierung nicht. Mir ist dann eingefallen, dass die originale Firmware für den Mega als hex-Datei noch beim Hootloader dabei ist, welche ich dann stattdessen genommen habe und nun auch die Verifizierung funktionierte. Jetzt läuft der Mega wieder so, wie ich das wollte. Vielen Dank für eure Hilfe und kann ich mich meinem Projekt wieder widmen und mit dem Arduino weitermachen. :-)
Flip und DFU Protokoll deuten auf den ATMega16u2 hin. Auf diesen Chip hast du keinen Bootloader installiert, sondern eine USB-UART Firmware, denn er dient als USB-UART Adapter. Der Bootloader um den es hier die ganze Zeit geht, gehört auf den ATMega2560. Er "spricht" das STK500 Protokoll über UART. Zusammen ermöglichen sie das Flashen des ATMega2560 per STK500 Protokoll auf einem virtuellen COM Port über USB.
Torsten A. schrieb: > Nun habe ich aber wieder den Mega Bootloader auf dem Arduino drauf und > er wird auch korrekt im Windows und der IDE angezeigt. Nein. Du hast den USB-UART wieder auf dem ATMega16u2. Windows erkennt ihn darum wieder als virtuellen COM Port. Windows "sieht" den ATmega2560 nicht, weil Windows kein STK500 Protokoll spricht.
1 | PC ---USB---> USB-UART ---UART---> Target |
2 | ATMega16u2 ATMega2560 |
:
Bearbeitet durch User
Okay, dann war es der USB-UART, welchen ich wieder installiert habe. Komisch war nur, dass in der Anleitung immer die Rede von einem Bootloader gewesen ist. Mein Projekt ist jedenfalls fertig und der Arduino tut seinen Dienst, wie er es soll. Vielen Dank noch einmal für eure Hilfe!
Torsten A. schrieb: > Komisch war nur, dass in der Anleitung immer die Rede von einem > Bootloader gewesen ist. Im Arduino Umfeld gibt es viele Anleitungen, deren Autoren die Grundlagen und Fachbegriffe unbekannt sind. Vom Anfänger für Anfänger hat eine gewisse Existenzberechtigung, aber birgt halt auch das Risiko, Fehler weiter zu verbreiten. Wenn der Anfänger-Autor wenigstens auf Feedback eingeht und seine Publikation nachbessert (wir meißeln ja nicht mehr in Stein), dann ist die Welt dort noch in Ordnung. Leider geht der Trend zunehmend in eine andere Richtung. Man lässt Scheiße wissentlich stehen, das Geld von der Werbung kommt trotzdem rein. Dank KI werden jetzt auch noch massenweise nutzlise Zusammenfassungen publiziert, die die Suchmaschinen verstopfen. Ich dachte schon vor ein paar Jahren, daß sich die Werbebranche selbst kannibalisiert hat, aber nun sehe ich, dass da noch mehr geht. Diskussionforen wie dieses bieten immerhin die Möglichkeit, falschen Informationen zu widersprechen. Webseiten ohne Werbung sind meistens auch besser, weil bei deren Autor (meist) keine finanziellen Interessen im Vordergrund stehen, sonder andere: z.B. Wissen zu fördern oder sich selbst ein gutes Denkmal zu setzen.
:
Bearbeitet durch User
Beitrag #8038193 wurde vom Autor gelöscht.
Veit D. schrieb: > Ich würde dir außerdem für alle ISCP Spielereien einen Programmer > empfehlen. Das erleichtert vieles im Umgang. Der wurde bereits vorgeschlagen. Mit welchem µC der Programmer aufgebaut ist, spielt keine Rolle, solange das Protokoll richtig implementiert ist. Oder was meinst du mit ISCP? Hans W. schrieb: > Falls nicht vorhanden, kann man einen Arduino Umo oder Nano mit dem > "Arduino ISP" Sketch zum ISP-Programmieradapter machen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.