Zero-dependency Zig userspace driver for the ASUS ROG Falchion RX Low Profile keyboard on Linux. Controls RGB lighting, brightness, and battery status via hidraw — no Armoury Crate needed.
Device: VID 0x0B05, PID 0x1B04 (USB Interface 1)
Requires Zig 0.14+.
zig build
Install the udev rule for non-root access:
sudo cp udev/99-rogfalchion.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
Your user must be in the plugdev group:
groups # check membership
sudo usermod -aG plugdev $USER # add if needed, then re-login
rogdriver <command> [options]
Commands:
static <color> Static color (hex: ff0000, or name: red)
breathing <color> [speed] Breathing effect (slow/medium/fast)
cycle [speed] Color cycle (rainbow spectrum)
reactive <color> [speed] Reactive on keypress
starry <color> [speed] Starry night effect
raindrop <color> [speed] Rain drop effect
gradient [num_leds] VIBGYOR gradient via direct mode (experimental)
brightness <0-4> Brightness level (0=off, 4=max)
battery Query battery status
identify Print device info + protocol variant
probe Detect and print protocol variant
raw <hex-bytes> Send raw HID report
Colors: hex (ff0000, #ff0000) or named (red, blue, green, yellow, etc.)
Speed: slow, medium, fast (default: medium)
rogdriver static ff3000 # orange (tuned for this keyboard's LEDs)
rogdriver breathing red slow # red breathing, slow speed
rogdriver cycle slow # rainbow color cycle
rogdriver reactive blue fast # blue reactive on keypress
rogdriver brightness 4 # max brightness
rogdriver battery # check battery level
Uses the ASUS TUF keyboard protocol (64-byte HID reports, no report ID):
0x51 0x2C— set mode (static, breathing, cycle, reactive, starry night, rain drop)0x50 0x55— apply/save changes0x12 0x00— version query (protocol probe)0x12 0x07— battery query
Confirmed working modes: 0x00-0x03, 0x06, 0x09. Modes 0x04 (wave), 0x05 (ripple), 0x07 (quicksand) return NACK on this firmware.
MIT
