skip to content
carldmitchell.com
← all projects

Linux hardware utilities

Small tools that make hardware without Linux support work anyway, including a reverse-engineered gaming mouse protocol and Corsair keyboard protocol research.

details

status
live
group
other
stack
Python, hidapi, USB HID reverse engineering, Lua (Hyprland)
since
2026-07

readme

I run Arch-based Omarchy, and some hardware doesn't care.

venusctl: a gaming mouse with no Linux support

The UtechSmart Venus MMO mouse isn't supported by the usual Linux RGB tools, and the one community tool's lighting protocol didn't work. I worked out the protocol, verified it on the hardware, and wrote a small tool around it:

venusctl.py dump     # read the mouse's current state into JSON
venusctl.py apply    # write the JSON back to the mouse

Profiles, colors, lighting modes, brightness, DPI stages and polling rate all come from one JSON file. There are presets per game, and an auto-switcher that detects which Steam game is running and applies its profile, re-flashing the mouse only when the game changes. No GUI, no vendor software, just Python and hidapi.

k100-hwlight: keyboard protocol research

Research into the Corsair K100's Bragi HID protocol, aimed at storing lighting in the keyboard's own memory. It includes a client that probes the keyboard's properties and resources, a full backup of its onboard memory taken before any write, and a script that sets the lighting as soon as the driver loads.

The Omarchy 4.0 config port

Omarchy 4.0 moved Hyprland's configuration from .conf files to Lua. I ported my whole setup (bindings, monitors, input, look and feel, autostart) ahead of the one-way upgrade, with the original files and a package snapshot kept so it can be checked and recovered.