Our firmware keeps Vial on the normal VIA/Vial RAW HID command IDs and speaks OpenRGB with every command ID shifted by 0x20 (OPENRGB_MERGED_OFFSET).
| Wire byte | Meaning |
|---|---|
0x01–0x13, 0xFE |
VIA / Vial (unchanged) |
0x21 |
OpenRGB GET_PROTOCOL_VERSION (expect 0x21 0x0E) |
0x22… |
Other OpenRGB commands (offset) |
USB IDs stay VID=0x342D PID=0xE484 with 80 RGB matrix LEDs.
Upstream OpenRGB’s QMK OpenRGB detector expects non-offset command IDs and often different VID/PID tables. For coexistence with Vial we intentionally use the offset protocol (same idea as reelmesh/openrgb-gmmk2-p96-iso).
Until a detector patch lands in your OpenRGB build:
- Use
host/openrgb_probe.pyto verify the keyboard answers offset commands. - Drive reactive effects with
host/cpu_heat_rgb.py(SDK / hidraw) or patch OpenRGB.
# optional: pacman -S python-hidapi (or pip install hidapi)
python host/openrgb_probe.pySuccess looks like protocol version 0x0E on command 0x21.
python host/cpu_heat_rgb.pyMaps idle → cool blue, 100% CPU → red (reads /proc/stat).
Close Vial first (it holds the RAW HID interface).
# cava already installed; PipeWire/Pulse running
python host/audio_reactive_rgb.py # rainbow spectrum across keys
python host/audio_reactive_rgb.py --mode wash # whole-board energy wash
python host/audio_reactive_rgb.py --sensitivity 1.6Config: host/cava_r75.conf (64 bars → 80 LEDs). Play music/system audio and the board should move with it.
If cava exits immediately, edit host/cava_r75.conf and try method = pulse under [input].
keyboards/rk/r75/keymaps/vial/rules.mk:
OPENRGB_MERGED_ENABLE = yesSRC += quantum/openrgb_merged.c
config.h:
#define OPENRGB_MERGED_OFFSET 0x20