Supported Hardwares

Leveraging the great Rust embedded ecosystem, RMK is able to support a wide range of hardware across different architectures, including Cortex-M, Xtensa, and RISC-V.

Below is a (non-exhaustive) list of the currently supported hardware. The keyboard.toml column shows whether the chip can be selected with [keyboard].chip (and so used with cloud compilation and rmkit); chips marked - are supported through the Rust API only.

HardwareArchitecturesConnectivityTested on HardwareExampleskeyboard.tomlNote
STM32Cortex-M0/3/4/7USB✅Partial (F1/F4/G4/H7)✅Supported on all models with USB peripheral
ESP32C3RISC-VBLE✅✅✅ESP32-C3 lacks full USB functionality
ESP32C6RISC-VBLE✅✅✅ESP32-C6 lacks full USB functionality
ESP32H2RISC-VBLE✅✅✅ESP32-H2 lacks full USB functionality
ESP32S3XtensaUSB + BLE✅✅✅
RP2040Cortex-M0+USB + BLE✅✅✅BLE is available on the Raspberry Pi Pico W
RP2350Cortex-M33/RISC-VUSB + BLE✅✅-BLE is available on the Raspberry Pi Pico 2 W
nRF54LM20Cortex-M33USB + BLE✅✅--
nRF54L15Cortex-M33BLE✅✅-No USB peripheral
nRF52840/33Cortex-M4FUSB + BLE✅✅✅-
nRF52832Cortex-M4FBLE✅✅✅-
nRF52820Cortex-M4USB + BLE---No SAADC, so no battery ADC; not tested
nRF52810/11Cortex-M4BLE-Partial (52810)✅not tested
PY32F07XCortex-M0+USB✅✅-Storage support is currently unavailable
SF32LB52Cortex-M33USB + BLE✅✅--

Adding Support for New Hardware

RMK can run on any hardware platform with Embassy support. To enable specific communication:

  • USB Support: Requires implementation of embassy-usb-driver traits.
  • BLE Support: Requires implementation of bt-hci traits.

Once your hardware has the corresponding trait implementations, RMK support will be available out of the box.