DigiSpark programmieren in (K)Ubuntu 18.04

Im Video letzte Woche zeigten wir, wie die kleine USB-Platine "DigiSpark" in der Arduino IDE programmiert werden kann. Das kleine Gerät ist äußerst günstig und eignet sich als etwas weniger komfortable Alternative zu professionellen Lösungen wie dem Malduino oder dem RubberDucky. Darüber hinaus kann es auch dazu verwendet werden, um Mitarbeitern in einer Sicherheitsschulung live zu zeigen, warum man unbekannte USB-Sticks nicht einfach anstecken soll.

Da im Video die Installation übersprungen wurde, möchte ich den Ablauf in diesem Beitrag noch anhand von Kubuntu 18.04 zeigen. Wer jedoch Windows verwendet, kann die Arduino IDE und die DigiSpark Treiber für Windows installieren und der Anleitung hier dennoch folgen.

Unter Ubuntu kann die IDE zwar ganz bequem über den Befehl sudo apt install arduino installiert werden, dabei handelt es sich jedoch um eine stark veraltete Version.

Arduino IDE Installation über 'apt' in der Linux Konsole

Besser ist es, die IDE über Ubuntu umake oder manuell über das tar.gz Archiv von der Webseite zu installieren.

Arduino IDE Installation über Ubuntu 'umake'

# Befehle
sudo apt install ubuntu-make
sudo umake ide arduino
sudo ln -s /home/USERNAME/.local/share/umake/ide/arduino/arduino /usr/bin/

Achtung: da Arduino nicht über apt installiert wurde, wird es auch nicht durch System-Updates aktualisiert. Um die IDE zu aktualisieren, muss der umake-Befehl erneut ausgeführt werden.


Nach der Installation kann die IDE über die Konsole oder den Launcher ([Alt]+[F2], bzw. [Alt]+[Leer]) mit arduino gestartet werden. Beim ersten Start begrüßt uns das Programm unter Linux mit der folgenden Meldung.

Arduino IDE benötigt die Gruppenmitgliedschaft 'dialout' unter Linux

Die benötigten Gruppenmitgliedschaft können wir einfach hinzufügen, benötigen dafür aber unser Sudo-Kennwort.

Sudo Kennwortabfrage um Gruppenmitgliedschaft hinzuzufügen

Nach wenigen Schritten startet ist die IDE einsatzbereit und zeigt das Standard-Dokument.

Fenster der Arduino IDE mit Standard-Dokument

Für die Verwendung mit DigiSpark sind jedoch noch ein paar weitere Schritte notwendig. Dafür müssen die Einstellungen unter Datei (File) -> Einstellungen (Preferences) angepasst werden.

Aufruf der Einstellungen über File -> Preferences

Als erstes stelle ich die Sprache der IDE auf Deutsch um, lege fest, wo meine Sketches (Skripte) abgelegt werden und füge die Board-Manager-URL für DigiSpark hinzu. Der letzte Schritt ist notwendig, damit wir das benötigte DigiSpark-Board installieren können, welche Arduino braucht, um mit dem DigiSpark kommunizieren zu können.

Festlegen von Sketch-Pfad, Anwendungssprache und Board-Manager-URL

Wer verschiedene Board-Manager-URLs hat, kann diese über den Button rechts neben der URL-Zeile verwalten.

Arduino IDE Board-Manager-URL Fenster

Für das DigiSpark muss der folgende Board-Manager hinzugefügt werden.

http://digistump.com/package_digistump_index.json

Als nächstes muss das DigiSpark-AVR-Board installiert werden. Dazu rufen wir den Board-Manager über Werkzeuge (Tools) -> Board:... -> Boardverwalter (Board Manager) auf.

Aufruf des Boardverwalters in der Arduino IDE

Im Boardverwalter kann über die Suchfunktion nach dem Stichwort Digi gefiltert werden. Dort sollte DigiSpark AVR Boards auftauchen, welches installiert werden muss.

Installation des DigiSpark AVR Boards

Nach der Installation ist alles bereit, um das DigiSpark Board auszuwählen und mit dem Programmieren anzufangen.

Auswählen des DigiSpark Boards in Arduino

Ein Code-Beispiel von der offiziellen Wiki-Seite ist das folgende Skript, welches eine LED des DigiSparks in regelmäßigen Abständen blinken lässt. Weitere Beispiele sind unter Datei -> Beispiele zu finden.

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(0, OUTPUT); //LED on Model B
  pinMode(1, OUTPUT); //LED on Model A   
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(1, HIGH);
  delay(1000);               // wait for a second
  digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(1, LOW); 
  delay(1000);               // wait for a second
}

Das Script muss lediglich in der IDE geöffnet und über den Upload Button (→) auf das DigiSpark geladen werden. In der Konsole wird angezeigt, zu welchem Zeitpunkt das DigiSpark am Rechner angesteckt werden muss.

Upload des Blink-Scripts auf das DigiSpark

Mehr zur Nutzung von DigiSpark und der Arduino IDE gibts im Video von letzter Woche zu sehen.

![LastBreach Youtube Video zum DigiSpark](digispark-video-youtube.png)

Probleme mit der Installation? Hier geht's zum Troubleshooting Guide (englisch).