Note
Linux support is in active development. HID++ device enumeration supports
Logi Bolt (USB PID 0xC548) and Logi Unifying (PID 0xC52B and
others) receivers, as well as Bluetooth-direct devices.
- Quit Solaar (or any other Logitech manager) before starting OpenLogi β the two applications fight over HID++ access.
- A kernel with
hidrawanduinputmodule support (standard on all major distros). systemd+udev(standard on Ubuntu, Fedora, Arch, Debian, openSUSE, β¦).
Pre-built .deb and .rpm packages are available on the
releases page β see
the main README for the package-based install. To build
from source instead, use the stable Rust toolchain:
git clone https://github.com/AprilNEA/OpenLogi
cd OpenLogi
cargo build --releaseThe three binaries land in target/release/:
| Binary | Role |
|---|---|
openlogi |
CLI β inventory, diagnostics, asset sync |
openlogi-gui |
Desktop GUI |
openlogi-agent |
Background agent β HID++ loop, input hook |
OpenLogi needs:
- Write access to
/dev/uinputβ to create the virtual input device for button remapping. - Read/write access to
/dev/hidraw*β to send HID++ commands to the Bolt receiver.
Install the bundled udev rules to grant access to the active-seat user without
requiring sudo or group membership (requires systemd-logind):
sudo cp packaging/linux/udev/70-openlogi.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm triggerVerify access (should open without error):
# Check uinput
openlogi-agent --check-uinput 2>/dev/null || \
test -w /dev/uinput && echo "uinput OK"
# Check a hidraw node
ls -la /dev/hidraw*The GUI Settings β Permissions page shows a live Granted / Not granted
indicator; check it after installing the rules (no restart needed).
Device already connected?
udevadm triggerre-evaluates rules but does not re-grantuaccessACLs on nodes that were already open when the rules were installed. If access is still denied, unplug and replug your receiver or mouse (or power-cycle for wireless devices) to let udev apply the new rules on reconnect.
Replace TAG+="uaccess" in the rules file with MODE="0660", GROUP="input",
then add your user to the input group:
sudo usermod -aG input "$USER"
# Re-login for the group change to take effect.The packaging/linux/install.sh script copies the binaries, udev rules,
systemd unit, desktop entry, and icon to system paths, then reloads udevadm.
# From the repo root, after building:
sudo packaging/linux/install.sh
# Or to a custom prefix (e.g. /usr):
packaging/linux/install.sh --prefix=/usrTo remove:
packaging/linux/uninstall.shThe background agent (openlogi-agent) must be running for the GUI and CLI to
show connected devices. Enable it for your user session:
systemctl --user enable --now openlogi-agent.serviceAlternatively, toggle Settings β General β Launch at login in the GUI β it
writes the unit to ~/.config/systemd/user/openlogi-agent.service
automatically.
# List connected Logitech devices:
openlogi list
# Launch the GUI:
openlogi-gui| Limitation | Status |
|---|---|
| Wayland: per-application profile switching | Requires XWayland (WM_CLASS lookup uses X11) |
| Button capture: middle / mode-shift / thumbwheel | Side buttons only today |