If you've ever built a wireless split and ended up charging it every couple of days, it's almost never because "Bluetooth is power hungry" or "nRF52 is inefficient."
It's almost always the extras.
With the right hardware and firmware choices, even a small 110 mAh battery can keep a wireless keyboard running for a month or more on a single charge. This post walks through where your power actually goes and what to do about it, using real numbers instead of vibes.
We'll focus on ZMK-based builds on a nice!nano, but the principles apply broadly.
Where Your Battery Actually Goes
Here's the mental model. A wireless keyboard has a few categories of power draw:
- MCU + BLE radio (the nice!nano / nRF52840 itself)
- Addressable RGB LEDs (WS2812, SK6812, etc.)
- Displays (SSD1306 OLED vs. nice!view)
- Other peripherals (encoders, pointing devices)
Most people assume the radio is the expensive part. It isn't. Let's go through each.
MCU + BLE: surprisingly cheap
The nRF52840 at the heart of a nice!nano v2 is designed for ultra-low-power BLE. In deep sleep, the whole board draws around 20 µA. While actively connected and idle (no keypresses, just maintaining a BLE link), you're looking at roughly 100 µA or less.
What that means in practice on a 110 mAh cell:
A non-split keyboard (single board, single BLE connection to your computer) will last about a month on a single charge at normal daily use. The BLE peripheral role is that cheap.
A split keyboard is a different story. One half has to act as the central: it maintains the BLE connection to your host device and the connection to the other half. That more than doubles the radio duty cycle on that side. Real-world numbers on a 110 mAh battery with no RGB or OLED:
- Central half: ~1 week
- Peripheral half: ~1 month
That asymmetry surprises people, but it makes sense: the central side is doing twice the wireless work. Even so, a week per charge on a tiny 110 mAh cell is solid, and the point stands that the MCU and radio are not the problem in most builds.
Addressable RGB: a quiet battery killer
Addressable LEDs like WS2812 and SK6812 have a tiny microcontroller baked into each LED. That controller stays powered and draws current even when the LED color is set to black, i.e., "off."
The idle draw of a single WS2812-class LED in the off state is roughly ~0.5 mA per LED.
With that estimate: 20 "off" LEDs × ~0.5 mA = 10 mA of baseline draw, before you press a single key. Compare that to the ~0.1 mA the nice!nano itself needs to maintain a BLE connection. The LEDs, while doing nothing visible, are drawing 100× more current than the entire rest of the board.
On a 110 mAh battery, 10 mA of passive draw gets you roughly 10 hours. Not 10 days. Hours. Once the LEDs are turned on, those hours can shrink to minutes.
Put simply, RGB LEDs kill battery life on wireless builds. Even "off," a strip draws more current than the rest of the keyboard combined.
Displays: OLED vs. nice!view
Classic 128×32 or 128×64 SSD1306 OLEDs are heavier on power than people expect:
- While lit: 15–25 mA depending on brightness and how many pixels are on
- In deep sleep: ~20 µA
That deep sleep number looks small until you compare it to the nice!view. We designed the nice!view to solve the display power problem on wireless builds. It uses Sharp's Memory-in-Pixel technology, a reflective display that holds its image without constant refresh, similar in concept to e-paper but capable of updating at 30 Hz. Typical power draw while actively updating is around 10 µA.
An OLED in deep sleep, showing nothing still draws more power than a nice!view that's actively in use. And when the OLED is actually on, it's pulling 15–25 mA, which on a 110 mAh cell is enough to flatten your battery in under a day by itself.
The nice!view won't make your battery last forever on its own, but it makes the display a minor contributor to total power draw instead of the dominant one. It's a drop-in replacement for SSD1306-based displays in ZMK builds.
Other passive draws
A few more things that can nibble at your battery:
- Rotary encoders with constant pull-up resistors can leak hundreds of µA each, depending on the design.
- Pointing devices like a Cirque trackpad draw meaningful current while active and may not sleep as aggressively as you'd expect, so it's worth checking the datasheet and your firmware config if you're adding one.
- Any IC that forms a constant current path when powered.
These matter, but in most builds, RGB and OLEDs are the dominant offenders by a wide margin.
What to Do About It
Knowing where the power goes makes the design decisions pretty straightforward.
Skip always-powered RGB on wireless builds
If your goal is good battery life on a 110 mAh cell, addressable RGB is the single biggest thing to cut. Not because LEDs are bad (they're great on wired boards), but because the idle draw of a WS2812 strip is physically incompatible with multi-week runtime on a small cell.
If you absolutely want RGB on a wireless build, treat it as a mode, not a baseline. Use a small number of LEDs, put them behind a switched power rail so they're truly off when you don't need them, and keep them hard-off by default.
But be honest with yourself: if your goal is "charge it once a month," always-on RGB is mathematically at odds with that on 110 mAh.
Prefer nice!view over OLED, or skip the display
For a status display on a wireless build, nice!view at ~10 µA is essentially free compared to an OLED at 5–20 mA. If you want a display, use a nice!view. If you don't need a display, skip it entirely; that's the purest option.
OLEDs are excellent on wired boards. On battery, they're an expensive luxury.
Configure deep sleep
Make sure to turn on ZMK's deep sleep (CONFIG_ZMK_SLEEP=y). ZMK puts the board into deep sleep after an idle timeout (15 minutes by default), which is where you get that ~20 µA floor. You can make this more aggressive if you don't mind a slightly slower wake.
Use the ZMK Power Profiler
ZMK's Power Profiler lets you plug in your board, battery size, sleep percentage, and feature set (RGB, backlight, display) and get a ballpark runtime estimate. It's not a lab instrument, but it's great for quickly seeing the difference between "no RGB, no OLED" and "full RGB + OLED," and for sanity-checking whether your expectations match reality.
Add a physical power switch
A slider or rocker switch per half means your keyboard is actually off when you're not using it: no firmware sleep state, no residual draw, just zero. It's a cheap, simple addition and well worth it if you travel with your board or go days without using it.
How We Think About This at Typeractive
When people tell us it's a downside that our wireless kits don't include RGB, this is the trade-off we're thinking about. A single "off" WS2812 can rival the nice!nano's own power draw. A whole strip demolishes it. An OLED sitting "blanked" adds another 0.5 mA on top of that, roughly 5x what the radio needs.
Meanwhile, a clean build with a nice!nano v2, 110 mAh cell, nice!view or no display, and no RGB gives you a peripheral half that lasts over a month and a central half that goes about a week, with zero battery anxiety.
So our wireless kits are built around these principles: no RGB, nice!view displays, ZMK with proper sleep and power configuration out of the box. If you don't want to think about any of this, if you just want a wireless split that works and doesn't need constant charging, that's what we're selling.
But you don't have to buy anything from us to benefit from these ideas. If you're building your own Corne, Lily58, or custom split, follow the same principles and you'll end up with a keyboard that lasts weeks instead of days.
TL;DR
- The nRF52840 + BLE radio is cheap: ~100 µA or less in a non-split config. The MCU is not the problem.
- Addressable RGB "off" draws 0.5 mA per LED. A 30-LED strip pulls 300× more than the radio. On 110 mAh, that's hours of runtime, not weeks.
- SSD1306 OLEDs draw 15–25 mA lit, ~20 µA in deep sleep. nice!view draws ~10 µA while actively updating. A sleeping OLED still uses more than a running nice!view.
- Split keyboards have asymmetric battery life: the central half works harder and drains faster (~1 week on 110 mAh vs. ~1 month+ for the peripheral half).
- Power-gate your peripherals, configure deep sleep, skip the always-on extras, and a 110 mAh cell is all you need for weeks of real use.