Auf einem Raspberry Pi mit dem normalen 32-Bit-Pi-OS bleibt Ihnen zum Installieren des QMK-Kommandozeilen-Tools nur die Installation via Pythons Pip. Dazu müssen wir dieses (und eben Git) erst einmal installieren. Danach rufen Sie Pip auf (Listing 3).
Listing 3
Pip und Git
$ sudo apt install git python3-pip $ python3 -m pip install build qmk
Es gibt auch den Befehl pip selbst, aber unter Pi OS beziehungsweise Debian 10 “Buster” müssen Sie pip3 aufrufen, weil pip die Python-2-Variante startet. In Pi OS/Debian 11 “Bullseye” gibt es nur noch die Python-3-Variante, die hier wieder pip heißt. Aus diesem Grund verwendet Listing 3 in der zweiten Zeile einen generischen Befehl, der unabhängig von der verwendeten Betriebssystemversion funktioniert.
Je nach Pi-OS- beziehungsweise Debian-Version (zum Beispiel bei Version 10) müssen Sie dem Suchpfad in der Umgebungsvariable $PATH noch den von Pip verwendeten Installationspfad hinzufügen [19]. Listing 4 zeigt das für die standardmäßig verwendete Shell Bash.
Listing 4
Pfad ergänzen
$ echo 'PATH="$HOME/.local/bin:$PATH"' >> $HOME/.bashrc && source $HOME/.bashrc
Einen ersten Lauf von qmk setup sehen Sie in den Abbildungen 4 bis**7, die allerdings nur die relevanten Stellen der relativ langen Ausgabe zeigen. Der Aufruf klont einerseits das Git-Repository von QMK (es heißt qmk_firmware) in Ihr Home-Verzeichnis oder optional ein anderes angegebenes Verzeichnis (Abbildung 4).
Weiter überprüft es, ob alle notwendigen Pakete installiert sind (Abbildung 5). So installiert es – sofern nicht schon vorhanden – unter anderem die Pakete gcc, gcc-avr, gcc-arm-none-eabi, avr-libc, binutils-avr und binutils-arm-none-eabi (Abbildung 6). Diese werden zum Kompilieren von Code für die gängigen Hardwarearchitekturen von Mikrocontrollern auf Tastaturen (ARM und AVR) wie auch nativem Code benötigt.
Weiter installiert es die Pakete avrdude, dfu-util und dfu-programmer, die alle zum Flashen von Code auf Mikrocontroller dienen beziehungsweise mit dem von der Hardware verwendeten Bootloader korrelieren. Weiter richtet die Routine Tools wie Unzip und Wget ein, die man typischerweise zum Herunterladen und Auspacken von Archiven benötigt.
Der Mischmasch aus Sprachen zum Beispiel in Abbildung 4 kommt daher, dass QMK Tool anscheinend nicht lokalisiert wurde und entsprechend kein Deutsch spricht, das Kommando git aber schon. Zeigt qmk setup am Ende den Satz QMK is ready to go (Abbildung 7), können Sie mit dem Kompilieren von Firmware loslegen.

Abbildung 7: Ausgabe von qmk setup (Ende): Download eines Projekts, das nicht im Git liegt. Zum Schluss sind nun alle Abhängigkeiten erfüllt.
Kompilieren der Firmware
Das lokale Kompilieren einer Firmware auf Basis einer im QMK Configurator online zusammengestellten Tastaturbelegung geht schnell von der Hand: Sie rufen einfach qmk compile JSON-Datei auf. Qmk übersetzt daraufhin in einem Rutsch alles, was notwendig, aber noch nicht kompiliert ist.
Das bedeutet auch, dass beim ersten Aufruf von qmk compile pro Hardwarearchitektur alle für die gewünschte Firmware-Variante relevanten Bestandteile von QMK neu entstehen (Abbildung 8). Bei späteren Aufrufen erstellt Qmk nur jene Bestandteile neu, die sich in der Zwischenzeit geändert haben oder direkt von der Tastenbelegung abhängig sind. Die kompilierte Firmware findet sich in verschiedenen Formaten im Unterverzeichnis .build/ unterhalb von qmk_firmware/.
Als Beispiel dient im Folgenden das Preonic-Keyboard des Autors (Abbildung 9). Da er Emacs benutzt, ist [Strg]+[X][Strg]+[S] (Speichern der aktuellen Datei) eine sehr häufig benutzte Tastenkombination. Er tippt diese mit dem kleinen Finger auf [Strg]+, dem Zeigefinger auf [X]+ und dem Mittelfinger auf [S]+. Im klassischen ortholinearen Tastaturlayout befinden sich [X]+ und [S] aber direkt untereinander, was zu verknoteten Fingern führt.

Abbildung 9: Das Preonic-Keyboard des Autors mit der um eine Taste verschobenen untersten Buchstabenreihe.
Deswegen hat der Autor die unterste Buchstabenreihe der (englischen) Preonic-Tastatur um eine Taste verschoben, sodass [/] ans linke Ende der Tastenreihe rutscht. Die zugehörige JSON-Datei mit diesem Layout findet sich im Download-Bereich zu diesem Artikel und heißt abe-r4-one-off.json. Sie können Sie mit der grünen Pfeil-nach-oben-Schaltfläche in den QMK Configurator laden, um sie im Detail anzusehen oder als Basis für eine eigene Tastenbelegung zu verwenden. Listing 5 zeigt das Ergebnis der Kompilierung mittels qmk compile abe-r4-one-off.json im Verzeichnis qmk_firmware/.build/.
Listing 5
Ergebnis der Kompilierung
$ ls -l qmk_firmware/.build
total 2600
drwxr-xr-x 5 abe abe 4096 Sep 7 01:46 obj_preonic_rev3/
drwxr-xr-x 9 abe abe 4096 Sep 7 01:46 obj_preonic_rev3_abe-r4-one-off/
-rwxr-xr-x 1 abe abe 54432 Sep 7 01:51 preonic_rev3_abe-r4-one-off.bin*
-rwxr-xr-x 1 abe abe 1671572 Sep 7 01:51 preonic_rev3_abe-r4-one-off.elf*
-rw-r--r-- 1 abe abe 153107 Sep 7 01:51 preonic_rev3_abe-r4-one-off.hex
-rw-r--r-- 1 abe abe 837211 Sep 7 01:51 preonic_rev3_abe-r4-one-off.map
Die Dateien mit den Endungen .bin und .hex sind die, die später auf die Tastatur geflasht werden. Sie unterschieden sich nur im Format: Die .bin-Datei liegt im Binärformat vor; beim .hex-File handelt es sich um eine Textdatei, die jedes Byte in Form zweier hexadezimaler Ziffern darstellt. Je nach Tastatur, deren Bootloader und Flash-Programm benötigt man das eine oder das andere Format. QMK scheint immer beide zu kompilieren, auch wenn es weiß, wie eine Tastatur typischerweise geflasht wird – vermutlich um alternative Flash-Methoden zu unterstützen.








