Skip to content

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

  1. Install the ARM toolchain. This is the compiler qmk setup installs on Debian/Ubuntu:

    Terminal window
    sudo apt-get install -y gcc-arm-none-eabi binutils-arm-none-eabi
  2. Install the QMK CLI (a venv avoids system-pip quirks) and point it at the fork:

    Terminal window
    pip install qmk
    export QMK_HOME=/path/to/qmk_firmware # or: qmk config user.qmk_home=<repo>
    pip install -r $QMK_HOME/requirements.txt
  3. 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
  4. Compile the variant you want:

    Terminal window
    qmk compile -kb polykybd/split72 -km default
    # or
    qmk compile -kb polykybd/split42 -km default

    The .uf2 lands in the repo root and .build/.

  5. Produce the .bin for 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
  6. Flash your build. Two paths:

    Flash the .bin through 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 --apply

    Or use the tray menu’s firmware-update entry. See the Command Line reference.

Next steps