Skip to content

Releases: thementalcoding/keychron-pro-firmware

v1.0.0 — all 26 CKBT51 models (build 2026-10-26c)

Choose a tag to compare

@thementalcoding thementalcoding released this 26 Oct 15:56

v1.0.0 — all 26 CKBT51 models (build 2026-10-26c)

Community QMK firmware for the Keychron Pro wireless range (STM32L432 + CKBT51
Bluetooth module), based on Keychron wls_2025q1 @ c8b2b23.

Firmware para toda la gama Keychron Pro inalámbrica (26 modelos, 95 imágenes).


⚠️ Read first / Léelo primero

  • Unofficial community build; not affiliated with Keychron. / Build no oficial,
    sin relación con Keychron.
  • Hardware-tested on one unit only: a Keychron K13 Pro ISO RGB
    (3434:02d1). The other 94 images compile and pass automated checks
    (DFU suffix, VID/PID, CRC, size, manifest, checksums) but have never been
    flashed on a device
    . / Probado en hardware solo en una unidad: un
    Keychron K13 Pro ISO RGB. Las otras 94 imágenes compilan y pasan las
    verificaciones automáticas, pero no se han flasheado.
  • The original symptom (bursts of repeated keystrokes) is not yet confirmed
    fixed long-term
    ; the tested unit improved from 7 ms to 5 ms minimum report gap
    (~143 → ~200 reports/s) with no episodes so far. / El síntoma original aún no
    está confirmado como resuelto a largo plazo.
  • Only the STM32 MCU is modified; the CKBT51 module firmware is closed. / Solo se
    modifica el MCU STM32; el firmware del módulo CKBT51 es cerrado.
  • Back up your keymap before flashing. / Haz copia de seguridad de tu keymap antes
    de flashear.
  • Recovery is always possible: the STM32 ROM bootloader cannot be overwritten. /
    La recuperación siempre es posible: el bootloader ROM no se puede sobrescribir.

Contents / Contenido

  • 26 models (K1–K17 Pro, Q1–Q14 Pro), 95 variants, one folder per model.
    Each ZIP contains firmware/<model>/ with its binaries and README.
  • manifest.json — path, size, SHA-256, PID, keymap and tested flag per image.
  • SHA256SUMS — verify with sha256sum -c SHA256SUMS from the repository root.
  • _via images keep VIA / Keychron Engine support; _default images do not.

Packages / Paquetes

  • Per-model ZIP (keychron-<model>-v1.0.0.zip): standalone. Extract anywhere;
    it contains firmware/<model>/ (binaries + README) and a model-only
    SHA256SUMS that verifies with sha256sum -c SHA256SUMS inside the extracted
    folder. Model READMEs link to the online docs with absolute URLs, so nothing
    breaks outside the repository.
  • Full-tree ZIP (keychron-pro-firmware-v1.0.0-full.zip): complete repository
    snapshot (docs, patches, tools, all 95 images) for offline browsing and global
    checksum verification.

Fixes / Arreglos

  • report_rate 90 → 133 Hz and reconnect_timeout 5 → 60 s on all 26
    CKBT51 boards, applied on the first Bluetooth init (the 1 s / 5 s uptime
    windows are gone).
  • Bounded UART frame parser; chunked DFU TX; report-queue flush on reconnect;
    FIFO-full retry backoff; low-power gate (no STOP1 with pending work); connect
    rate limit; opt-in CKBT51_FAST_WAKE (off by default).
  • q6_pro: removed an accidental ckbt51_factory_reset() bound to Fn+F3 that
    wiped the Bluetooth pairing and module parameters.
  • q1_pro: the Bluetooth device name is published without surrounding quotes.

Install / Instalación

  1. Identify your PID: lsusb | grep 3434, match it in the model README.
  2. Enter DFU: power Off → hold Esc → switch to Cable
    (0483:df11 appears).
  3. Flash:
    sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D \
      firmware/<model>/<variant>/<file>.bin
    Windows: QMK Toolbox (STM32 DFU). macOS: brew install dfu-util.
  4. Restore your keymap and report the result.

Recovery / Recuperación: docs/RECOVERY.md
· docs/RECOVERY.es.md

Verify / Verificar

sha256sum -c SHA256SUMS
python3 tools/verify_bins.py
python3 tools/verify_manifest.py

Built with arm-none-eabi-gcc 14.2 and QMK CLI from the 4-commit series on
k13-pro-bt-fixes. Same version = same bytes.