Skip to content

Flashing the Firmware

There are two ways to flash PolyKybd firmware. The recommended way is over HID directly from PolyKybdHost — no buttons, no bootloader drive. The UF2 bootloader drive method is kept as a recovery fallback.

Section titled “Recommended: flash over HID from PolyKybdHost”

PolyKybdHost includes a firmware updater (polyhost/device/hid_fw_up.py) that pushes a firmware image to the keyboard over the normal HID connection. No BOOT button is needed, and — importantly — it works even across protocol-version mismatches, so a keyboard running incompatible firmware can still be updated.

The deliverable for HID flashing is a raw .bin image (not the .uf2).

  1. Open PolyKybdHost (system-tray icon).
  2. Use the firmware update action — either the release-update flow (which fetches a published keyboard-firmware release) or Flash firmware .bin… to pick a local .bin.
  3. Confirm and let it transfer. Progress is shown as it streams the image to the keyboard.
  4. Apply the update when prompted — the keyboard reboots into the new firmware.

Use this if the keyboard can’t be reached over HID (e.g. a bad image left it unresponsive). It flashes the .uf2 build, not the .bin.

  1. Hold down the BOOT button on the PCB.
  2. While holding it, connect the USB-C cable to the half you’re flashing.
  3. Release the button.
  4. The keyboard mounts as a USB drive called RPI-RP2.

Download the latest .uf2 from the firmware repo releases (or build your own — see below) and copy it onto the RPI-RP2 drive. The drive unmounts automatically when flashing completes.

To build your own firmware image, see Firmware Development for the full toolchain setup and build commands. In short:

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

The build produces a .uf2 (for the bootloader drive). For HID flashing, convert the ELF to a raw .bin:

Terminal window
arm-none-eabi-objcopy -O binary .build/<target>.elf .build/<target>.bin

After the update applies and the keyboard reboots:

  1. Wait 1–2 seconds for the firmware to boot.
  2. All per-key displays should show characters.
  3. Press keys to confirm they respond, and check that both halves are active.