TIPP
Beim Flashen von Firmware auf Tastaturen sollten Sie immer daran denken, dass Sie die Tastatur typischerweise während des Flashens nicht nutzen können. Inbesondere ist es nach dem Drücken von Reset an der Tastatur – sei es durch einen dedizierten Reset-Knopf auf der Rückseite oder durch eine Tastenkombination – nicht mehr möglich, die Eingabetaste zu drücken und damit den Flash-Befehl abzusetzen. Gegebenenfalls lässt sich der Unix-Befehl sleep nutzen, um vor dem eigentlichen Flash-Befehl Zeit zu gewinnen und die Tastatur in den Flash-Modus zu resetten. Behalten Sie im Hinterkopf, dass sich beim Konfigurieren, Bauen und Flashen der Firmware Fehler einschleichen können, sodass die Tastatur anschließend nicht wie erwartet funktioniert. Daher sollten Sie beim Flashen von Tastaturen als Notnagel ein zweites Keyboard parat haben.
Flashen der Firmware
Ist die Tastatur direkt an dem Rechner angeschlossen, an dem Sie die Firmware auch kompilieren, können Sie statt qmk compile auch qmk flash aufrufen und damit die Firmware auch gleich auf die Tastatur befördern. Dazu müssen Sie das Keyboard allerdings mittels eines Resets in einen Modus bringen, in dem sie sich flashen lässt. Dazu gibt es bei Open-Source-Keyboards typischerweise einen Hardware-Reset-Schalter auf der Tastaturrückseite. Alternativ belegen Sie eine Taste mit der QMK-Funktion RESET.
Reagiert qmk flash mit einem Bootloader not found (deutsch: Bootloader nicht gefunden) und gibt jede halbe Sekunde einen Punkt aus, befindet sich die Tastatur im Normalfall noch nicht im Reset-Modus. QMK prüft dann zweimal pro Sekunde, ob sich die Tastatur bereits im richtigen Modus befindet.
Eine Beschreibung weiterer Varianten, QMK mit dessen Kommandozeilen-Tool zu kompilieren und zu flashen, finden Sie in der entsprechenden Dokumentation [20].
Flashen ohne Qmk
Die Notwendigkeit zum Flashen einer von QMK Configurator gebauten Firmware resultiert oft aus mangelndem Plattenplatz zum lokalen Kompilieren. Zum Flashen benötigen Sie dann spezielle Tools wie zum Beispiel Avrdude oder Dfu-util. Im Fall des Preonic Rev3 griff der Autor zu Dfu-util aus dem gleichnamigen Paket. Der genaue Befehl für das Übertragen lässt sich jedoch weder aus dem QMK-Quellcode herausfinden, noch ist er offensichtlich.
Mit etwas Suchen im Internet zum im Preonic Rev3 verbauten STM32-Mikrocontroller fand der Autor die passende Parameterfolge zum Flashen ohne das Qmk-Kommandozeilen-Tool heraus. Listing 6 zeigt den recht komplexen Befehl, der Root-Rechte erfordert. Insofern erscheint es nicht nur sicherer, sondern auch einfacher, die QMK-Firmware doch selbst zu kompilieren: Das korrekte Flashen lässt sich dann auch gleich unkompliziert mit Qmk vornehmen.
Listing 6
Flashen mit Dfu-util
# dfu-util -v -d 0483:df11 -a 0 -s 0x08000000:leave -D Name.hex
Fazit
Auch wenn die Installation des Kommandozeilen-Tools Qmk nicht immer geradlinig verläuft, kann man dennoch in den meisten Fällen die notwendigen Programme selbst nachinstallieren, zumindest unter Debian und dessen Derivaten wie Ubuntu und Pi OS. Das Klonen beziehungsweise Herunterladen von QMK braucht jedoch relativ viel Platz, und das Kompilieren kann auf schwachbrüstigen Geräten wie einem Pi Zero eine ganze Weile dauern. Ein Raspberry Pi 4 dagegen arbeitet den Vorgang in wenigen Minuten ab.
Insgesamt entpuppt sich das Erstellen einer Tastenbelegung mit QMK Configurator als sehr positive Erfahrung. Mit dem Build-Service von QMK gelingt das Kompilieren der Firmware zwar besonders leicht, aber es ist auch nicht viel aufwendiger, eine individuell angepasste Firmware selbst lokal zu bauen. (jlu)
Danksagung
Der Autor bedankt sich herzlich bei Frank Hofmann für seine Ideen, konstruktive Kritik und kreativen Beiträge zum Artikel.
Der Autor
Axel Beckert arbeitet als Linux-Systemadministrator und Spezialist für Netzwerksicherheit bei den Informatikdiensten der ETH Zürich. Er engagiert sich ehrenamtlich bei der Distribution Debian, in der LUG Switzerland (LUGS), bei der Radiosendung und dem Podcast Hackerfunk sowie diversen Open-Source-Projekten. Außerdem baut und sammelt er mechanische Tastaturen – bevorzugt aus Open-Hardware-Bausätzen und mit QMK – und betreibt die Webseite der schweizerischen Mechaniktastaturszene http://SwissMK.ch.
Glossar
- JSON
-
Javascript Object Notation. Ein kompaktes Datenformat in einfach lesbarer Textform für den Datenaustausch zwischen Anwendungen.
- 60-Prozent-Tastatur
-
Eine Tastatur mit ausschließlich dem alphanumerischen Hauptblock, also ohne Nummernblock, Funktions- und Pfeiltasten.
- Super
-
Die Modifikatortaste, auf der bei den meisten Tastaturen seit 1995 ein Windows-Logo prangt. Unix kannte diesen Modifikator schon, bevor es überhaupt PCs gab.
Infos
- Freie Tastaturen (Teil 1): Axel Beckert, “Tastenbausatz”, RPG 08/2021, S. 44, https://www.raspi-geek.de/46143
- QMK-Firmware: https://qmk.fm/
- OLKB Preonic: https://olkb.com/preonic
- Von QMK unterstützte Tastaturen: https://qmk.fm/keyboards/
- QMK Configurator: https://config.qmk.fm
- 28-Tasten-Keyboard Alpha: https://pyrool.github.io/Alpha/
- QMK-Quellcode: https://github.com/qmk/qmk_firmware/
- JSON: https://www.json.org
- Layer Switching in QMK: https://docs.qmk.fm/#/feature_layers?id=switching-and-toggling-layers
- QMK Toolbox: https://github.com/qmk/qmk_toolbox
- QMK Toolbox Github Issue #59 “Linux ever?”: https://github.com/qmk/qmk_toolbox/issues/59
- Keyboard Firmware Builder: https://kbfirmware.com
- Keyboard Firmware Builder (Quellcode): https://github.com/ruiqimao/qmkbuilder
- VIA: https://caniusevia.com
- Von VIA unterstützte Tastaturen: https://caniusevia.com/docs/supported_keyboards
- QMK-Kommandozeilen-Tool: https://github.com/qmk/qmk_cli
- QMK-Kommandozeilen-Tool (mit FPM gebaute Pakete): https://github.com/qmk/qmk_fpm
- Diskussion um FPM für Debian: https://bugs.debian.org/688896
- “Run QMK Setup” (im Tab Linux/WSL): https://docs.qmk.fm/#/newbs_getting_started?id=set-up-qmk#/newbs_getting_started?id=set-up-qmk#/newbs_getting_started?id=set-up-qmk
- QMK-Kommandozeilenbefehle: https://docs.qmk.fm/#/cli_commands





