Build & Flash from Source
This HowTo builds the PolyKybd firmware from source and flashes your own image. If you just want to install an official release, see Flash the Firmware instead — you don’t need a toolchain for that.
The firmware is a customised QMK build on the qmk_firmware fork
(branch PolyKybd); the PolyKybd sources live under keyboards/polykybd/. Two variants share one
codebase — split72 and split42 (see Keyboard Variants).
Steps
-
Install the ARM toolchain. This is the compiler
qmk setupinstalls on Debian/Ubuntu:Terminal window sudo apt-get install -y gcc-arm-none-eabi binutils-arm-none-eabi -
Install the QMK CLI (a venv avoids system-pip quirks) and point it at the fork:
Terminal window pip install qmkexport QMK_HOME=/path/to/qmk_firmware # or: qmk config user.qmk_home=<repo>pip install -r $QMK_HOME/requirements.txt -
Fetch the submodules. A fresh clone has empty submodules; the minimum for a build is ChibiOS, ChibiOS-Contrib, pico-sdk, printf and lufa:
Terminal window make git-submodule -
Compile the variant you want:
Terminal window qmk compile -kb polykybd/split72 -km default# orqmk compile -kb polykybd/split42 -km defaultThe
.uf2lands in the repo root and.build/. -
Produce the
.binfor HID flashing. PolyKybdHost’s firmware updater takes the raw RP2040 image, not the.uf2:Terminal window arm-none-eabi-objcopy -O binary .build/polykybd_split72_default.elf split72.bin -
Flash your build. Two paths:
Flash the
.binthrough PolyKybdHost without touching the bootloader — the keyboard keeps running, both halves update, and it survives a protocol mismatch:Terminal window polyctl fw flash split72.bin --applyOr use the tray menu’s firmware-update entry. See the Command Line reference.
For recovery, copy the
.uf2to the RP2040 mass-storage drive after entering the bootloader (BOOTSEL). This is the manual fallback — see Flash the Firmware.
Next steps
- Firmware Development — repository layout and the development environment.
- Test Rig & CI — how builds are verified on real hardware.
- Contributing — opening a pull request.