Open-source RGB control for the AULA F75 over its 2.4 GHz USB receiver.
This is an independent project and is not affiliated with or endorsed by
AULA. “AULA” and “F75” are referenced only to identify hardware compatibility.
(3554:fa09). It detects the correct HID collection, reads lighting status,
and can apply the keyboard's built-in RGB effects with verified read-back.
The command-line tool uses only Python's standard library. Install it in a virtual environment with:
python -m venv .venv
. .venv/bin/activate
python -m pip install .This provides the f75-linux command. For the GTK manager, install the GUI
extra as well. On Arch Linux, PyGObject is normally provided by the system
package python-gobject and GTK 4 by gtk4:
sudo pacman -S python-gobject gtk4
python -m pip install .
f75-linux-guiArch Linux enables PEP 668, so do not use pip install --user into the
system interpreter. Use the virtual environment above, or install the CLI as
an isolated application with pipx:
sudo pacman -S python-pipx
pipx ensurepath
pipx install --system-site-packages .For the GUI, keep using the virtual environment so it can see Arch's
python-gobject and gtk4 packages.
The module form remains available during development:
python -m aula_f75.cli detect
python -m aula_f75.cli status --raw
python -m aula_f75.cli effect 15 --brightness 7 --speed 2 --colorful
python -m aula_f75.cli effect 1 --brightness 7 --color 00ffff
python -m aula_f75.cli battery --seconds 10On a Linux desktop with GTK 4 and PyGObject, launch the graphical manager with:
python -m aula_f75.guiThe GTK manager provides live effect previews and controls for brightness, speed, colorful mode, and custom colors.
The GUI detects the receiver, loads the current effect parameters, and provides effect, brightness, speed, colorful/single-color, and RGB color controls. Every change is read back from the keyboard before being reported as successful. Effect names and IDs follow the keyboard protocol; for example, Ripples Shining is effect 7 and Raindrops is effect 5. Custom color is enabled for the firmware's single-color effects. Fixed On uses the active palette strategy; animated effects use the verified monochrome palette strategy, which recolors the full animation palette. Rotating Storm is kept in colorful-only mode because its structured animation palette must remain intact. Rainbow, Shadow Disappear, Rotating Windmill, Colorful Waterfall, Blossoming, and Rotating Storm are marked in the GUI as colorful-only, with the mode toggle disabled. Fixed On has no speed control, so its speed slider is disabled. On this keyboard's firmware, Shadow Disappear (9) and Rotating Storm (18) blank the LEDs and are marked unsupported; Colorful Waterfall (16) is confirmed working.
For controlled animated-color investigation, the CLI provides experimental
replace-red and monochrome palette strategies plus --debug-frames. These
options only alter lighting palette frames and remain separate from the GUI.
Run the commands from this directory. Access to the receiver's vendor hidraw
node is required. If status reports Permission denied, install the included
udev rule:
sudo cp packaging/99-aula-f75.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm triggerThen unplug and reconnect the receiver. On desktop Linux, TAG+="uaccess"
normally grants the logged-in user access. If that does not happen, add your
user to the input group and log out and back in:
sudo usermod -aG input "$USER"The rule is restricted to the AULA receiver (3554:fa09) and is not
world-writable.
detect only reads sysfs. status sends the protocol's read-config request
(13 44 01 00 ...) and accepts only checksummed read responses. effect
changes only the built-in lighting effect table, waits for every receiver echo,
saves, and verifies the result by reading it back. It does not write macros,
key mappings, or firmware. Custom RGB colors use the separate 37-frame palette
transaction and imply single-color mode. Configuration and palette frames are
persisted by one final save.
The battery command is a passive diagnostic: it only listens while the user
holds Fn+B. Testing on the 2.4 GHz receiver showed only ordinary keyboard input
reports and no vendor battery report, so an exact battery percentage is not
currently available in this mode. Fn+B's number-row indication appears to be
handled locally by the keyboard. No undocumented device-info command is sent;
an experimental command from a different AULA model was removed after it
caused the F75 lighting to restart.
To discover the official application's receiver battery exchange safely, see
docs/WINDOWS_USB_CAPTURE.md. The included
analyzer compares an idle USBPcap capture with a battery-refresh capture.

