Building a Wireless Corne Keyboard

Armno's avatar image
Published on March 2nd, 2024
By Armno P.

In my earlier post on building a Corne keyboard, my first Corne keyboard stopped working after using it for a month. I tried different ways to fix the keyboard. None of them helped.

Since the keyboard is already kind of broken, I thought why not experiment with it a bit further? Just to see how far I can go. What if I could even upgrade the keyboard, from a wired version to a wireless one?

With wireless split keyboards, there are a few extra benefits:

I did some research. I found that it is possible to make a wireless version of the Corne keyboard using the existing parts I have. I would take the chance to fix my previous mistakes too.

Getting Parts

Socketing and installing Nice!nano controllers

I remove the controller, the OLED screen, and the TRRS jack from the PCB. I left the reset switch on the board.

The OLED screen and TRRS Jack removed from the board

Sea-micro controller is removed from the board.

I socket the board using the male and female 2.54mm pin socket headers. The female goes to the board.

The male pin headers go to the Nicenanos controllers. I put the masking tape between the pin headers and the socket. It's the technique I learned from many YouTube videos.

Then I solder the nicenano controller to the pins. From now on I can remove the controller from the board without having to desolder it. I can take the controller to use with another board too.

Installing batteries

The Corne PCB I'm using doesn't have a battery socket. I install the battery on the Nicenano controller instead.

The battery I'm using is the Li-po 3.7v 160mAh (361230). It sits perfectly underneath the Nice!nano controller.

Nice!nano & ZMK Firmware

Going from a wired to a wireless build requires me to change the controllers from the Sea Micro to the Nice!nano. And with this, I have to switch the firmware from QMK to ZMK too, which is new to me.

Luckily, ZMK has very good documentation. I follow the Installing ZMK guide and can flash the first firmware within minutes.

Customizing the firmware confused me at first because I had to work with the plain text .keymap file which took me a good amount of time to understand how it works. Once I get it and can see the pattern, then it's not too confusing anymore.

Later on, I discovered the Keymap Editor app for ZMK that provides a very nice UI to customize the keymap. It supports a lot of ZMK features. It can connect to my ZMK config repo on GitHub, and can commit my changes back to GitHub, the new firmware gets built via GitHub Actions. I can then download and flash the firmware to the Nice!nano.

My keymap and config are at the repo @armno/zmk-corne on GitHub.

Flashing the firmware

Flashing the firmware has more steps compared to using VIA for QMK.

Once a version of the firmware is built on GitHub Actions, I can download the firmware files, which include 2 firmware files in each build - one for the left side and another one for the right side of the keyboard. Flashing the firmware is done one side at a time. I usually flash the left side first.

  1. Put the left side into the Bootloader mode by pressing the reset switch twice, or short-circuiting the GND and RST pins twice. I usually use a tweezer to double-tap both pins. When the Nice!nano is in the Bootloader mode, there is a blue light blinking.
  2. Plug it into a computer with a USB cable. It will recognize the controller as a storage drive named NICENANO.
  3. Copy the firmware of the left side corne_left-nice_nano_v2-zmk.uf2 to the NICENANO storage. When it is done, the storage will be unmounted automatically.
  4. Repeat for another side of the keyboard.

Result

Here is my wireless Corne keyboard. With all the cables removed, it looks much cleaner. It is also more portable because I don't have to take 2 cables every time with the keyboard anymore.

The battery life is questionable. From what I learned from YouTube videos, typically the battery should last about a week on the left side, and 2-3 weeks on the right side.

But my keyboard's battery life is much shorter. It only lasts a few days before empty. I don't find a reason why it is like that yet. To me, charging every day is not a problem because charging time is very fast. It takes less than an hour to charge for a full day of use.


Overall, I'm very happy with the result and I wish I could have done this earlier. Building was fun. I learned a few new things.

Happy building. ✌️

Related posts