Prerequisites for Running OpenLogi: Linux, macOS, and Windows Requirements
To run OpenLogi, you must quit conflicting Logitech managers like Solaar, ensure your Linux kernel has the hidraw and uinput modules loaded, install the 70-openlogi.rules udev rules for device permissions, and run the background agent under a systemd user session.
OpenLogi is a native, local-first replacement for Logitech Options+ that consists of three communicating processes—GUI, agent, and overlay—connected via tarpc local-sockets. Meeting the prerequisites for running OpenLogi ensures the background agent can enumerate HID++ devices and synthesize virtual input events without conflicting with existing system services.
Linux Prerequisites
According to docs/INSTALL-linux.md, Linux systems require specific kernel modules, user permissions, and system services to support OpenLogi's hardware access patterns.
Kernel Modules: hidraw and uinput
The OpenLogi agent requires two specific kernel modules to interact with Logitech hardware. The hidraw module enables raw HID++ command access to receivers and devices, while uinput allows the agent to create virtual input devices for button remapping functionality.
Before starting the agent, verify these modules are loaded:
lsmod | grep -E 'hidraw|uinput' || echo "Missing kernel modules"
If missing, load them manually with modprobe hidraw and modprobe uinput, or add them to your system's module loader configuration.
systemd and udev Integration
OpenLogi relies on systemd and udev for service management and dynamic device permissions. The agent runs as a per-user systemd service, requiring an active user session to maintain the local socket communication between the GUI, CLI, and agent processes.
The udev rules utilize TAG+="uaccess", which depends on systemd-logind to grant temporary device access to the active seat user. On non-systemd systems, you must switch to fallback permission rules (see the device permissions section below).
Device Permissions: 70-openlogi.rules
You must install the provided udev rules file located at packaging/linux/udev/70-openlogi.rules to grant read/write access to /dev/hidraw*, /dev/input/event*, and /dev/uinput without requiring manual group membership:
sudo cp packaging/linux/udev/70-openlogi.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
On systems without systemd-logind, edit the rules file to use the fallback permissions (MODE="0660", GROUP="input") and add your user to the input group, as the uaccess tag only functions with logind present.
Binary Compatibility
Pre-built OpenLogi packages require GLIBC ≥ 2.35, matching the Ubuntu 22.04 baseline. Systems with older glibc versions must build from source using the Rust toolchain as described in docs/DEVELOPMENT.md.
Conflicting Software
The agent, implemented in crates/openlogi-agent/src/main.rs, requires exclusive HID++ device access. You must quit any other Logitech device managers such as Solaar before starting OpenLogi to prevent access conflicts that would prevent device enumeration.
macOS Requirements
Running OpenLogi on macOS requires macOS 13 or later and Xcode 26+ for the Metal toolchain and GUI bundle compilation. The Hook implementation for input synthesis relies on macOS-specific APIs available in these versions. Refer to docs/README.macos.md for platform-specific build instructions.
Windows Requirements
Windows 10 or later supports OpenLogi using the Win32 SendInput API for event synthesis. Unlike Linux, Windows requires no additional kernel modules, but the same rule applies: quit other Logitech managers (like Logitech Options+) before launching OpenLogi to prevent device contention. Details are available in docs/README.windows.md.
Verification Steps
After installing prerequisites, verify your setup before launching the GUI:
# 1. Check kernel modules
lsmod | grep -E 'hidraw|uinput'
# 2. Verify uinput access
openlogi-agent --check-uinput 2>/dev/null || test -w /dev/uinput && echo "uinput accessible"
# 3. Inspect device permissions
ls -l /dev/hidraw*
getfacl /dev/input/event*
# 4. Start the agent as user service
systemctl --user enable --now openlogi-agent.service
# 5. Launch the GUI
openlogi-desktop
Summary
- Linux systems require the
hidrawanduinputkernel modules, systemd with logind, and the70-openlogi.rulesudev file installed in/etc/udev/rules.d/to grant device access without root privileges. - Conflict prevention mandates quitting Solaar or other Logitech managers before starting OpenLogi to ensure exclusive HID++ device access.
- Binary compatibility for pre-built releases requires GLIBC 2.35+ on Linux; older systems need source compilation via the Rust toolchain.
- macOS 13+ with Xcode 26+ and Windows 10+ support OpenLogi with platform-specific implementations of the input hook and GUI components.
Frequently Asked Questions
Can I run OpenLogi on Linux without systemd?
Yes, but you must modify the udev rules. The default 70-openlogi.rules uses TAG+="uaccess" which requires systemd-logind. On non-systemd systems, switch to the fallback rules that specify MODE="0660", GROUP="input" and add your user to the input group to gain necessary device permissions.
Why do I need to quit Solaar before running OpenLogi?
Both OpenLogi and Solaar attempt to claim exclusive access to HID++ devices for configuration and monitoring. Running both simultaneously causes conflicts where neither application can reliably communicate with your Logitech hardware, leading to dropped commands or failed device detection as implemented in crates/openlogi-agent/src/main.rs.
What is the minimum GLIBC version for pre-built OpenLogi packages?
Pre-built packages require GLIBC 2.35 or later, equivalent to the Ubuntu 22.04 baseline. If your distribution ships an older glibc version, you must build OpenLogi from source using the Rust toolchain as documented in docs/DEVELOPMENT.md.
Do I need to add my user to the input group to run OpenLogi?
Not if you use systemd-logind. Once the 70-openlogi.rules udev file is installed and triggered, your user gains automatic read/write access to the required device nodes (/dev/hidraw*, /dev/uinput) without requiring membership in the input group, provided systemd-logind is active. Only non-systemd systems require the input group workaround.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →