Projects / OpenController

OpenController

An open-source wireless keyboard controller — the keyboard-side half of the 2.4 GHz link, built to pair with OpenDongle.

2.4 GHz uplink

The keyboard half of the wireless link — pairing, connected-mode hopping, and HID uplink — bench-validated against OpenDongle.

Wireless for QMK

A companion module that adds 2.4 GHz wireless to a QMK keyboard, driven by the host MCU over a UART command protocol.

A/B updates

Runs under the OpenBoot A/B bootloader, so updates travel over the module’s own UART and always keep a revert path.

Fully open

Firmware and tools under Apache 2.0; hardware under the CERN Open Hardware Licence (Weakly Reciprocal).

What is OpenController?

OpenController is a wireless co-processor for keyboards. A WCH CH592F module (QingKe RISC-V4F) sits next to the keyboard’s existing host MCU and speaks a binary command and status protocol over UART, so the host stays in charge of the matrix and the keymap while the module owns the radio. It implements the keyboard side of the same 2.4 GHz link OpenDongle receives: pairing, connected-mode channel hopping, HID report uplink, and persistent bonding stored in DataFlash.

The first firmware target is the CH592F, and the 2.4 GHz connected-mode HID link has been bench-validated end to end — against both OpenDongle and a stock production receiver — covering a fresh pair, bonded reconnect, HID delivery, and reset recovery.

Boot chain

The application runs under the OpenBoot A/B bootloader. OpenBoot owns the bottom of flash, the application links at one of two slot bases, and updates travel over the module’s own UART — so a keyboard can be updated in place without a debug probe, and a bad image can be reverted to the other slot.

Building requires a MounRiver/WCH fork of GCC rather than mainline RISC-V GCC: the closed-source CH59x BLE library is compiled against WCH’s fast-interrupt semantics, and with mainline GCC the image links but silently receives no interrupts. Full toolchain, build, and flashing instructions live in the firmware README.

Status

The 2.4 GHz HID path is validated on the bench today. Bluetooth LE, deep sleep, and battery telemetry are follow-up work.

CapabilityDetailStatus
Pairing & bondingFresh pair plus persistent bonding held in DataFlashValidated
HID report uplinkKeyboard-side HID reports delivered over the 2.4 GHz linkValidated
Connected-mode hoppingChannel hopping with a bipolar link-lock servoValidated
Reset recovery999/1000 over a randomized warm-reset soak, ~2.3 s reconnectValidated
BLE HID and OTABluetooth LE as a second transport alongside 2.4 GHzPlanned
Deep sleep & battery reportingPower-down states and real battery telemetryPlanned

Repository layout

Licensing

Like the rest of OpenKeyboard, OpenController is split-licensed so both the software and the hardware are genuinely open. Firmware and tools are released under the Apache License 2.0, and the hardware designs under the CERN Open Hardware Licence Version 2 — Weakly Reciprocal. The vendored WCH SDK subset and BLE library are third-party code under their own terms — see the NOTICE file in the repository.