Arduino Nano mit neuem Bootloader

Stillschweigend hat Arduino den Bootloader für die Nano-Boards Anfang 2018 ausgetauscht. Wer sich ein neues Original-Board kauft, kann eine unangenehme Überraschung erleben.

In Pocket speichern vorlesen Druckansicht 14 Kommentare lesen
Arduino Nano

Arduino Nano

Lesezeit: 5 Min.
Von
  • Florian Schäffer
Inhaltsverzeichnis

Meistens benutzen wir in der Redaktion die billigen China-Kopien der Arduinos. Als wir jetzt allerdings Mal wieder einen mit FTDI-Chip brauchten, um etwas auszuprobieren, bestellten wir einen originalen Arduino Nano (ab 10,90 €) und kamen kurz ins Straucheln.

Die Inbetriebnahme gestaltete sich problematisch, denn das compilierte Programm ließ sich nicht mit der IDE wie gewohnt übertragen. Im Windows-Gerätemanager erschien der Arduino Nano nach der automatischen Treiberinstallation korrekt. Im Gegensatz zu anderen Arduinos wird er jedoch nicht als solcher bezeichnet, weil der FTDI-Chip seine eigene Kennung besitzt.

Der FTDI-Chip meldet sich als USB Serial Port

Die Arduino IDE war aktuell (1.8.5) und auch die Einstellungen im Menü Werkzeuge schienen korrekt gewählt zu sein:

Fehlermeldung beim Hochladen des Programmcodes

Einer Intuition folgend, lieferte eine kurze Websuche schnell die Lösung auf der Hilfe-Seite für die ersten Schritte mit dem Nano direkt bei Arduino:

We have updated the NANO board with a fresh bootloader. Boards sold from us from January 2018 have this new bootloader, while boards manufactured before that date have the old bootloader. First, make sure you have the Arduino AVR Core 1.16.21 or later looking at the Board Manager.

Relativ unbemerkt hat der Hersteller also offenbar den Bootloader auf den Boards ausgetauscht. Nachdem wir das Update über den Board Manager ausgeführt hatten, klappte das Übertragen wieder.

Was in unserem Fall nur für wenig Ärger sorgte, hätte einen Anfänger vor erhebliche Probleme stellen können. Wie sich nämlich zeigte, aktualisiert die IDE nicht den Programmteil für den Boardverwalter. Auch wenn man sich die derzeit aktuelle Software herunter lädt, bekommt man nur das alte Paket für die AVR-Boards in der Version 1.6.20. Erst eine manuelle Suche nach Updates und anschließende Installation löst das Problem.

Arduino selbst schreibt nichts dazu, was beim Bootloader neu ist. Erst ein Vergleich der alten Datei <Installationspfad>\hardware\arduino\avr\boards.txt mit der neuen Version in %AppData%\Local\Arduino15\staging\packages\avr-1.6.21.tar.bz2 zeigt, was sich geändert hat:

## Arduino Nano w/ ATmega328P
## --------------------------
nano.menu.cpu.atmega328=ATmega328P

nano.menu.cpu.atmega328.upload.maximum_size=30720
nano.menu.cpu.atmega328.upload.maximum_data_size=2048
nano.menu.cpu.atmega328.upload.speed=115200

nano.menu.cpu.atmega328.bootloader.low_fuses=0xFF
nano.menu.cpu.atmega328.bootloader.high_fuses=0xDA
nano.menu.cpu.atmega328.bootloader.extended_fuses=0xFD
nano.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex

nano.menu.cpu.atmega328.build.mcu=atmega328p

## Arduino Nano w/ ATmega328P (old bootloader)
## --------------------------
nano.menu.cpu.atmega328old=ATmega328P (Old Bootloader)

nano.menu.cpu.atmega328old.upload.maximum_size=30720
nano.menu.cpu.atmega328old.upload.maximum_data_size=2048
nano.menu.cpu.atmega328old.upload.speed=57600

nano.menu.cpu.atmega328old.bootloader.low_fuses=0xFF
nano.menu.cpu.atmega328old.bootloader.high_fuses=0xDA
nano.menu.cpu.atmega328old.bootloader.extended_fuses=0xFD
nano.menu.cpu.atmega328old.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex

nano.menu.cpu.atmega328old.build.mcu=atmega328p

Der bisherige Bootloader ATmegaBOOT wurde gegen Optiboot ausgetauscht und damit einhergehend auch die Datenübertragungsrate von 57.600 Bd auf 115.200 Bd verdoppelt.

Optiboot ist vor allem deutlich kleiner als der alte Bootloader (1,35 KB anstatt 5,4 KB beim Vergleich der Hex-Files) und erlaubt eine schnellere Übertragung der Daten, was sich angenehm bemerkbar macht, wenn man größere Programme flashen will. Vom eingesparten Speicherplatz hat man als Anwender aber nichts, denn der reservierte Speicherbereich für den Bootloader beträgt durch die unveränderten Fuse-Bits weiterhin 1.024 words (2 KByte).

Das notwendige Update lässt sich einfach installieren und setzt nur eine Internetverbindung voraus:

  1. Um für das neue Nano-Board gewappnet zu sein, rufen Sie Werkzeuge/Board: "…"/Boardverwalter auf.
  2. Am Anfang der Liste befindet sich das Feld für Arduino AVR Boards. Klicken Sie in das Feld an einer beliebigen Stelle, um die weiteren Möglichkeiten angezeigt zu bekommen.
  3. Klicken Sie auf die Schaltfläche Update.
  4. Nach dem die neuen Dateien installiert wurden, steht oben die neue Versionsnummer (derzeit: 1.6.21). Sie können den Boardverwalter nun schließen.
  5. Im Menü Werkzeuge/Board: "…"/Nano auswählen und bei Werkzeuge/Prozessor: "…"/, welchen Prozessor und welchen Bootloader Ihr Board besitzt.

Boardverwalter Update (3 Bilder)

Starten Sie das Update

Weil man den auf dem Board gespeicherten Bootloader nicht ermitteln kann, probieren Sie im Zweifelsfall einfach aus, mit welcher Einstellung das Programm hochgeladen werden kann. Bei falscher Einstellung passiert nichts weiter, als das die Fehlermeldung

Problem beim Hochladen auf das Board.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x4c

angezeigt wird. Die billigen China-Klone werden sicherlich noch lange Zeit den alten Bootloader mitbringen.

Das Bootloader-Update hinterlässt einen etwas schalen Geschmack. Arduino ist vor allem eine Plattform für Einsteiger: auspacken, anschließen, loslegen. Wenn das nicht klappt, weil die Updates nicht automatisch installiert werden, entsteht vermeidbarer Frust - erst Recht, wenn man sich bewusst für ein Original entscheidet und dafür den zehnfachen Preis gegenüber einer Billigvariante hinlegt. Wenigstens ein Hinweis-Aufkleber auf der Pappverpackung hätte sein sollen. (fls)