/nuphy-state-of-qmk-firmware

State of custom QMK firmware for Nuphy keyboards

State of custom QMK firmware for Nuphy keyboards

Nuphy V2 keyboards are running a version of QMK firmware. QMK is an open-source project and thankfully Nuphy has published changes they made to QMK.

Goal of this doc: provide in-depth explanation of existing QMK repos for Nuphy keyboards and only some high-level QMK info.

Why you might want to use custom firmware:

  • Fixes – which haven't made to official firmware just yet
  • Very custom mappings (e.g. switch between Win and Mac automatically – based on NumLock state)

Potential downsides: we are not sure if Nuphy published all of their code, so

  • Some fixes from official firmware might be missing
  • Battery life might be worse

If you're willing to continue, here's the order of actions:

  1. Get the code from one of the repositories
  2. (Optional) Change the code
  3. Compile and flash

List of repositories

Supported Nuphy's keyboards: none

Supported keyboards:

  • Air60 v2
  • Air75 v2
  • Air96 v2

Inside: Nuphy’s official repo for all keyboard

Fork of qmk/qmk_firmware – but as for 2024-02-28 the work of merging the Nuphy's changes back into QMK was quite slow: qmk/qmk_firmware#22751. Hoping one day they will get it merged.

Differences from official Nuphy firmware binaries: fully unknown but smme to be substantional, e.g. "improve bluetooth connection stability" haven't made it to official open source version yet.

Supported keyboards:

  • Air75 v2

What's inside:

  • Fixes – some were used by Nuphy
  • Mods (some are opinionated)
  • Latest QMK
  • Latest Nuphy

Changes

  • Various Nuphy source bug fixes (e.g., F key modifiers not working in wireless).
  • Fix misplaced LED matrix configurations
  • Refactor RF logic to use a RF driver instead of managing through housekeeping
  • Fix for stuck keys in wireless mode
  • Make RF connect only for 5 seconds before sleeping again. Don't want the LED blinking for 2 minutes if keys are accidentally pressed on wireless mode without a connection.

Supported keyboards:

  • Air75 v2

What's inside:

  • Fixes
  • Opinionated mods
  • Latest QMK
  • Latest Nuphy

Fixes

  • Send reports twice to try and prevent stuck keys / missed keys

Supported keyboards:

  • Air75 v2

Initial attempt to pull latest QMK into latest Nuphy code. As of 2024-01-07 – feel free to skip unless you want their opinionated mod.

Note:

  • Branch qmk/nuphy-keyboards : clean state
  • Branch edykim/nuphy-keyboards-mod : modded by edykim

Supported keyboards:

  • Air75 v2
  • Air96 v2

First custom firmware for Air96 v2

Fixes

  • New algorithm to prevent unnecessary EEPROM writes when you change light settings
  • Pulled fixes from jincao1
  • Opinionated mods

QMK: Tooling

Read this section and then use QMK docs as further QMK reference.

QMK CLI

QMK provides CLI that helps with common tasks

  • Cloning (potentially custom) repo
  • Compiling
  • Flashing
  • Debugging

OS support:

  • Linux: yes
  • Mac:
    • Intel processor: yes
    • Apple Silicon: installation takes 2 hours
  • Windows: yes

Note: It installs a lot of stuff to your system so maybe use:

Docker + QMK Toolbox

Alternatively, people with a bit of programming background will be comfortable using

QMK: Anatomy of the repo

QMK can be roughly divided into core and keyboards. We are interested in keyboards.

keyboards are located under ./keyboards/<company>/<model>/<submodel>, e.g. ./keyboards/nuphy/air75_v2/ansi will be for Nuphy Air75 V2.

There you have

  • Keymaps – define multiple "layers" which can be switched, most commonly via Fn key. Every keyboard might have several keymaps, only one can be flashed at the time. E.g. for Air75 v2 two keymaps are provided:
    • via – supports VIA Configurator for UI-based config
    • default – doesn't support VIA – as of 2024-01-07 the only other difference is that it supports showing battery level using Fn + B
  • Keyboard's low-level code – likely you don't want to change it