beechbit.dev
SYS · ONLINE

← back

Jul 15, 2026hobby

Field Notes: Building the Sputnik

Handwiring a wireless split keyboard from Vostok Labs, dual nice!nano, ZMK firmware, one dead key, one fix.

keyboardshardwarezmk
Field Notes: Building the Sputnik

A wireless split keyboard, handwired, THOCK sound.

Why this build

I finished a small handwired macropad and wanted to build something more substantial. After looking around a lot I found this project. The Sputnik from Vostok Labs is a 42-key Corne-style split, designed specifically for sound: a felt-damped sandwich case and thick printed keycaps to get that deep THOCK. Files are open (MakerWorld + GitHub), with a wiring guide, a BOM, and prebuilt firmware for the reference wiring, which meant I could get it running before writing a single line of my own config.

The parts

  • 2x nice!nano clone (nRF52840 v2), one per half
  • ~42x 1N4148 diodes for the matrix
  • 22 AWG solid-core wire
  • MX switches from my spares bin
  • 2x battery, one per half
  • M2 heat-set inserts and screws
  • Thick 3D-printed keycaps, done on the P1S

The firmware reality check

This is a ZMK build, not KMK. Wireless splits on nRF52840 run ZMK, configured through devicetree and Kconfig files, built via GitHub Actions.

How it works: Push a keymap config to a repo, GitHub Actions compiles the UF2. And ZMK Studio covers keymap changes without touching code at all, so tweaking should be possible without re-flashing.

Build log

Handwiring both halves went cleanly, following the guide's diagram. The diode orientation is the thing to double and triple check before soldering anything permanent, a wrong diode is a much bigger pain to fix than a wrong wire.

Underside of one half showing the handwired switch matrix — 1N4148 diodes bridging each switch, red and green solid-core wire running the rows and columns back to the nice!nano, with the battery seated top-left.
One half mid-build: the handwired matrix, diodes on every switch, and the battery tucked into its cavity.

Assembled, flashed the prebuilt firmware, and one key came up dead: the "D" key. Reflowed the solder joint on that switch and it came back to life.

The nice!nano has a USB-C port, so I could plug in a cable and flash the prebuilt firmware to both halves. The left half is the master, the right half is the slave. The two halves pair over BLE.

Close-up of the assembled left half with thick 3D-printed keycaps installed, gold legends on black keys over an iridescent purple case.
The left half assembled — thick printed keycaps on the case.

Would do differently

  • Order batteries before building. Waiting on the batteries while everything else is ready is frustrating.
  • Soldering on the pins of the nice!nano is a pain, the 3D-printed case can easily melt if exposed to too much heat. I should have used a socket or header pins to make it easier, but not sure if that would fit in the case.
  • Spend more time on ZMK Studio before touching the raw config files. It's the faster path for anything that isn't a structural keymap change.

Links

  • Sputnik (Vostok Labs) on GitHub — github.com/vostoklabs/Sputnik-Handwired-Split-Corne-Keyboard-