Repository navigation
This release adds two things to the left half for desktop tools: it reports the right half's battery to the host, and it reports which build it runs over Studio RPC. It also adds the first release of sofleii, the CLI that reads both. The keymap is unchanged.
Upgrading from v3.0.0
No settings reset or re-pairing is needed. Only the left half's firmware changed: copy eyelash_sofle_studio_left.uf2 to the left half. mise run flash-release flashes both halves from the latest main build, which also works; reflashing the right half does no harm.
Firmware
- Right half's battery reaches the host (#45, PR #65). The left (central) half fetches the right half's level over the split link and exposes it as a second Battery Service. Its
0x2901description is "Peripheral 0". BlueZ'sBattery1and upower still only see the left half's level;sofleii batteryreads both. - Build info over Studio RPC (#46, PR #70), from
cormoran/zmk-feature-device-infoat8cedd2dd, left half only. It reports this repo's version, the zmk version, the Zephyr version, the board, the build time and hash, the device id and the reset cause. Reads work without unlocking Studio.- A CI build reports the bare short SHA of the commit it was built from. This one reports
5c53b30. A local build reportsgit describeoutput, with-dirtyif tracked files had uncommitted changes.
- A CI build reports the bare short SHA of the commit it was built from. This one reports
- Our own physical layout (PR #57), adapted from ZMK's MIT Sofle layout. It replaces the vendor's unlicensed layout files.
config/eyelash_sofle.jsonis now generated from the shield's.dtsi(mise run layout).
sofleii CLI (new)
A Rust CLI in sofleii/ that talks to the keyboard over USB or Bluetooth, with no browser and no Chrome flags. Run it with mise run sofleii -- <command>.
| Command | What it shows |
|---|---|
sofleii status |
transport, active BLE profile, output priority, both batteries; --format waybar for a bar module |
sofleii battery |
both halves' battery levels, read over BlueZ GATT |
sofleii info |
device, build info, hardware, Studio subsystems |
sofleii profiles |
the 5 BLE profiles (active, connected, bonded, address, name) |
--transport auto(the default) uses USB when the keyboard's serial port is present and answers, and otherwise uses Bluetooth.- Every command takes
--json, with a stable output format ("schema": 1), and returns documented exit codes (#44). - The commands only read for now. Profile switching, output priority, update checks and a ratatui TUI are planned (#44, #47, #48).
Studio over Bluetooth only answers while Bluetooth is the selected output. While USB is plugged in and output priority is USB, Bluetooth requests time out; auto already handles this. Docs: https://sofleii.dlu.one/docs/sofleii/
Docs site
- Printable keymap PDF: four A4 pages, in colour carried by lines and text, not fills. https://sofleii.dlu.one/sofleii-keymap.pdf, and attached to this release.
- The keymap is now its own section of the site, and the site has a new magenta theme (#54, #59).
Memory budget
The left half uses 460 KB of 792 KB flash (58.1%) and 124 KB of 256 KB RAM. That's about 3.3 KB more flash and 0.8 KB more RAM than v3.0.0, for the battery proxy and device info. The right half is unchanged at 323 KB / 77 KB.
Full changelog: v3.0.0...v3.1.0