Repository navigation
[Device] ZORNER ZH99 HE (sbarda firmware, 19f5:fb2a) — lighting protocol documented, offering a PR #1300
lostintired
started this conversation in
Device Support Request
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Device type
Keyboard
Device model
ZORNER ZH99 HE (Hall-effect, vendor configurator "sbarda")
vendorId:productId
19f5:fb2a
Connection type
Wired (USB)
What happens today?
Not detected (doesn't appear in the browser picker)
Diagnostics
Can you help test?
Yes, and I can capture USB traffic (Wireshark / usbpcap)
Anything else?
Tested on Windows 11 over USB. Command
03reports the firmware build date asAug 1 2025, 11:08:11. The board is wired-only; the Wireless Radio Controls collection is just part of its HID descriptor. In Chrome the control.openmouse.app picker doesn't list it, as expected without a 19f5 filter.I maintain KbLight (https://github.com/lostintired/sbarda-kblight, MIT), a small Windows tray app that keeps the lighting settings applied on this keyboard. I'd rather have the board supported in a project with a community than maintain a single-device tool on my own, so I'd like to contribute the protocol to
keyboard-protocol.Verified on my ZH99 HE (fb2a):
55 <cmd> 00 <checksum> <len> <offset lo> <offset hi> 00followed by up to 56 data bytes; replies start withAA <cmd>. The checksum is the low byte of the sum of payload bytes 4–63 (0-based, excluding the report ID), in both directions.01/02open and close a session;05reads and06writes a 32-byte settings block.KbLight writes with read-modify-write: read the block, change only the lighting bytes, write, then read back and compare. Unknown bytes go back untouched, which I believe is what your CONTRIBUTING asks for.
Not fully verified: 20 preset effect codes and the parameters each one accepts. They come from the vendor configurator's database, and I've only checked some of them on the board by eye.
One quirk affects the design: the board doesn't keep written settings across power loss. After a replug it falls back to its default effect, so the lighting only sticks if something re-applies it on connect, logon and resume. The vendor configurator writes with the same
06command and doesn't re-apply anything on startup; I haven't found a save-to-flash command in its traffic, though its binary has several opcodes I never saw on the wire. KbLight does the re-applying today. In OpenMouse, that looks like a job for Bridge rather than the web panel.Caveats:
docs/sbarda-support.md, in the same format as your otherdocs/files, and sanitized request/reply fixtures for the tests.Two questions before I start:
src/sbarda/codec with a driver insrc/drivers/,verified: truefor fb2a only, plus a lighting card in openmouse?All reactions