Skip to content


joric edited this page Jun 27, 2022 · 615 revisions

There are a lot of preassembled boards, I mostly list single MCU nRF52840-based ones, they support both USB and Bluetooth. This article also covers other possible approaches including RF adapters and USB to BT converters.

Pro Micro Compatible


A board that started it all. Runs QMK firmware (open source nrf52 branch). Pro-Micro compatible. Uses Lairdtech BL654 module, assembled board sells for about $36. Schematic is open, but no PCB gerbers available for this board. Very hard to assemble at home, the module has a lot of small underside pins. A single 32Mhz 4-pin oscillator on the module, no external XTAL.

Currently ships with midmount USB-C and a preinstalled bootloader (BLE-Micro-Pro Default Firmware, see QMK#BMPAPI) that allows editing keyboard layouts and keyboard options as easy as editing text files on the internal USB drive.


Pro-Micro compatible. Uses midmount USB-C connector. Has nRF52840 soldered on board. Built in Li-Po charger (MCP73831-based). Has 3+ extra GPIO pins. Has external XTAL. Runs QMK firmware. Closed source hardware (based on the reference nRF52840 QIAA layout with the PCB antenna). The board height is about 3.2 mm (0.55mm thinner than Pro Micro).

Build log:

  • 2020-04-12, I just ordered v0.2 with a fixed power system from my PCB maker. I expect to get them in a month... Maybe. I'm currently using two of these to type on a split Lily58 Pro wirelessly-sort of. The firmware I'm using is a modified version of QMK that has a lot of shortfalls. If v0.2 turns out good, and I have a base level firmware working, I will start a group buy.
  • 2020-04-23, Nice!nano 0.2 is finished (features external 3.3V AP2112 LDO).
  • 2020-04-25, Nice!nano 1.0 design exposes 21 pins via thru hole and 2 extra pad pins on the back for a total of 23 pins (changed the pin layout of 009, 010, 106, and 104).
  • 2020-05-29, the final, more public IC posted to r/mk and r/mm.
  • 2020-06-20, GB started and finished. 1000 boards sold in about 2 hours.

Revision 1.0:

  • Schottky diode: PMEG4010ESBYL in DSN1006-2 package (up to 1A)
  • Charger: LN2054Y42AMR (code 2YL6, up to 500 mA charging current)
  • Regulator: AP2112K (code G3P, up to 600 mA, leaks 55uA), you can replace it with XC6220 (up to 1A, leaks 8uA)
  • P-MOSFET: DMP2088LCP3-7 in X2-DSN1006-3 package

Revision 2.0:


2021-07-19: Actually, it's bq24075. See new schematic



Forked from nRFMicro design by jpconstantineau (formerly nrfMicro v2). Adds a separate battery measuring circuit. Same set of pins. Same voltage regulator (no high voltage mode). Has 32kHz crystal on board. Non-reversible.

I took Joric's first design of the nrfMicro and made my own adjustments to include the features of the BlueMicro. I used 0402 components and a super tiny mosfet. It includes an on-board LiPo charger. This is a simple two-sided board. My next iteration for this board will replace the mosfet by a slightly larger one and all 0603 components and will probably use a 4 layer board.

I tested it with Adafruit's Arduino library and bootloader and it works. Flashing to it once a program has been uploaded it tricky and best done by re-flashing the bootloader.

  • Voltage regulator: AP2112K-3.3V (SOT-23-5)
  • Power source selector mosfet: LP0404N3T5G (SOT-883)
  • Power source selector diode: B140WS-7 (SOD-323)
  • Battery management IC: TP4054ST (SOT-23-5)
  • Battery voltage divider: 800K/2M (0402)

Video about assembling those boards:

Recent video about wireless Corne using those boards:

Also check out recent videos:

There are also old Bluemicros that do NOT support wired connection (uses nRF52832-based E73-2G4M04S1B module, so no hardware USB on the board), but have Li-Po charger on board (USB is used only for charging). Runs its own firmware but it's possible to run full QMK (nrf52 branch) on it, see jian_bm. The board is much longer than a regular Pro Micro so it's not really suited for the small keyboards such as Corne and Jian (Iris is fine). No indicator LEDs.

There also new BlueNano boards in the repository but they still don't support USB connectivity (nRF52832-based).


Announced 20 Dec 2020 by Longer than Pro Micro (extra 2 rows of pins at the bottom) so it might not fit Corne. Uses mid-mount USB-C connector. Has battery gauge (probably LC709203 because it's the only one I found supported by CircuitPython). Has 2Mb SPI flash on board. Has regulated 3V with power switch on VCC pin and unregulated 5V/4.2V output on a RAW (?) pin. Not sure what does SW pin do.


Mikoto is a new ready to manufacture open-source PCBA alternative to nice!nano.

You can't really buy Mikoto at the moment, only assemble by hand. There are no production/placement files in the latest revision.

It's a 4-layer 1.6mm board with ENIG plating (JLCPCB has a bunch of weird restrictions - no 0.8mm for 4L, and no ENIG for 2L 0.8mm) following reference config 4 with the high voltage mode. All elements are 0402 or bigger (though JLCPCB has a bunch of 0201 elements now). Costed about $80 for 2 pcs. The name is みこと in Hiragana, (Mikoto, it's a character from Railgun).

Midmount connector was soldered at home because JLCPCB didn't have those connectors (now they do, search for C168688 or C168689 for 1.6 and 1.0 mm accordingly).

Upd: It's open source now: looks like antenna is okay.

More pictures: front, back, panel.


The panel looks like this:


Upd. version 5.1 uses nicenano 2.0 schematic. This one is assembled at home (issues with pin 1.11, discord):


It still uses 0402 components, there are no 0201 parts, which is good. It's still 4-layer which is bad.

Upd. 2021-08-18 figures 1.11 was missing because of that (fixed now):


Sadly 5.x stopped provide production files for JLCPCB so you can revert to 4.7, or (better) add BOM to 5.x.


It uses the same battery management IC as nicenano 2.0, bq24075 (JLCPCB has it in the extended parts, it costs about $1/pcs):

Mikoto soldering video:

There’s no official ZMK support, and the charger is software controlled. Won’t charge if you don’t pull down at least one of the control lines.

Atlas Micro BLE

What is it?
Pro Micro pin compatible Bluetooth Low Energy(BLE) module
Can be used as a drop-in replacement for Pro Micro in custom keyboards.
This module is pin compatible with Nice!Nano, so it is compatible with ZMK/Bluemicro firmware.
Why did you make it?
I wanted to have a Pro Micro compatible BLE module that complies with FCC regulations.
What makes it special?
Uses FCC certified and Nordic semiconductor certified module partner's module.

I have to note though, that contrary to a popular belief, putting FCC certified module on the board doesn't make the whole product FCC certified.


Partially Pro-Micro Compatible

BlueDuino Rev2

Looks like Pro Micro, slightly larger but fits Corne, except TX/RX pins used for TRRS and LEDs are occupied by the ILT254 BLE module. Does not have HID capabilities per se but probably can be flashed with CC254x HID firmware to be fully compatible with the current QMK codebase (atmega32u4 + HID via AT commands, though it wasn't tested). Does not have Li-Po charger on board. Virtually impossible to buy now.

Micro with 2.4G

No specs and not QMK firmware tested. Looks like a regular Pro Micro with 2.4G NRF24L01 (non-bluetooth) radio on board. The board is also way too long to fit on Corne. I'm not 100% sure about schematic but looks like 24L01 is hooked to pins 7 and 8 (pin 7 is used as ROW3 on Corne), those pins are used for 24L01 very often as so:

#include <RF24.h>
RF24 radio(7, 8); // CE, CSN

It's also uses global 3.3V power and apparently overclocked at 16 MHz because NRF24L01 wants 3.3V and there's only one LDO on the board. From its Aliexpress customer reviews: The ATmega32U4 runs at 3.3V and 16MHz - that is like an overclocked 3V/8MHz pro micro, but its working perfectly fine so far.

Non Pro Micro Compatible

Seeeduino XIAO

There are 3 versions: Wired, BLE, BLE Sense.

Seeduino XIAO BLE (Sense)

nRF52840-based with onboard Li-Po charger. 11 GPIO pins plus 2 NFC pins on the back side, so 13 GPIO pins total. 11 pins give us 6x5 = 30 key matrix, should be enough for a split keyboard (maybe we can have OLED screen hooked up on NFC pins).

  • Onboard PDM microphone MSM261D3526H1CPM (only in XIAO BLE Sense)
  • Onboard 6-axis Gyroscope LSM6DS3TR-C IMU (only in XIAO BLE Sense)
  • Powerful wireless capabilities: Bluetooth 5.0 with onboard antenna
  • Powerful CPU: Nordic nRF52840, ARM® Cortex®-M4 32-bit processor with FPU, 64 MHz
  • Ultra-Low Power: Standby power consumption is less than 5 uA
  • Battery charging chip: Supports lithium battery charge and discharge management
  • Onboard 2 MB flash
  • Ultra Small Size: 20 x 17.5mm, XIAO series classic form-factor for wearable devices
  • Rich interfaces: 1xUART, 1xI2C, 1xSPI, 1xNFC, 1xSWD, 11xGPIO(PWM), 6xADC
  • Single-sided components, surface mounting design

Schematic is open:

  • MCU: nRF52840 (BLE) or ATSAMD21G18A-MU (wired)
  • Battery charger: BQ25100, uses battery divider 1M/510K (pins 0.31/AIN7, 0.14/pulldown)
  • Red charging LED (pin 0.16), common anode RGB LED (pins 0.26, 0.30, 0.06)
  • Switchable power source, uses P-MOS (1x0.35mm) and Schottky diode.
  • Low leak 3.3V regulator (XC6206P332MR)
  • QSPI flash (2MB)

You can buy it here:

Seeduino XIAO (Wired)

Miniature Pro Micro clone with USB-C connector. Non-wireless Used in Zaphod Lite keyboard along with a GPIO expander (there are just too few GPIO pins for a keyboard). See

  • Powerful CPU: ARM® Cortex®-M0+ 32bit 48MHz microcontroller(SAMD21G18) with 256KB Flash,32KB SRAM.
  • Flexible compatibility: Compatible with Arduino IDE.
  • Easy project operation: Breadboard-friendly.
  • Small size: As small as a thumb(20x17.5mm) for wearable devices and small projects.
  • Multiple development interfaces: 11 digital/analog pins, 10 PWM Pins, 1 DAC output, 1 SWD Bonding pad interface, 1 I2C interface, 1 UART interface, 1 SPI interface.


Adafruit ItsyBitsy nRF52840 Express

Sells for $17.95. Uses MDBT50Q module. The pinout is NOT Pro Micro compatible. Does NOT have Li-Po charger on board (needs a Li-Po charger backpack which is sold separately for $4.95). The board size is 36x18mm, 3mm longer than Pro Micro (14 pins in a row instead of 12-13) and a little bit taller (SMD components on both sides). Has 6 power pins, 21 digital GPIO pins (6 of which can be analog in). Uses MicroUSB connector. Confirmed to work with QMK (nRF52 branch).

Adafruit Feather nRF52840 Express

NOT Pro-Micro compatible. Uses MDBT50Q module. Schematic and PCB are open source. Sells for $24.95. Not QMK firmware tested. Xenon

NOT Pro-Micro compatible. Open source, nRF52840-based, assembled board sells for about $15. No module is used, nRF52840 soldered on board. Meets the Adafruit Feather specification in dimensions and pinout. Not QMK firmware tested.

Arduino Nano 33 BLE

NOT Pro-Micro compatible (rather, Nano-compatible), does NOT have a Li-Po charger on board. Sells for $19 on Uses NINA B306 module (nRF52840-based). It's much longer than Pro Micro and power pins are on the other edge of the board from the MicroUSB connector, also power pins are a little bit scrambled, note RST, GND and VCC locations. Not QMK firmware tested.


CC-2540 and Atmega32u4-based Nano-sized board. Probably eligible for QMK if you flash CC2540 with RN-42 like HID firmware.

side pins
image image

nRF52840 Dongle

Original nRF52840-based USB donlge from Nordic. Does NOT have a Li-Po charger on board. USB-A PCB connector. Schematic is open. 2-layer PCB with a PCB antenna. Sells for about $18. You can use it as nRF52840 module replacement or as an USB dongle, you decide. Should work with QMK/ZMK though I didn't really check that.


nRF52840 Micro Dev Kit USB Dongle

Reduced size, unoriginal nRF52840-based USB Dongle. Does NOT have a Li-Po charger on board. USB-A PCB connector. About the same as Nordic dongle but uses a small chip antenna.




Used in nRFMicro, nRF52840-based, 13x18mm (13mm is a borderline for Pro Micro), sells for $5-$7 (sometimes can be found for $3.50 and $3.20 even). 30 free GPIOs including XL1/XL2.

E73-2G4M08S1C Pinout


E73-2G4M08S1CX schematic (with the IPEX antenna) is IDENTICAL. Does not need an extra XTAL or anything.



nRF52833-based (half the Flash, so no Python). Lacks pin 1.11 so it's not 100% compatible. Also no DCCH so no HV mode.

Raytac MDBT50Q

Used in Adafruit Feather nRF52840 Express, nRF52840-based, 10.5x15.5mm, sells for $8.89

Lairdtech BL654

Used in BLE-Micro-Pro, nRF52840-based, 10x15mm, sells for $15.97. There also BL651 modules without SMA socket.

Holyot YJ-18010

nRF52840-based, 18x13.5x1.6mm, sells for $10.11 ($5 on alibaba). Very interesting module! Has xtal on board. Theoretically fits Pro-Micro with a little bit of filing. Not too many underside pins. Used in Corne-ish Zen.

Note that Holyot already has the DC-DC inductivity soldered in so you don't need 3V LDO to run MCU from internal DC-DC. If you want to run off a raw module, don't buy E73, buy Holyot.



nRF52840-based, 13.7x14.7mm, sells for $8.53 ($6 in bulks)

Please note that there is NO USB on this SKYLAB SKB501 module, and no USB pins in the pinout albeit it's nRF52840, so I would very much NOT recommend it for anything.

Mind that anything that's wider than about 14mm won't fit on a Pro Micro footprint. This one ought to be 13.7x17.4mm and it fits just fine, and it's about the cheapest on Aliexpress ($8.53 total) but there's NO USB.


nRF52840-based, either 10.0 x 11.6 mm for B3x1 10.0 x 15.0 mm for B3x2 (either way, it's not larger than 10 mm on the narrower side). Lots of underside pins. Used in Arduino Nano-33 BLE.


nRF52840-based, costs $3-$4. Too large for the Pro Micro footprint (17.4mm wide, need 13mm).


nRF52822-based (BT 5.2 SoC, same as nRF52840 but half the ram, half the flash and with BT 5.1 direction finding). Seems too large for the Pro Micro footprint (685 mil = 17.3 mm, need 13mm).


There are also MS88SF3 modules, they are smaller but but they're impossible to solder with an iron.


nRF52822-based, no shielding. Too large for the Pro Micro footprint (size 24.3 x 17.5 x 1.8mm with Antenna, width 17.5mm, need 13mm).

Comparison table

A brief comparison of nRF52840 modules from Alibaba sorted by the width of their smallest module with antenna and certs (smw), ssmw is the same but with side pins (taken from here).

company volume_usd volume_count ratings rating response_rate smw ssmw
Holyiot 5000 34 7 5 95.2 13.5 13.5
Skylab 270000 74 0 0 90 13.7 13.7
Minew 110000 172 48 4.8 93.9 17 17
Thingo 50000 89 21 5 86.9 12 12
Feasycom 120000 74 0 0 90 10 10
Ebyte 410000 247 40 4.8 94.4 13 13
RF-star 4000 35 4 5 100 15 15
Dingcheng 50000 96 39 4.9 96.5 13 13
Raytac - - - - - 10.5 -
ShenzhenWireless-Tag 3000 9 2 5 96.2 18.4 18.4

Non-wireless commercial boards

This section is for reference

Pro Micro

Non-wireless, single-sided, Atmega32u4 based. Uses Micro USB connector. Usually cheap replicas of the original Sparkfun Pro Micro. MicroUSB connector is surface mounted and prone to breaking off.

Black ones have tougher connector, you can buy them here:

Pro Micro with USB-C

Recent board, mass produced, fully compatible with black Pro Micros but with top-mount USB-C (makes it ~ 1 mm taller than MicroUSB versions, about 1.6+3.2=4.8 mm overall, connector takes 3.2 mm so you can't use it with the Japanese 2.5mm con-through headers). Only comes in blue color up to date. The board is also ~ 2 mm longer to account for the USB-C connector.

Pro Micro with USB-C

Note that Purple Pro Micros with USB-C (Blue probably too) are incompatible with Japanese Con-Through (spring) pins, see Sockets#spring-pin-headers.


Non-wireless, Atmega32u4 based. V4 version introduces midmount connector to make board thinner.



Non-wireless, STM32-based. Official QMK hardware (split keyboard support has been recently pushed to upstream)


Custom, closed source (apparently) Pro Micro with USB-C board branded by Sells for 16.40 EUR a piece. Very few mentions. Puchi means "small" in Japanese (プチ). It also supports the spring header.


Nicell announced Nuvoton m4521-based board (@a_p_u_r_o from Japanese discord was the one who discovered those Nuvoton MCU's) that has a few SMD components and it's cheap to produce. It is NOT wireless. The board is intended to be opensource.

  • ARM® Cortex®-M4 with DSP and FPU
  • Max frequency of 72 MHz
  • 128 KB of Flash Memory
  • 32 KB of SRAM
  • 2-bit ADC ( up to 16 channels )
  • 16-bit PWM ( up to 12 channels )
  • 4 sets of 32-bit timers
  • RTC
  • USB 2.0 FS Host/Device
  • USB 2.0 FS Crystal-less at Device mode
  • Up to 4 UART s
  • Up to 2 SPI s ( 1x SPI + 1xQ SPI )
  • Up to 2 I²C s ( up to 1 MHz )
  • Smart card interfaces
  • 22.1184 MHz internal RC oscillator
  • 10 kHz internal RC oscillator

2020-11-12 Disclaimer: I have no clue if this works. It's called an m4521 from Nuvoton. Not a lot of software support, but I'm hoping to at least get Zephyr support for it. They're extremely cheap to produce. Let me see how much it's cost me to produce 5... One sec. $6 a piece including shipping/fees from 3 different vendors. Not bad.

You could also try STM32F030F4P6, CKS32F030F4P6, CS32F103RBT6 and related MCUs, they cost about $0.4 a pcs.

Non-wireless open-source boards


Non-wireless, Atmega32u4-based, uses midmount USB-C connector.

Front Back


Non-wireless, Atmega32u4 based. Also known as AoMicro but in blue (Ao in Japanese).


Non-wireless, Atmega32u4 based. Forked from ShirtMicro by Ariamelon. Features USB-C and extra pins.



Non-wireless, Atmega32u4 based. Heavily-modified Goldfish Rev. C. by Ariamelon.





Not a board, but rather an STM32 microcontroller with BLE/ZigBee/Thread/802.15.4 support.

Two cores: Cortex-M4 (64 Mhz) and Cortex-M0+ (radio, 32 Mhz), USB, 1M Flash, 256Kb RAM.

Not widely available but have a higher chance to be merged into QMK (better licence than Nordic). Not QMK firmware tested. (Upd. Nope, not gonna happen, firmware blob license appears to be even funkier than Nordic's).

SparkFun Artemis Module

An interesting module by SparkFun (NOT nRF52840-based, just Cortex-M4F with BLE 5.0). No hardware USB so it kind of sucks a little bit. All breakout boards are UART/CH340-only.

We did it, everyone! SparkFun’s Artemis Module has earned approval from the Federal Communications Commission (FCC) and Industry Canada (IC), making it the first open-source, US-manufactured, FCC/IC-certified BLE module on the market.

Bluetooth Adapters

UART Bluetooth HID Adapters

UART means you can control them from QMK as daughter modules to the wired controller. They understand a set of modem-like commands sent via the standard terminal (you just need a couple of free GPIO pins), handle Bluetooth pairing and send key codes via the Bluetooth HID protocol.

QMK-compatible modules

RN42 HID Module

HM-10 HID Module

nRF51822 HID Module

Adafruit Bluefruit LE UART

It's probably also possible to use Adafruit Bluefruit LE UART Friend HID firmare for nRF51822:


HHKB Pro 2 Wireless Mod


Not a hardware but rather nRF51822 firmware that supports both Bluetooth host and RF (Gazell) protocol and can switch between them. Originally written for Mitosis, hence the name. Not QMK-compatible. Left half is RF, right half is BT+RF. True wireless, supports custom RF receiver as well. Does NOT support 24l01+ (Gazell only).


USB-to-BT Bluetooth Adapters

The USB host-based adapters are the last resort if you don't have access to the controller or do not want to open the keyboard. You could do much better with UART Bluetooth HID modules, as they don't use USB, they don't need 3.3V to 5V boost converter and much more battery friendly. USB Bluetooth adapters are easier to use but the battery life is not good. You need either MAX3421e or PIC32 or STM32F105 for the USB host. Note some keyboards can work from 3V some won't even start (e.g. CM Novatouch needs 5V) so those adapters use 3.7V-5V DC-DC voltage booster for all the keyboards.


Handheld SCI



There's also a new version (BT-500):

Taobao Adapter

Looks like there's no separate USB host (MAX3421E) on the PCB so that QFN controller could actually be STM32F105 (USB host and client) and the module on the rear side definitely looks like a CC2541 clone (I have a similar one).

There's also a funny thing, wake up touch module ($3) Looks like people use it with the module above. According to the description you don't even need a physical button it's rather a proximity sensor (probably TTP223B based).





This one is pretty cheap, recommended for starters. It uses $2 HC-06 module flashed into RN-42, $2 Arduino Mini and an $5 USB host Arduino shield.

Note you absolutely need an USB-host capable microcontroller such as MAX3421E, Atmega32u4 is USB-client only and can't work as a host.


USB Host Shield in question (costed about $5):


You can also make wired USB to QMK converter out of it:

Also see the infamous GH60 thread:

Logitech Unifying Receiver

A guy named _spindle managed to reflash unifying reciever with a tmk-like firmware. You can't reverse-engineer Logitech firmware but you can just overwrite it if you need a compact receiver. He also used a couple of 328p and 24l01+ for the halves (you need 328p as a GPIO extender and a host for 24l01+). The Unifying Receiver uses nRF24LU1+ (single chip solution for compact USB dongles, 8051-based CPU with 16/32 kB FLASH, 512b RAM, he was able to flash his own TMK fork on it).



There also were attempts such as Unigo66 They used two unified receivers plugged in Hasu usb2usb adapter for the receiver part and two brand new Logitech k230 (cheapest keyboards they could find, about $25 each) broken and looted for the transmitter part. It didn't go well, there were a lot of complaints about bad reception and signal interference. They didn't modify the radio part, they just used MAX3421e USB host and Atmega32U4 with TMK on it to transcode HID USB traffic from two Logitech k230 controllers.


Ergonomics is also questionnable:


Video (This wireless split is wireless junk):

Unigo66 MCU and components (I guess this nRF24LE1 was desoldered from k320 unless they managed to save a dump):


Since Unigo66 was made/sold in 2018/2019 before those articles came out I tend to believe they resoldered the chips.

Unified Firmware

There's also a true reverse-engineered firmware that works with real unified receivers (New!)