Flashing
Each half is flashed on its own, over USB, through the nice!nano’s UF2
bootloader: double-tap the reset button and the half shows up as a USB
drive called NICENANO. Copy a .uf2 file onto it and the half reboots into
the new firmware when the copy finishes. Flash the left half first, then
the right.
Important
Coming from v2.x? Read Upgrading to v3 first: v3.0.0 needs a settings reset on both halves before the new firmware.
The firmware files
| File | Flash onto |
|---|---|
eyelash_sofle_studio_left.uf2 | the left half (Studio enabled) |
nice_view-eyelash_sofle_right-zmk.uf2 | the right half |
settings_reset.uf2 | either half: clears the Studio overlay and the Bluetooth bonds |
They are attached to every GitHub release,
and every main build on GitHub Actions uploads them as a firmware
artifact. The local build tasks name the halves eyelash_sofle_left.uf2 and
eyelash_sofle_right.uf2 instead (see Building locally).
With mise (recommended)
One task downloads the firmware from the latest successful main build on
GitHub Actions and walks you through both halves:
mise run flash-releaseIt prompts you to double-tap reset on the left half, waits up to 60
seconds for NICENANO to mount, copies and syncs, waits for the drive to go
away, then does the same for the right half. It needs
mise and an authenticated gh.
The mount point it waits for is /run/media/$USER/NICENANO, where udisks
mounts removable drives on most Linux desktops.
By hand (drag-and-drop)
- Download the
.uf2files from the latest release. - Connect the left half over USB with a data cable (not a charge-only one).
- Double-tap its reset button. A
NICENANOdrive appears. - Copy
eyelash_sofle_studio_left.uf2onto it. The half reboots when the copy completes. - Disconnect it, connect the right half, and double-tap its reset button.
- Copy
nice_view-eyelash_sofle_right-zmk.uf2onto the drive. - Power-cycle both halves; they pair with each other on their own.
On Linux, run sync after the copy so the write is flushed before the drive
disappears.
Settings reset
settings_reset.uf2 is a firmware of its own that wipes the half’s settings
partition, then you flash the normal firmware on top. Use it when:
- a new keymap doesn’t take effect. Keymap changes saved from Studio live in the left half’s settings and survive a normal flash, so they override the compiled keymap;
- the halves won’t pair with each other (see Pairing and Bluetooth);
- upgrading to v3 (both halves; see Upgrading to v3).
It also erases the half’s Bluetooth bonds, so expect to re-pair afterwards.
With mise, flash the reset onto whichever half is in bootloader mode, then the normal firmware:
mise run flash-release-reset # double-tap the half to clear when asked
mise run flash-release # left, then rightBy hand: double-tap reset, copy settings_reset.uf2, wait a couple of
seconds for the half to reboot, double-tap reset again, and copy that
half’s normal firmware.
Locally built firmware
After a local build, mise run flash-left, flash-right and
flash-reset copy the matching file the same way, and mise run build-flash
builds both halves, flashes them one after the other and prints the memory
budget at the end.
If the NICENANO drive never appears, or the half doesn’t boot after the
copy, see Troubleshooting.