Posted

in

Updated

Neusten Bootloader flashen auf Arduino Nano China clone

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.

Blink-Sketch als Test

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?

Erhältst du eine Fehlermeldung, die ähnlich der folgenden aussieht, 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

In der Fehlermeldung können auch andere Codes hinter „resp“ stehen, z.B.:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x85

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 die LED auf dem Arduino Nano sollte blinken. Im Ausgabefenster der Arduino IDE steht dann Hochladen abgeschlossen und weitere Details zum Upload-Vorgang, beispielsweise:


         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 machen?

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-Beitrag 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: Arduino Nano, Mega, Pro Mini usw. Es sollte also insbesondere auch mit einem Arduino Nano mit altem Bootloader klappen!

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 male-to-female (M2F) Jumper-Kabel.

Set mit unterschiedlichen Jumper-Kabeln


Kondensator: In dem verlinkten Konsensator-Sortiment sind viele unterschiedliche Werte vorhanden. Für den Flash-Vorgang benötigst du daraus einen 10 µF Kondensator.

Sortiment von Kondensatoren, beinhaltet 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

Arduino als Programmer vorbereiten

Als erstes bereiten wir den Arduino als Programmer vor. Er wird dadurch zum sogenannten ISP, also einem In-System Programmer. Dazu laden wir eine spezielle Software auf den Arduino Uno, über die wir nachher den Bootloader des Arduino Nano flashen werden.

  • 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: 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?

  • Zum einen muss das Zielgerät (Arduino Nano) 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 genannt1)
    • 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 Zielgerät (Pinout)

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

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

Wo finden wir diese Pins? Dabei hilft ein Blick in das sogenannte Pinout des Arduino Nano, ein spezielles Dokument, das die Pinbelegung des konkreten Arduino-Modells beschreibt. Dabei zeigt sich: Alle oben genannten Pins sind am Arduino Nano doppelt vorhanden – 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.

Variante 1: Verkabelung mittels 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: Verkabelung über normale, seitliche 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. Zuf besseren Übersicht, sind in folgendem Pinout-Schaubild ausschließlich die benötigten Pins eingetragen:

Pinbelegung beim Programmer (Pinout)

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? Dabei hilft ein Blick in das sogenannte Pinout des Arduino Nano, ein spezielles Dokument, das die Pinbelegung des konkreten Arduino-Modells beschreibt. Dabei zeigt sich: Alle oben genannten Pins sind am Arduino Nano doppelt vorhanden – 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.

Welche Pins werden auf Seite des Programmers (Arduino Uno) verwendet?

  • Das Zielgerät (Arduino Nano) wird über den Programmer mit Strom versorgt – in der Regel über 5V und GND. Die entsprechenden Pins sind auf dem Board auch exakt so beschriftet.
  • Aus dem Quellcode des ArduinoISP Sketch wissen wir schon, dass die Kommunikation per MISO, MOSI und SCK stattfindet. Auf dem Arduinoboard sind meistens aber nur Pinnummern aufgedruckt. Die Zuordnung zwischen diesen Nummern und den Hardwarefunktionen der einzelnen Pins gibt dir ein sogenanntes „Pinout“ für dein Arduinomodell. Die Pinbelegung des Arduino Uno lautet beispielsweise so:
    • MOSI: 11
    • MISO: 12
    • SCK: 13
  • Der Quellcode verrät uns schließlich, über welche Pin-Nummer der Programmer-Arduino den Reset des Ziel-Arduinos triggert:
    • Reset-Trigger: 10
Pinbelegung: RESET auf Pin 10

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

Verbindung per ICSP-Pinblock: Arduino Uno (Programmer) links und Arduino Nano (Bootloader-Zielgerät) rechts. Zusätzlich sieht man am Arduino Uno einen 10 µF Kondensator, der nicht unbedingt notwendig ist (siehe folgende Anmerkung).
normale, seitliche Pins
[Schaltplan erstellt mit Fritzing, Lizenz: CC BY-SA 3.0]
ICSP-Pins
[Schaltplan erstellt mit Fritzing, Lizenz: CC BY-SA 3.0]

In diesem Schritt werden wir den Arduino Uno mit den sechs Jumper-Kabeln an den Arduino Nano anschließen.

In der folgenden Tabelle sind beide Anschlussmöglichkeiten aufgeführt. Der Arduino Uno wird also auf eine der beiden folgenden Arten mit dem Arduino Nano verbunden:

Arduino Uno
(Programmer)
<->Arduino Nano
(Bootloader-Zielgerät)
ICSP-Pinblock


oder: normale Pins
5V5V (ICSP-Pin 2)5V
GNDGND (ICSP-Pin 6)GND
D13SCK (ICSP-Pin 3)D13 (SCK)
D12MISO (ICSP-Pin 1)D12 (MISO)
D11MOSI (ICSP-Pin 4)D11 (MOSI)
D10RST (ICSP-Pin 5)RST

Kondensator

10µF Kondensator (capacitor) mit minus (-) [kurzes Bein] auf GND und plus (+) [langes Bein] auf RST

Auf der Arduino-Seite zu ISP wird darauf hingewiesen, dass beim Arduino Uno als Programmer (und auch beim Mega, Mini und Nano) zusätzlich ein 10 µF Kondensator (capacitor) mit den Pins GND (minus (-), kurzes Bein) und RST (plus (+), langes Bein) verbunden werden muss. Der Kondesator darf erst aufgesteckt werden, nachdem der ArduinoISP-Sketch auf das Board geladen wurde. Im Foto sieht man den zusätzlich aufgesteckten Kondensator.

Der Kondensator verhindert den automatischen Reset des programmierenden Arduino, damit der ArduinoISP-Sketch während des Flash-Vorgangs weiterläuft.

Hinweis: Bei mir funktionierte der Flashvorgang (siehe unten) jedoch auch ohne den zusätzlichen Kondensator. Allerdings klappte es bei zwei unserer Leser nicht ohne Kondensator. In einem Fall war ein 0,1µF Kondensator ausreichend. Im anderen Fall führte ein 10µF-Kondensator zum Erfolg.

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:
      • Board: Arduino Nano
      • Prozessor: ATmega328P (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:

         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! 🙂


Titelbild: by Nizzah Khusnunnisa on Unsplash, modified with Canva

  1. Namensänderung bei SPI: A Resolution to Redefine SPI Signal Names ↩︎

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

22 Antworten 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

      Guter Hinweis!
      Hier noch eine Grafik zur Verdeutlichung Nummerierung der ICSP-Pinbelegung am Arduino Nano

  4. 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?

  5. 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. 🙂

  6. 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.

  7. 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.

  8. 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?

  9. 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!

  10. 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

  11. 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.

  12. 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.

  13. 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 👍

  14. j.g.

    Ich hatte mit 2Arduino 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 am2.Nano.
    Danke für die tolle Anleitung!

  15. 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 👍

  16. 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!

Schreibe einen Kommentar

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