Neusten Bootloader flashen auf Arduino Nano China clone

🗓️ Veröffentlicht:

🔄 Aktualisiert:

🏷️ Kategorie:

⏱️ Lesedauer:

14–21 Minuten

Ein Arduino Nano ist beispielsweise bei Amazon ab 9,99 € zu bekommen. Günstiger geht das direkt aus China. Oft haben diese Boards aber noch einen alten Bootloader an Bord. In diesem Artikel wird erklärt, wie man mit Hilfe eines weiteren Arduinos den Bootloader des Nanos neu flasht.

×
Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.

Ist der alte oder neue Bootloader installiert?

Zu Beginn solltest du herauszufinden, ob der alte oder bereits der neue Bootloader installiert ist.

Schließe deinen Arduino Nano per USB-Kabel an deinen Computer an und öffne die Arduino IDE.

  • Wähle dort unter DateiBeispiele01.Basics den Beispiel-Sketch Blink aus.
  • Unter WerkzeugeBoard wählst du Arduino Nano und unter WerkzeugePort den entsprechenden Port deines Arduino Nano.
  • Unter WerkzeugeProzessor wählst du nun zunächst ATmega328P aus (und nicht ATmega328P (Old Bootloader)).
  • Starte dann den Upload des Sketches.

Upload erfolgreich?

Wenn der Sketch-Upload erfolgreich war, dann ist bereits der neue Bootloader auf deinem Arduino Nano installiert und du kannst an dieser Stelle aufhören zu lesen 🙂

Upload fehlgeschlagen?

Bekommst du eine solche Fehlermeldung?

  • avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
  • Beim Hochladen des Sketches ist ein Fehler aufgetreten

Dann ist auf deinem Arduino Nano der alte (oder gar kein) Bootloader installiert.

         Using Port                    : COM16
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

avrdude done.  Thank you.

Beim Hochladen des Sketches ist ein Fehler aufgetreten

Gegen-Check

Wähle nun unter WerkzeugeProzessor den Eintrag ATmega328P (Old Bootloader) aus und starte den Upload des Sketches erneut. Diesmal sollte der Upload erfolgreich sein und mit der Meldung avrdude done. Thank you. abgeschlossen werden.

Der Blink-Sketch sorgt dafür, dass die LED auf dem Arduino Nano nun blinkt. Im Ausgabefenster der Arduino IDE erscheint außerdem die Meldung Hochladen abgeschlossen, sowie weitere Details zum Upload-Vorgang.


         Using Port                    : COM16
         Using Programmer              : arduino
         Overriding Baud Rate          : 57600
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

[...]

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 2
         Firmware Version: 1.16
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "C:\Users\user\AppData\Local\Temp\arduino_build_372348/Blink.ino.hex"
avrdude: writing flash (924 bytes):

Writing | ################################################## | 100% 0.29s

avrdude: 924 bytes of flash written
avrdude: verifying flash memory against C:\Users\user\AppData\Local\Temp\arduino_build_372348/Blink.ino.hex:
avrdude: load data flash data from input file C:\Users\user\AppData\Local\Temp\arduino_build_372348/Blink.ino.hex:
avrdude: input file C:\Users\user\AppData\Local\Temp\arduino_build_372348/Blink.ino.hex contains 924 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.22s

avrdude: verifying ...
avrdude: 924 bytes of flash verified

avrdude done.  Thank you.
Expand

Damit wissen wir jetzt, dass auf dem Arduino Nano der alte Bootloader installiert ist. Diesen können wir ohne Probleme mit dem neuen Bootloader überschreiben, da es sich nur um eine andere Software handelt. Die Hardware eines Arduino Nanos mit altem Bootloader unterscheidet sich nicht von einem mit neuem Bootloader. Aber warum sollten wir das überhaupt tun?

Unterschiede des neuen gegenüber des alten Bootloaders

Der alte Bootloader ist der „ATmegaBOOT“, der neue Bootloader heißt „optiboot“ und wird auch in anderen Arduino-Modellen genutzt.

In diesem StackExchange-Beitrag1 werden die beiden Haupt-Vorteile genannt:

  • Wird der Arduino Nano durch den Watchdog resettet, dann führt ein Bug in ATmegaBOOT dazu, dass der Arduino Nano unendlich oft neu startet. Diesen Fehler gibt es in optiboot nicht.
  • Beim Sketch-Upload arbeitet ATmegaBOOT mit einer baud-Rate von 57600. Der Bootloader optiboot hingegen ist doppelt so schnell mit einer baud-Rate von 115200. Sketches können mit dem neuen Bootloader also schneller auf den Nano geladen werden. Da unterschiedliche baud-Raten verwendet werden, muss beim Sketch-Upload in der Arduino-IDE auch immer der korrekte Bootloader ausgewählt werden. Aus Sicht des Bootloaders würden nämlich sonst keine sinnvollen Daten empfangen werden, da der Sketch zu langsam bzw. zu schnell übertragen wird.

Ein weiterer, kleiner Vorteil des neuen Bootloaders ist, dass man die Default-Einstellung der Arduino-IDE nutzen kann und nicht daran denken muss, den Bootloader im Menü Prozessor entsprechend zu wechseln.

Was wird benötigt?

Um einen Bootloader auf einen Arduino zu flashen, braucht man einen „Programmer“. Das kann entweder ein spezielles Board genau für diesen Zweck sein oder man nutzt einen weiteren Arduino für diese Aufgabe. Wenn man einen zweiten Arduino herumliegen hat, empfiehlt es sich, diesen als Programmer zu nutzen, da man dann nicht noch extra ein (selten genutzes) Programmer-Board kaufen muss.

Du brauchst folgendes Material und Tools:

⚙️ Hardware & Material

Arduino als Programmer: In der Regel kann jedes Arduino-Modell als Programmer verwendet werden – egal ob Arduino Uno, Nano, Mega, Pro Mini oder andere Varianten.

Hast du mehrere Arduino Nanos (mit altem Bootloader)? Kein Problem, denn auch das gegenseitige Flashen von Arduino Nanos sollte funktionieren! Einzige kleine Hürde: Da der Nano keine Female-Pinheader hat, muss der unten erwähnte Kondensator dann über ein Breadboard verbunden werden.

Wir nutzen im Folgenden einen Arduino Uno als Programmer. Habt ihr erfolgreich einen anderen Arduino als Programmer benutzt, dann gebt gerne in den Kommentaren ein kurzes Feedback 🙂

Arduino Uno

Arduino Uno (Original)


Jumper-Kabel: Um die beiden Arduinos zu verkabeln benötigst du sechs Jumper-Kabel. Je nach Arduino-Modell und Verkabelungsvariante müssen das entweder male-to-female (M2F) oder female-to-female (F2F) Kabel sein. Am besten holst du dir ein Set mit unterschiedlichen Jumper-Kabeln, dann bist du für alle Fälle ausgestattet.

Set mit unterschiedlichen Jumper-Kabeln


Kondensator: Für den Flash-Vorgang benötigst du einen 10 µF Kondensator. In dem verlinkten Konsensator-Sortiment findest du genau diesen Wert sowie viele weitere.

Sortiment von Kondensatoren, beinhaltet u. a. 10-µF-Kondensatoren

👨‍💻 Software & Tools

Arduino IDE: Die Software muss auf deinem Computer installiert sein.
Hinweis: Den Arduino Cloud Editor (Web-App) kannst du nicht zum Flashen des Bootloaders verwenden.

Neuen Bootloader auf den Arduino Nano flashen

Programmer (Arduino Uno) vorbereiten

Als erstes bereiten wir den Programmer vor – in unserem Fall den Arduino Uno (bzw. eine andere von dir gewählte Arduino-Variante). Dabei konfigurieren wir den Arduino als sogenannten ISP, einem In-System Programmer. Dazu laden wir eine spezielle Software auf den Arduino Uno, mit deren Hilfe wir anschließend den Bootloader des Arduino Nano flashen können.

Keine Sorge: Die ISP-Software ist nicht dauerhaft aufgespielt. Sie lässt sich jederzeit wieder überschreiben, sodass der Arduino problemlos für andere Projekte weiterverwendet werden kann.

  • Wichtig: Schließe jetzt noch keine Jumper-Kabel und keinen Kondensator (!) an den Arduino Uno an.
  • Verbinde den Arduino Uno per USB-Kabel mit dem Computer.
  • Öffne die Arduino IDE und lade den Sketch ArduinoISP über das Menü DateiBeispiele11.ArduinoISPArduinoISP
    • Hinweis: Der Arduino Cloud Editor (Web-App) hat die Funktionen fürs Bootloader-Flashen nicht eingebaut!
  • Setze die Board- und Port-Einstellungen entsprechend dem verwendeten Arduino-Modell für den Programmer:
    • WerkzeugeBoardArduino Uno
    • WerkzeugePort → Port-Nummer des Arduino Uno auswählen
  • Lade den Sketch auf den Arduino Uno.
  • Ist alles erfolgreich hochgeladen, dann ist dein ISP-Arduino bereit!
  • Trenne den Arduino Uno (Programmer) vom Computer.

Kommunikation verstehen

Damit der ISP/Programmer (Arduino Uno) das Bootloader-Zielgerät (Arduino Nano) flashen kann, müssen beide Arduinos verkabelt werden.

Kommentar am Anfang des ArduinoISP Sketch

Wie läuft die Kommunikation zwischen den beiden Arduinos ab?

  • Das Zielgerät (Arduino Nano) muss mit Strom versorgt werden – in der Regel über 5V und GND.
  • Ein Blick in den Code des ArduinoISP Sketch verrät uns, dass die Kommunikation zwischen den Arduinos per SPI (Serial Peripheral Interface) abläuft. Die entsprechenden Signalleitungen sind:
    • MISO (auch POCI oder CIPO genannt2)
    • MOSI (auch PICO oder COPI genannt)
    • SCK (auch SLK genannt)
  • Außerdem muss der Programmer-Arduino den Ziel-Arduino für den Flashvorgang neustarten bzw. zurücksetzen, was über dessen RST/RESET-Pin passiert.

Pinbelegung beim Programmer (Arduino Uno)

Während des Flash-Vorgangs muss der Programmer-Arduino (Uno) beim Ziel-Arduino (Nano) einen Reset auslösen. Dieses Reset-Signal wird auf der Seite des Programmers über einen normalen digitalen Output-Pin erzeugt.
Wichtig: Nicht versehentlich den RST/RESET-Pin des Programmer-Arduinos verwenden.

Ein Blick in den Quellcode des ArduinoISP-Sketches verrät uns, über welche Pin-Nummer der Programmer-Arduino den Reset des Ziel-Arduinos triggert:

Pinbelegung: RESET-Trigger auf Pin D10

Konkret bedeutet das:
Der Programmer-Arduino (Uno) sendet das Reset-Signal über D10. Dieses Signal wird auf der Seite des Zielgeräts (Nano) am RST/RESET-Pin empfangen und löst dort den erforderlichen Reset aus.

Beim Programmer (Arduino Uno) werden folgende Pins benötigt:

  • Stromversorgung (ausgehend): 5V und GND
  • Kommunikation: MISO/POCI/CIPO, MOSI/PICO/COPI und SCK/SLK
  • Reset (sendend/Trigger): D10

Wo finden wir diese Pins? Auf dem Arduinoboard sind meistens nur Pinnummern aufgedruckt. Die Zuordnung zwischen diesen Nummern und den Hardwarefunktionen der einzelnen Pins findet sich im sogenannten Pinout des Arduino Uno3, ein spezielles Dokument, das die Pinbelegung des konkreten Arduino-Modells beschreibt. Dabei zeigt sich, dass alle oben genannten Pins – mit Ausnahme des Reset-Triggers (D10) – auf dem Arduino Uno doppelt vorhanden sind: sowohl am ICSP-Pinblock, als auch an den normalen, seitlichen Pin-Headern. Wir können uns also frei für eine der beiden folgenden Varianten entscheiden.

×
Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.

Variante 1: Pinbelegung am ICSP-Pinblock

Der ICSP-Pinblock besteht aus 2 x 3 Pins, die auf der Boardplatine mit ICSP bezeichnet sind.

Wichtig: Nutzt du den ICSP-Pinblock, bleibt der 5. ICSP-Pin (RESET) frei! Denn der Programmer-Arduino soll kein Reset-Signal empfangen, sondern eines an den anderen Arduino senden und dies geschieht über den digitalen Pin D10, der ausschließlich auf der seitlichen Pinleiste vorhanden ist.

Variante 2: Pinbelegung an normalen, seitlichen Pins

Auch die normalen, seitlichen Pins des Arduino Uno können für den Anschluss genutzt werden. Zur besseren Übersicht sind in folgendem Pinout-Schaubild ausschließlich die benötigten Pins eingetragen. Die auf deiner Platine aufgedruckten Pinnummern sind die  orange  hinterlegten.

  • SCK/SLK:  13 
  • MISO/POCI/CIPO:  12 
  • MOSI/PICO/COPI:  11 
  • Reset-Trigger:  10 

Pinbelegung beim Zielgerät (Arduino Nano)

Auf Seite des Zielgeräts (Arduino Nano) benötigen wir entsprechend folgende Pins:

  • Stromversorgung (empfangend): 5V und GND
  • Kommunikation: MISO/POCI/CIPO, MOSI/PICO/COPI und SCK/SLK
  • Reset (empfangend): RST/RESET

Analog zum vorherigen Schritt können wir im Pinout des Arduino Nano4 die konkrete Pinbelegung nachschauen. Auch hier sind alle oben genannten Pins doppelt vorhanden – sowohl am ICSP-Pinblock, als auch an den normalen, seitlichen Pin-Headern. Auch hier gibt es somit wieder zwei Alternativen für die Verbindung:

×
Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.

Variante 1: Pinbelegung am ICSP-Pinblock

Der ICSP-Pinblock besteht aus 2 x 3 Pins, die auf der Boardplatine mit ICSP bezeichnet sind.

Hinweis: Die ICSP-Pins sind übrigens standardisiert und sollten bei jedem Arduino-Modell die selbe Pinbelegung haben, falls du statt einem Arduino Nano ein anderes Arduino-Modell flashen willst.

Variante 2: Pinbelegung an normalen, seitlichen Pins

In den Kommentaren wurde darauf hingewiesen, dass man statt des ICSP-Pinblocks ohne Probleme auch die normalen, seitlichen Pins des Arduino Nano für den Anschluss nutzen kann. Zur besseren Übersicht, sind in folgendem Pinout-Schaubild ausschließlich die benötigten Pins eingetragen:

  • SCK/SLK:  13 
  • MISO/POCI/CIPO:  12 
  • MOSI/PICO/COPI:  11 

Verkabelung: Arduino Uno (Programmer) an Arduino Nano (Bootloader-Zielgerät) anschließen

In den beiden vorherigen Schritten haben wir pro Arduino zwei Verkabelungs-Varianten vorgestellt. Diese können beliebig kombiniert werden. Es ergeben sich also diese Verkabelungsmöglichkeiten zwischen den beiden Arduinos:

Programmer (Arduino Uno)Bootloader-Zielgerät (Arduino Nano)
FunktionVariante 1:
ICSP-Pinblock
Variante 2:
normale, seitliche Pins
FunktionVariante 1:
ICSP-Pinblock
Variante 2:
normale, seitliche Pins
Stromversorgung 5V (ausgehend)ICSP-Pin 25V 5V (empfangend)ICSP-Pin 25V
■ GNDICSP-Pin 6GND■ GNDICSP-Pin 6GND
Kommunikation MISO/POCI/CIPOICSP-Pin 1D12 MISO/POCI/CIPOICSP-Pin 1D12
MOSI/PICO/COPIICSP-Pin 4D11 MOSI/PICO/COPIICSP-Pin 4D11
SCK/SLKICSP-Pin 3D13 SCK/SLKICSP-Pin 3D13
Reset Reset sendend/TriggerD10D10 Reset empfangendICSP-Pin 5RST/RESET

Um den Arduino Uno an den Arduino Nano anzuschließen, kommen jetzt sechs Jumper-Kabel zum Einsatz. Zwei der Verkabelungs-Varianten sind im Folgenden grafisch dargestellt. Für weitere Informationen zum eingezeichneten Kondensator schaue dir unbedingt auch den nächsten Schritt an; ohne Kondensator funktioniert der Flash-Vorgang in der Regel nicht!

×
Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.

Variante 1: Verkabelung mittels ICSP-Pinblöcken

Variante 2: Verkabelung über normale, seitliche Pins

In folgendem Foto siehst du, dass die beiden gezeigten Verkabelungsvarianten auch „gemischt“ werden können:

  • am Programmer: normale, seitliche Pins
  • am Zielgerät: ICSP-Pinblock

Kondensator an Programmer anschließen

Auf der Arduino-Webseite zu ISP wird darauf hingewiesen, dass beim Arduino Uno als Programmer (und auch bei weiteren Modellen wie dem Mega, Mini und Nano) zusätzlich ein 10 µF Kondensator (capacitor) mit den Pins GND (minus (-), kurzes Bein des Kondensators) und RST/RESET (plus (+), langes Bein des Kondensators) verbunden werden muss. Der Kondesator darf erst aufgesteckt werden, nachdem der ArduinoISP-Sketch (Schritt 1) auf das Board geladen wurde.

Hinweis: Der Kondensator verhindert, dass der programmierende Arduino während des Flash-Vorgangs automatisch zurückgesetzt wird. Nur so kann der ArduinoISP-Sketch während des gesamten Programmierprozesses aktiv bleiben. In der Praxis hat sich gezeigt, dass der Flashvorgang (siehe nächster Schritt) in der Regel nur mit aufgestecktem Kondensator zuverlässig funktioniert.

In den Kommentaren wurde dies mehrfach bestätigt – vielen Dank für die hilfreichen Rückmeldungen! Ein zusätzlicher Tipp aus der Community: Falls kein 10-µF-Kondensator zur Verfügung steht, kann man ggf. auch einen 0,1-µF-Kondensator als Ersatz nehmen.

×
Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.

Flash-Vorgang starten

Jetzt können wir den neuen Bootloader auf den Arduino Nano flashen.

  • Ändere dazu in der Arduino-IDE die Einstellungen im Menü Werkzeuge:
    • ändere Programmer zu Arduino as ISP (wähle genau diesen Eintrag und nicht ArduinoISP oder ArduinoISP.org)
    • unter Port wählst du die Port-Nummer des Arduino Uno (Programmer)
    • unter Board und Prozessor setzt du die Parameter für den Ziel-Arduino, bei dem wir den Bootloader neu flashen wollen, also in diesem Fall:
      • BoardArduino Nano
      • ProzessorATmega328P (und nicht ATmega328P (Old Bootloader))
  • Im Menü Werkzeuge klickst du nun auf Bootloader brennen. (Da hier ja kein Sketch upgeloaded wird, sondern der Bootloader über das ArduinoISP-Programm des Arduino Uno übertragen wird, ist es egal, was für ein Sketch währenddessen geöffnet ist.)

Der Flash-Vorgang dauert in der Regel nur wenige Sekunden. Wenn der Bootloader erfolgreich geflasht wurde, bekommst du eine Meldung, die in etwa so aussieht: avrdude done. Thank you.

         Using Port                    : COM16
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

[...]

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "C:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.2/bootloaders/optiboot/optiboot_atmega328.hex"
avrdude: writing flash (32768 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 32768 bytes of flash written
avrdude: verifying flash memory against C:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.2/bootloaders/optiboot/optiboot_atmega328.hex:
avrdude: load data flash data from input file C:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.2/bootloaders/optiboot/optiboot_atmega328.hex:
avrdude: input file C:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.2/bootloaders/optiboot/optiboot_atmega328.hex contains 32768 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 32768 bytes of flash verified
avrdude: reading input file "0x0F"
avrdude: writing lock (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x0F:
avrdude: load data lock data from input file 0x0F:
avrdude: input file 0x0F contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lock verified

avrdude done.  Thank you.
Expand

Viel Spaß mit deinem frisch geflashten Arduino Nano! 🙂

Quellen und weitere Infos

  1. Arduino StackExchange – Arduino Nano ATmega328P bootloader difference ↩︎
  2. Namensänderung bei SPI: A Resolution to Redefine SPI Signal Names ↩︎
  3. Arduino Uno (Rev3) Pinout ↩︎
  4. Arduino Nano Pinout ↩︎

Titelbild: by Nizzah Khusnunnisa on Unsplash, modified with Canva

Disclaimer:
Die hier bereitgestellten Anleitungen und Informationen wurden mit größter Sorgfalt erstellt. Dennoch übernehmen wir keinerlei Haftung für etwaige Schäden, Datenverluste oder andere Probleme, die durch das Befolgen dieser Anleitungen entstehen können. Jede*r handelt auf eigene Verantwortung. Bitte prüfe sorgfältig, ob die beschriebenen Schritte für dich, dein Gerät und dein System passen und erstelle vorab immer ein vollständiges Backup deiner Daten.

Kommentare

38 Kommentare zu „Neusten Bootloader flashen auf Arduino Nano China clone“

  1. Gerhard

    Absoluter Superbeitrag. Habe alle nanos mit neuem bootloader geflasht und alle „defekten“ funktionieren wieder. Danke!

    1. Thing King

      Schön, dass alles geklappt hat! Danke für deinen Kommentar und das Lob 🙂

  2. Bernd Hombergs

    Danke ! Gute Anleitung !
    Klappt allerdings erst, wenn bei „ändere Programmer zu Android as ISP (wähle genau diesen Eintrag […])“ der Programmer „Arduino as ISP“ eingestellt wird.
    Gutgehn, Bernd

    1. Thing King

      Vielen Dank für das Lob und den Hinweis!
      Da ist mir wohl fälschlicherweise das Wort „Android“ statt „Arduino“ in den Text rein gerutscht 😉
      Ist nun korrigiert.

  3. Martin

    Update meines Nano V3.2 hat Super geklappt. Vielleicht als Hinweis für künftige ISP-Neulinge. Das ICSP Pinout am Ziel ist wichtig. Ich habe es zuerst wie ein IC angeschlossen und rundherum gezählt, was aber nicht zum Ziel führt. Immer schön im Zickzack zählen!

    1. Thing King

      Danke für deinen Kommentar und guter Hinweis mit der Zählweise beim ICSP-Pinblock!
      Hier noch eine Grafik zur Verdeutlichung der Zählweise: Nummerierung der ICSP-Pinbelegung am Arduino Nano

  4. Rayk

    Kann ich das auch mit einem FDTI machen? wenn ja wie geht man da vor?

    1. Thing King

      Danke für deine Frage.

      Wenn ich dich richtig verstanden habe, möchtest du einen Arduino (z. B. einen Arduino Pro Mini) über FTDI an den Computer anschließen und ihn als ISP-Programmer nutzen, um den Bootloader auf einem anderen Arduino zu flashen.
      Das ist problemlos möglich und funktioniert genauso wie in der obigen Anleitung beschrieben. Einzige Besonderheit: Nachdem du den Programmer-Arduino per FTDI mit dem USB-Kabel an deinen Computer angeschlossen hast, musst du ggf. im Windows-Gerätemanager den COM-Port des FTDI-Moduls nachschauen, um diesen dann in der Arduino IDE korrekt zu setzen.

  5. Digi421

    Ich habe einen Batch von 10 Nanos gekauft und alle mit dieser Methode geflashed. Hat prima funktioniert. Aber ein einziger ist stur. Bei dem bekomme ich diesen Fehler:

    avrdude: Version 6.3-20190619
             Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
             Copyright (c) 2007-2014 Joerg Wunsch
    
             System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"
    
             Using Port                    : COM8
             Using Programmer              : stk500v1
             Overriding Baud Rate          : 19200
             AVR Part                      : ATmega328P
             Chip Erase delay              : 9000 us
             PAGEL                         : PD7
             BS2                           : PC2
             RESET disposition             : dedicated
             RETRY pulse                   : SCK
             serial program mode           : yes
             parallel program mode         : yes
             Timeout                       : 200
             StabDelay                     : 100
             CmdexeDelay                   : 25
             SyncLoops                     : 32
             ByteDelay                     : 0
             PollIndex                     : 3
             PollValue                     : 0x53
             Memory Detail                 :
    
                                      Block Poll               Page                       Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
               eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
               flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
               lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
               hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
               efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
               lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
               calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
               signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
    
             Programmer Type : STK500
             Description     : Atmel STK500 Version 1.x firmware
             Hardware Version: 2
             Firmware Version: 1.18
             Topcard         : Unknown
             Vtarget         : 0.0 V
             Varef           : 0.0 V
             Oscillator      : Off
             SCK period      : 0.1 us
    
    avrdude: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.02s
    
    avrdude: Device signature = 0x000000 (retrying)
    
    Reading | ################################################## | 100% 0.02s
    
    avrdude: Device signature = 0x000000 (retrying)
    
    Error while burning bootloader.
    Reading | ################################################## | 100% 0.02s
    
    avrdude: Device signature = 0x000000
    avrdude: Yikes!  Invalid device signature.
             Double check connections and try again, or use -F to override
             this check.
    
    
    avrdude done.  Thank you.

    Genau dieselbe Verkabelung wie bei allen anderen Nanos. Programmieren kann ich den wenn ich ATmel 328P (old bootloader) benutze, nur den bootloader flashen geht mit o.g. Fehler nicht. Nur bei diesem einen. Woran könnte das wohl liegen?

    1. Thing King

      Danke für deinen Kommentar.
      Leider bin ich überfragt, woran das liegen könnte… Da das Flashen neunmal erfolgreich war, kann man eine falsche Verkabelung wohl ausschließen. In dem Fall würde ich auf einen Defekt einer der Hardwarekomponenten oder unsaubere Lötstelle am Chip tippen 🤷‍♂️

  6. Bernd

    Vielen Dank für die klare und einfache Anleitung. Funktioniert bestens, ich hab gleich mal alle Nanos, die hier bereits zusammengelötet herumflogen, mit dem neuen Bootloader geflasht. 🙂

    1. Thing King

      👏 Top! Danke für deinen freundlichen Kommentar 🙂

  7. Karsten

    Hi, ich habe ein Problem und kann keinen Bootloader brennen.
    Meldung
    avrdude: Device signature = 0x000000
    avrdude: Yikes! Invalid device signature.

    weiß jemand einen Rat 😉
    Danke!

    1. Thing King

      Meist liegt das an einer falschen Verkabelung, fehlendem Reset (wichtig ist beispielsweise, dass der ausgehende Reset-Trigger über D10 laufen muss), fehlendem Kondensator beim Programmer-Arduino oder einer fehlenden Stromversorgung beim Ziel-Arduino. Prüfe am besten nochmal alle Verbindungen sowie die Einstellungen in der Arduino-IDE (Board, Prozessor und Programmer).

  8. Axel

    Super Beitrag!
    Ich versuche mit einem Arduino Nano den neuen Bootlooder auf einen Arduino Nano aufzuspielen. Also kein Uno als Brenner.
    Bei der Verkabelung nutzte ich ein ISP-Verbindungskabel und verbinde direkt die ISP-Pins beider Nanos.
    Das scheint aber mit deiner Anleitung nicht zu klappen.

    Brauche ich unbedingt einen Uno als Brenner? Mit einem Arduino Mega hat es auch nicht geklappt.
    Die Verbindungen habe ich alle durchgemessen, alles soweit ok.

    1. Thing King

      Danke für deinen Kommentar!

      Grundsätzlich kann jede Art von Arduino als Brenner zum Einsatz kommen, also auch ein Arduino Nano.
      Du kannst aber nicht einfach alle ISP-Pins 1:1 verbinden, denn es gibt eine wichtige Ausnahme: Vom Brenner/Programmer wird ein Reset-Signal an den Ziel-Arduino geschickt. Das ausgehende Signal wird am Programmer über den Pin D10 geschickt und am Zielgerät am Pin RES/Reset empfangen. Der RES/Reset-Pin am Brenner/Programmer bleibt also frei!
      Außerdem muss in aller Regel am Brenner/Programmer ein Kondensator angesteckt werden.
      Ich habe die Anleitung überarbeitet, um beide Punkte klarer zu machen.

      Ich hoffe, das hilft dir weiter. Viel Erfolg!

  9. Wilko Burrichter

    Hallo,
    der Beitrag ist echt super aber eine Frage habe ich noch. Kann man auch mit einem Arduino Nano einen anderen Nano flashen? Ich habe nämlich einen defekten Nano und einen der heile ist.

    1. Thing King

      Vielen Dank für das Lob 🙂

      Grundsätzlich kann jede Art von Arduino als ISP-Programmer zum Einsatz kommen, also auch ein Arduino Nano.
      Achte darauf, dass in aller Regel am Programmer ein Kondensator angesteckt werden muss. Nutzt du einen Arduino Nano als Programmer, ist dafür ein Breadboard hilfreich.

      Viel Erfolg!

  10. Master-Rudi

    Blöde Frage: Ich habe zwei Nanos mit altem Bootloader. Kann ich die damit gegenseitig updaten?!

    Also erst den einen als Programmer und damit den anderen flashen, und dann andersrum?

    1. Thing King

      Ja, grundsätzlich kann jede Art von Arduino als ISP-Programmer zum Einsatz kommen, also auch ein Arduino Nano.
      Achte darauf, dass in aller Regel am Programmer ein Kondensator angesteckt werden muss. Nutzt du einen Arduino Nano als Programmer, ist dafür ein Breadboard hilfreich.

      Viel Erfolg!

  11. Dirkules

    Vielen Dank für dieses hervorragende Tutorial. Habe einen defekten Nano mit neuem Bootloader geflasht und es hat super gut funktioniert. Der Hinweis mit dem 10µF Kondensator hat schließlich zum Erfolg geführt. Jetzt kann ich mit meinen Projekt weiter durchstarten.
    Danke! Danke! Danke!

    1. Thing King

      Vielen Dank für deinen netten Kommentar 🙏
      Und viel Erfolg weiterhin mit deinem Projekt!

  12. Martin

    Vielen Dank für diese Anleitung,
    sogar ich „Nicht-Nerd“ habe das hinbekommen.

    Bei mir bedurfte es übrigens DOCH des Kondensators, ohne hat es nicht geklappt.

    Den Kondensator hatte ich zunächst auch falsch eingesetzt, nämlich zwischen GND und +5V,
    aber kaum macht man es richtig (zwischen GND und RST) – funktionierts..

    Noch ein Tipp für diejenigen, die wie ich den Joy-It ARD Nano V3 umprogrammieren wollen,
    hier ist ein Link zur ICSP-Belegung:
    https://joy-it.net/files/files/Produkte/ARD_NanoV3/ARD_NanoV3_Datasheet_2022-09-08.pdf

    Beste Grüße,
    Martin

    1. Thing King

      Danke für deinen Kommentar und die Rückmeldung zum Kondensator. Ich habe jetzt nochmal explizit im Artikel aufgenommen, dass der Kondensator in der Regel erforderlich ist.

  13. Thomas

    Zunächst mal danke für den interessanten Vorschlag, den Bootloader zu erneuern und die ausführliche Anleitung dazu. Ich hatte zwar vom deutschen Anbieter des China Klons Treiber für den CH340G Chip heruntergeladen und installiert, aber zuerst keinen Erfolg beim Hochladen. Erst als die Option (Old Bootloader) gewählt wurde, da muss man als Neuling auch erst mal draufkommen, klappte es. Jetzt meine Frage: Sind Klons mit diesem CH340G Chip auch so „erneuerbar“?

    1. Thing King

      Danke für deinen Kommentar.

      Ja, auch Arduino-Klone mit dem CH340G-Chip lassen sich in der Regel problemlos mit einem neuen Bootloader versehen.
      Der CH340G ist nur für die USB-Seriell-Verbindung zuständig und hat keinen Einfluss auf den Bootloader selbst. Dieser sitzt im ATmega328P-Mikrocontroller.

  14. Uwe

    Mein allergrößten Respekt. Es gibt Menschen, die können es einfach.
    Hat auf Anhieb funktioniert. Sehr gut, und verständlich erkärt.
    Vielen Dank. Hat mir sehr geholfen.

    1. Thing King

      Danke dir! Freut mich sehr, dass dir der Artikel weitergeholfen hat und alles geklappt hat 👍

  15. Karsten

    Hallo!
    Kann ich einen Arduino Nano mit altem Bootloader verwenden, um einen Arduino Nano mit altem Bootloader auf den neuen Bootloader zu flashen?
    Und dann eventuell umgekehrt?
    Leider habe ich nur diese 2 Boards aufgrund eines Projektes.
    MfG
    Karsten

    1. Thing King

      Hallo 🙂
      Ja, das sollte ohne Probleme funktionieren. Im Text wird nur beispielhaft ein Arduino Uno als Programmer verwendet. Es sollte genauso mit anderen Arduino-Modellen klappen, insbesondere auch mit einem Arduino Nano, unabhängig von seiner Bootloader-Version.

  16. Vielen Dank für deinen sehr hilfreichen Beitrag.
    Bei mir funktionierte es allerdings nicht ohne Kondensator. Ich hatte nur einen 0,1µF Kondensator zur Hand, mit dem funktionierte es. Auch ich habe einen Arduino Uno als Programmer verwendet. Da ich meine Arduino Nanos manchmal in engen Gehäusen einbaue, hatte ich bereits vor Monaten die sechs ICSP-Pins mit einem kleinen Seitenschneider gekappt, um mehr Platz zu haben.
    Es funktioniert auch, wenn man die PINs wie folgt verbindet:

    Arduino UNO Arduino Nano
    Programmer China-Clone (bisher Old Bootloader)
    5V 5V
    GND GND
    D10 RST
    D11 D11
    D12 D12
    D13 D13
    1. Thing King

      Danke für deinen Kommentar und die hilfreiche Ergänzung! Ich habe den Artikel entsprechend angepasst und deinen Tipp mit aufgenommen 👍

  17. j.g.

    Ich hatte mit 2 Arduino Nanos immer diesen Fehler:
    avrdude: Expected signature for ATmega328P is 1E 95 0F
    Double check chip, or use -F to override this check.
    Fehler beim Brennen des Bootloaders.

    Es war einfach ein Verkabelungsfehler:
    Ich hatte RST mit RST verbunden statt D10 am 1. Nano mit RST am 2. Nano.
    Danke für die tolle Anleitung!

    1. Thing King

      Danke für deinen Kommentar und das Feedback!
      Den Verkabelungsfehler macht man tatsächlich schnell, da man intuitiv alles 1:1 verkabelt und diese Ausnahme mit D10 leicht übersieht.
      Ich weise darauf jetzt nochmal explizit im Artikel hin. Danke 🙂

  18. R.H.

    10uF Kondensator war nötig, sonst ging es nicht. Danke für den Tipp, war schon am Verzweifeln.

    1. Thing King

      Gerne! Schön, dass es geklappt hat und danke für deinen Kommentar 👍

  19. Clemy

    Hab es >20x probiert, ging nie. Hab dann mit chatGPT-Unterstützung herausgefunden dass mein China-Klon einen atmel MEGA328PB Chip hat, der scheinbar nicht den Arduino AVR-bootloader versteht. Hab dann den watterott ATmega328PB-Testing-master drauf gemacht – das ging (aber erst nach Reset-Drücken meiner beiden Nano).
    Nun hoffe ich dass der alle Features des Codes vom Projekt (https://www.heise.de/ratgeber/Bastelprojekt-Taupunkt-Lueftungssystem-bauen-und-Keller-trockenlegen-6356018.html) auch kann 😀
    Werde weiter aufbauen und testen.

    Danke für die coole Anleitung!

    1. Thing King

      Vielen Dank für deinen netten und hilfreichen Kommentar 🙂
      Dein Hinweis zum ATmega328PB ist bestimmt auch für andere nützlich.

      Viel Erfolg beim Bauen des Taupunkt-Lüfters und danke fürs Feedback!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert