No description
Find a file
Chris Toph b4df74428b fix(keymap): swap hybrid bracket keycodes
- map hybrid layer brackets to LBKT/RBKT
2026-06-03 13:28:28 -04:00
.sworm feat(sofle): add hybrid dongle Nix build 2026-05-08 23:55:30 -04:00
boards/shields/sofle_hybrid fix: stabilize Sofle dongle USB and split BLE 2026-05-12 17:33:14 -04:00
config fix(keymap): swap hybrid bracket keycodes 2026-06-03 13:28:28 -04:00
patches fix: stabilize Sofle dongle USB and split BLE 2026-05-12 17:33:14 -04:00
.env.example feat(sofle): add hybrid dongle Nix build 2026-05-08 23:55:30 -04:00
.gitignore feat(sofle): add hybrid dongle Nix build 2026-05-08 23:55:30 -04:00
flake.lock feat(sofle): add hybrid dongle Nix build 2026-05-08 23:55:30 -04:00
flake.nix fix: stabilize Sofle dongle USB and split BLE 2026-05-12 17:33:14 -04:00
README.md fix: stabilize Sofle dongle USB and split BLE 2026-05-12 17:33:14 -04:00

Sofle Hybrid dongle firmware

Personal ZMK firmware for Sofle Hybrid rev5 using nice_nano_v2 controllers and a dedicated USB dongle central.

Hardware topology

  • dongle: split central and USB HID endpoint.
  • left: split peripheral with matrix, OLED, and encoder mouse-scroll.
  • right: split peripheral with matrix, OLED, and 5-way switch.
  • Host connection is USB through the dongle.
  • BLE remains enabled only for split traffic between dongle and halves; host Bluetooth profile advertising is disabled.

Repo layout

  • config/sofle_hybrid.keymap: canonical keymap.
  • config/sofle_hybrid.conf: shared user config.
  • boards/shields/sofle_hybrid/: custom shield definitions for left, right, and dongle builds.
  • config/secret_macros.dtsi: generated placeholder for local text macros.
  • uf2/: generated firmware output; ignored by git.

Build

Primary build:

nix run

This builds all targets, reads local text macro bindings from .env when present, and writes:

  • uf2/sofle_left.uf2
  • uf2/sofle_right.uf2
  • uf2/sofle_dongle.uf2
  • uf2/settings_reset.uf2

Useful checks and individual builds:

nix flake check
nix build .#left
nix build .#right
nix build .#dongle
nix build .#settings_reset

Local text macros

Secret text macro bindings stay outside git:

cp .env.example .env
$EDITOR .env
nix run

Values are raw ZMK binding lists, for example:

SOFLE_TEXT_MACRO_1_BINDINGS="&kp H &kp I"

Unset macro bindings compile to &none.

Flashing

For normal updates, flash dongle first, then left and right halves.

For clean reset:

  1. Remove old Sofle Bluetooth pairings from hosts, if any.
  2. Flash settings_reset.uf2 to dongle, left, and right.
  3. Flash sofle_dongle.uf2 to dongle.
  4. Flash sofle_left.uf2 and sofle_right.uf2 to halves.
  5. Plug dongle into host over USB.
  6. Power halves and wait for split reconnect.

ZMK Studio

ZMK Studio is disabled on the dongle for Windows USB stability. Re-enable only after base USB HID and split BLE are proven stable.