Posted on

How to compile ZMK Firmware and Flash Nice!Nano Controller

ZMK Firmware Nice!Nano

Guide Source: ZMK Docs. In this guide is used the Ferris Sweep 34-key split keyboard as an example.


1. Create a new public or private GitHub repo. For example name: zmk-config-ferris. (Do not check any of the options to initialize the repository with a README or other files)

2. After configuring locally your GitHub account and made sure it is accessible – Open QMK MSYS and paste the command line:

bash -c "$(curl -fsSL"

3. Choose your shield (keyboard). In this example it will be a firmware for the Ferris Sweep which corresponds the number 14) Cradio/Sweep.

4. Select the controller you want to create the firmware. In this guide it is used Nice!Nano v2. Number 4).

5. Copy in the stock keymap for customization? [Yn]: y

6. GitHub Repo Name [zmk-config]: zmk-config-ferris

7. GitHub Repo []: ‘press enter’

8. Preparing a user config for:

  • MCU Board: nice_nano_v2
  • Shield(s): cradio_left cradio_right
  • Copy Keymap?: โœ“
  • GitHub Repo To Push (please create this in GH first!):

Continue? [Yn]: y

9. Username for ‘’: ‘enter your github username’

10. Password for ‘’: ‘do not enter your GH password, but enter your github passkey, will be something like ghp_sFhFsSHhTzMDreGRLjmks4Tzuzgthdvfsrta’

11. Your firmware should be available from GitHub Actions shortly:

12. Go to your GitHub repo at and click the top build from the list.

13. Download the firmware and unzip it. In case of a split keyboard you’ll have two uf2 files.
One for the left half (master) and another for the right half (slave).

14. Connect Nice!Nano to the PC with a reliable cable. Normally, if it’s the first time being connected it will open automatically the folder and appear in your OS as a new USB storage device.

If it is not the first time or for some reason doesn’t appear as a storage device, then short with metallic tweezers 2x the pins GND and RST on the controller. It should appear as a new USB storage device now.

Copy and paste the respective controller the uf2 file. For the nice!nano on the left keyboard half copy/paste the keyboard_left_nice_nano_v2-zmk.uf2 file, for the right keyboard_right_nice_nano_v2-zmk.uf2 file.

After pasting the folder will automatically close, the storage device disappear and in the Bluetooth & other devices you’ll see the keyboard’s name, if everything was executed successfully.

15. Connect the TRRS between the halves first and only after that the USB-C cable to the master half – left half. By connecting first the USB-C cable and only after the TRRS there is a chance of short to occur and that might fry a controller.

Now should be ready to use !

Nice!Nano FAQ

Will Nice!Nano work with Rechargeable Li-Po Battery ?
– Yes, it will work. The 110mah is perfect as it can stay underneath the controller using controller sockets and mill max pins making a clean and minimal look.

How much the 110mah Rechargeable Li-Po Battery using with Nice!Nano will last without having to recharge ?
– Depends on many factors and variables, but on average, in my experience, it lasts about 5-7 days using it around 8h/day without having to recharge.

Can i use my keyboard wired while it is charging the 110mah Rechargeable Li-Po Battery ?
– Yes, you can.

How much does it take to charge the 110mah Rechargeable Li-Po Battery with Nice!Nano ?
– For now i am not sure how much time, still testing this.

Can i use the master half (left half) wired and the right wireless (having a battery connected to the (slave) right nice!nano), avoiding this way to have an TRRS cable in the middle ?
– Yes, you can have and use it that way. The slave half connects to the master half wirelessly and OS sees it as one wired keyboard. This was tested and works flawlessly.

Can i use Nice!Nano wired with USB-C cable and TRRS, without any battery ?
– Yes, you can.

My keyboard with Nice!Nano does appear in the BT list to be connected to my host, but the connection is not successful or it just doesn’t connect.
– Try to clear the BT Profiles on the keyboard. More info about this here

When using wirelessly my keyboard (with Nice!Nanos) slave half doesn’t connect to the master half. What should i do ?
– First suggestion is to press reset button on both keyboard halves (press and release one time only) at the same time.
If that didn’t worked, then try this: Build Reset UF2