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.
| Capability | Detail | Status |
|---|---|---|
| Pairing & bonding | Fresh pair plus persistent bonding held in DataFlash | Validated |
| HID report uplink | Keyboard-side HID reports delivered over the 2.4 GHz link | Validated |
| Connected-mode hopping | Channel hopping with a bipolar link-lock servo | Validated |
| Reset recovery | 999/1000 over a randomized warm-reset soak, ~2.3 s reconnect | Validated |
| BLE HID and OTA | Bluetooth LE as a second transport alongside 2.4 GHz | Planned |
| Deep sleep & battery reporting | Power-down states and real battery telemetry | Planned |
Repository layout
firmware/Firmware source and related software artifacts.hardware/Hardware design files and documentation.tools/Development and support tooling.third_party/Vendored upstream dependencies.
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.