Ich bin derzeit an meinem nächsten Arduino Hardware Projekt zugange. In diesem Zuge habe ich Arduinos aus verschieden Quellen bezogen. Um einen dieser Klone soll es hier gehen und darum, wie ich mit ihm nicht so richtig glücklich wurde.

Arduino Klon: WAVGAT Uno R3
Arduino Klon: WAVGAT Uno R3

Bekommen hab ich das gute Stück auf aliexpress. Für ganze 2,12€ (inkl. Versand). Mit Chinaklonen habe ich schon mal gearbeitet – damals waren es nanos – und hatte dementsprechend auch keine größeren Problem erwartet.

Serieller Controller CH340G
Serieller Controller CH340G

Für Windows-Nutzer soll wohl schon der CH304G Chip für die serielle Verbindung ein größeres Problem sein, da es schwierig sein soll, signierte 64bit Treiber für die Dinger zu bekommen. Dies interessiert Nutzer von unixoiden Betriebssystemen weniger, da er hier out-of-the box funktioniert wie er soll.

Flashen aus Sublime Text / Deviot

Zuerst habe ich – wie gewohnt – meine IDE gestartet und wollte ihn wie gewohnt darüber flashen. Ich verwende dort Deviot, was ich über Package Control installiert habe. Im Hintergrund werkelt hier platformio, eine Board Definition gab es aber nicht. Wacker testete ich „Arduino Uno“ und wählte das richtige usb-serial device. Das Flashen klappte auf Anhieb.

Allerdings fiel mir schnell auf, dass mein Testsketch viel zu langsam lief und auf dem Serial Monitor nur Zeichensalat ausgegeben wurde.

int ledPin = 13;                // LED connected to digital pin 13

void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
  Serial.begin(9600);
}

void loop()
{
  digitalWrite(ledPin, HIGH);   // sets the LED on
  Serial.println("LED an");
  delay(1000);                  // waits for a second
  digitalWrite(ledPin, LOW);    // sets the LED off
  Serial.println("LED aus");
  delay(1000);                  // waits for a second
}

Flashen aus Arduino IDE

Um Fehler an der Hardware auszuschließen, probierte ich nun die original Arduino IDE und spielte das von den Chinesen über ein Google Drive Share (!!) verteilte Patchset ein.

In der Folge kann man den ‚WAVGAT Uno R3‘ aus der Boardliste auswählen, das Flashen vom Testsketch klappte ebenso auf anhieb. Und sogar auf der seriellen Ausgabe tauchten lesbare Zeichen im Sekundentakt auf

Allerdings tauchten die nächsten Probleme beim kompilieren des Sketches von meinem derzeitigen Projekt auf. Der Vorgang warf Fehler in diversen Dateien, die zum angepassten Patchset für das Board gehörten

Bootloader via SPI flashen

Jemand aus der warpzone vermutete, dass der interne Taktgeber aufgrund falscher Fuse bits genutzt würde. Es könnte helfen, den Bootloader mit den richtigen Fuse-Bits neu zu flashen.

Ich habe das Patchset der Chinesen nach der Boarddefinitionen durchsucht und wurde sogar fündig. Aus den gefunden Informationen bastelte ich mir eine platformio Board Definition in ~/.platformio/platforms/atmelavr/boards

{
  "build": {
    "core": "arduino",
    "extra_flags": "-DARDUINO_AVR_UNO",
    "f_cpu": "16000000L",
    "mcu": "atmega328p",
    "variant": "lgt8fx8p",
    "hwids": [
      [
        "0x1a86",
        "0x7523"
      ]
    ],
    "mcu": "atmega328p",
    "variant": "standard"
  },
  "frameworks": [
    "arduino",
    "simba"
  ],
  "fuses": {
    "efuse": "0x07",
    "hfuse": "0xFF",
    "lfuse": "0xFF",
    "lock": "0x3F"
  },
  "name": "Wavgat Uno R3",
  "upload": {
    "maximum_ram_size": 2048,
    "maximum_size": 29696,
    "protocol": "arduino",
    "require_upload_port": true,
    "speed": 57600
  },
  "url": "nan",
  "vendor": "Wavgat"
}

Leider funktioniert das so noch nicht. Ich hatte keine Lust meinen USBasp aus dem Keller zu holen und vor meiner Nase lag ein Stapel Arduinos. Also habe ich auf den echten Arduino den „Arduino as ISP“ Sketch geflasht und die ISP-Pins miteinander verbunden. Ich wollte so einen frischen Bootloader auf den WAVGAT flashen.

Versuch, einen neuen Bootloader zu flashen
Versuch, einen neuen Bootloader zu flashen

Dummerweise liefen auch diese Versuche immer wieder auf Fehler. Die Fehlerausgabe deutete nur auf falsche Verkablung hin. Die Kommunikation zwischen den beiden war nicht zustande zu bekommen. 🤷

Und nun?

Licht ins Dunkle brachte dann schlussendlich das USB-Mikroskop im lokalen Hackerspace. Die Lümmel haben nicht nur das Board, sondern den Mikrocontroller gleich mitgeklont. Und dies scheinbar gar nicht mal so gut

WAVGAT AVGA328P Mikrocontroller
WAVGAT AVGA328P Mikrocontroller

Als letzte Möglichkeit, aus diesem Arduino noch etwas zu machen, wäre vermutlich den Klon ab und einen echten aufzulöten. Der Erfolg einer solchen Aktion hängt dann natürlich maßgeblich davon ab, ob und was die Chinesen sonst noch verändert haben. Und natürlich von den Lötfertigkeiten der durchführenden Person – und dazu zähle ich mich bestimmt nicht. 💩

Schlussendlich habe ich mir noch einen Elegoo Klon auf amazon geschossen. Dieser funktioniert wie gewünscht und meldet sich sogar im USB-Devicestring als „arduino.cc“.