Improve RHEL installation guide and add automated install example (#3162)
* Improve RHEL installation guide and add automated install example * docs: fix RHEL guide formatting and pre-commit style
This commit is contained in:
parent
4525704793
commit
940aae1be1
318
RHEL.md
318
RHEL.md
|
|
@ -1,245 +1,175 @@
|
||||||
# Solaar on RHEL 10
|
# Solaar installation guide for RHEL, Rocky, AlmaLinux, and CentOS Stream
|
||||||
|
|
||||||
## Purpose
|
This guide covers manual installation and an automated install example for
|
||||||
|
RHEL-family systems using `dnf`.
|
||||||
|
|
||||||
This documents the steps required to get **Solaar** running on **RHEL 10** when the package is not available from the normal repositories.
|
## Supported distributions
|
||||||
|
|
||||||
## Environment
|
- Red Hat Enterprise Linux (RHEL)
|
||||||
|
- Rocky Linux
|
||||||
|
- AlmaLinux
|
||||||
|
- Oracle Linux
|
||||||
|
- CentOS Stream
|
||||||
|
|
||||||
* OS: RHEL 10
|
The commands assume a minimal CLI system with `sudo` access.
|
||||||
* Desktop: KDE Plasma on Wayland
|
|
||||||
* Device class: Logitech Unifying Receiver
|
|
||||||
* Example mouse: Logitech M720 Triathlon
|
|
||||||
|
|
||||||
## Observed issue
|
## 1) Install dependencies
|
||||||
|
|
||||||
The following packages were not available from the configured repositories:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo dnf install solaar xbindkeys xdotool evtest
|
sudo dnf makecache --refresh
|
||||||
|
sudo dnf install -y \
|
||||||
|
git \
|
||||||
|
gtk3 \
|
||||||
|
python3 \
|
||||||
|
python3-devel \
|
||||||
|
python3-dbus \
|
||||||
|
python3-gobject \
|
||||||
|
python3-pip \
|
||||||
|
python3-psutil \
|
||||||
|
python3-pyudev \
|
||||||
|
python3-setuptools \
|
||||||
|
python3-xlib \
|
||||||
|
python3-yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
DNF returned package-not-found errors for those package names.
|
Optional troubleshooting helpers:
|
||||||
|
|
||||||
## What worked
|
|
||||||
|
|
||||||
### 1. Confirm the Logitech receiver is detected
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
lsusb | grep -i logitech
|
sudo dnf install -y \
|
||||||
|
evemu \
|
||||||
|
libinput \
|
||||||
|
usbutils
|
||||||
```
|
```
|
||||||
|
|
||||||
Expected output looked similar to this:
|
## 2) Clone Solaar
|
||||||
|
|
||||||
```text
|
|
||||||
Bus 001 Device 00X: ID 046d:c52b Logitech, Inc. Unifying Receiver
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Install required base packages from RHEL and EPEL where available
|
|
||||||
|
|
||||||
Install Python packaging support and device/input tooling first.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo dnf install python3 python3-pip git libinput evemu
|
|
||||||
```
|
|
||||||
|
|
||||||
Also install build and runtime pieces commonly needed for user-space input and HID tools.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo dnf install python3-devel gcc pkgconf-pkg-config gtk3 python3-gobject
|
|
||||||
```
|
|
||||||
|
|
||||||
Note: exact dependency resolution may vary depending on enabled repositories and what is already installed.
|
|
||||||
|
|
||||||
### 3. Clone the Solaar repository
|
|
||||||
|
|
||||||
```bash
|
|
||||||
mkdir -p ~/dev-repos
|
|
||||||
cd ~/dev-repos
|
|
||||||
git clone https://github.com/pwr-Solaar/Solaar.git
|
git clone https://github.com/pwr-Solaar/Solaar.git
|
||||||
cd Solaar
|
cd Solaar
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4. Install Solaar to the user environment
|
## 3) Install Solaar
|
||||||
|
|
||||||
Install it into the user site-packages instead of system-wide.
|
Install for the current user:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python3 -m pip install --user .
|
python3 -m pip install --user .
|
||||||
```
|
```
|
||||||
|
|
||||||
If upgrading later from the fork or local checkout:
|
Or install system-wide:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python3 -m pip install --user --upgrade .
|
sudo python3 -m pip install .
|
||||||
```
|
```
|
||||||
|
|
||||||
### 5. Run Solaar directly from the user-local install path
|
## 4) Install udev rules
|
||||||
|
|
||||||
|
Install the recommended `uinput` rule:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
~/.local/bin/solaar
|
sudo make install_udev_uinput
|
||||||
```
|
```
|
||||||
|
|
||||||
For CLI inspection:
|
Verify rule installation:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
~/.local/bin/solaar show
|
ls -l /etc/udev/rules.d/42-logitech-unify-permissions.rules
|
||||||
~/.local/bin/solaar config "M720 Triathlon Multi-Device Mouse"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 6. Confirm the receiver and device are visible
|
Rollback udev rule installation:
|
||||||
|
|
||||||
A working example:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
~/.local/bin/solaar show
|
sudo make uninstall_udev
|
||||||
```
|
```
|
||||||
|
|
||||||
This displayed the Unifying Receiver and the M720 Triathlon, including battery state and configurable features.
|
## 5) Run Solaar
|
||||||
|
|
||||||
## Automated installer script
|
|
||||||
|
|
||||||
A guided installer script is included in this repository and automates the RHEL workflow in this document while prompting before each major action.
|
|
||||||
|
|
||||||
Run it from the Solaar checkout:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./tools/install-rhel.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
The script can:
|
|
||||||
|
|
||||||
* check for Logitech receiver visibility with `lsusb`
|
|
||||||
* install required packages with `dnf`
|
|
||||||
* create the checkout directory and clone/update Solaar
|
|
||||||
* install Solaar with `python3 -m pip install --user`
|
|
||||||
* optionally add a Bash alias for `solaar`
|
|
||||||
* optionally run `solaar show`, `solaar config`, `libinput debug-events`, and `keyd monitor`
|
|
||||||
* write a timestamped evidence log in `~/.local/state/solaar/`
|
|
||||||
|
|
||||||
## Wayland note
|
|
||||||
|
|
||||||
On KDE Wayland, Solaar prints a warning similar to:
|
|
||||||
|
|
||||||
```text
|
|
||||||
rules cannot access modifier keys in Wayland, accessing process only works on GNOME with Solaar Gnome extension installed
|
|
||||||
```
|
|
||||||
|
|
||||||
This does **not** prevent basic Solaar usage. It only means some rule-processing features are limited under Wayland, especially outside GNOME.
|
|
||||||
|
|
||||||
## Device-specific issue seen with the M720
|
|
||||||
|
|
||||||
`solaar show` triggered a traceback when trying to read host-name metadata from the M720 Triathlon:
|
|
||||||
|
|
||||||
```text
|
|
||||||
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 12-13: unexpected end of data
|
|
||||||
```
|
|
||||||
|
|
||||||
This appears related to Solaar parsing stored host information from the mouse, not to receiver detection itself.
|
|
||||||
|
|
||||||
### Practical workaround
|
|
||||||
|
|
||||||
Use targeted commands that still work, such as:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
~/.local/bin/solaar config "M720 Triathlon Multi-Device Mouse"
|
|
||||||
```
|
|
||||||
|
|
||||||
This successfully showed configurable settings like:
|
|
||||||
|
|
||||||
* scroll wheel direction
|
|
||||||
* scroll wheel resolution
|
|
||||||
* pointer speed
|
|
||||||
* reprogrammable keys
|
|
||||||
* persistent remappable keys
|
|
||||||
* diversion settings
|
|
||||||
|
|
||||||
## Verifying input behavior outside Solaar
|
|
||||||
|
|
||||||
To inspect raw input events from the mouse, identify the correct `/dev/input/eventX` node for the mouse on your system and then run:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo libinput debug-events --device /dev/input/eventX
|
|
||||||
```
|
|
||||||
|
|
||||||
This confirmed the mouse was producing:
|
|
||||||
|
|
||||||
* pointer motion
|
|
||||||
* left and middle button events
|
|
||||||
* scroll wheel events
|
|
||||||
* horizontal wheel events
|
|
||||||
* keyboard-style events for some remapped functions
|
|
||||||
|
|
||||||
## keyd note
|
|
||||||
|
|
||||||
A locally installed `keyd` binary may exist under `/usr/local/bin/keyd` if built from source or installed manually.
|
|
||||||
|
|
||||||
If it is not available in the shell `PATH`, direct invocation may be required for monitoring:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo /usr/local/bin/keyd monitor
|
|
||||||
```
|
|
||||||
|
|
||||||
This can help verify that virtual keyboard and pointer events are being created and that remapped device actions are flowing through the input stack.
|
|
||||||
|
|
||||||
## Recommended quality-of-life alias
|
|
||||||
|
|
||||||
Add a shell alias so Solaar can be launched normally:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
vi ~/.bashrc
|
|
||||||
```
|
|
||||||
|
|
||||||
Append:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
alias solaar="$HOME/.local/bin/solaar"
|
|
||||||
```
|
|
||||||
|
|
||||||
Reload shell config:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
source ~/.bashrc
|
|
||||||
```
|
|
||||||
|
|
||||||
Then launch with:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
solaar
|
solaar
|
||||||
```
|
```
|
||||||
|
|
||||||
## Summary
|
or:
|
||||||
|
|
||||||
The working path on RHEL 10 was:
|
|
||||||
|
|
||||||
1. Confirm the Logitech Unifying Receiver is visible with `lsusb`.
|
|
||||||
2. Install Python and required development/runtime packages.
|
|
||||||
3. Clone the Solaar repository.
|
|
||||||
4. Install Solaar with `python3 -m pip install --user .`.
|
|
||||||
5. Run Solaar from `~/.local/bin/solaar`.
|
|
||||||
6. Use `solaar config "M720 Triathlon Multi-Device Mouse"` for stable device configuration.
|
|
||||||
7. Use `libinput debug-events` and optionally `keyd monitor` to validate the input stack.
|
|
||||||
|
|
||||||
## Commands used
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
lsusb | grep -i logitech
|
python3 -m solaar
|
||||||
mkdir -p ~/dev-repos
|
|
||||||
cd ~/dev-repos
|
|
||||||
git clone https://github.com/pwr-Solaar/Solaar.git
|
|
||||||
cd Solaar
|
|
||||||
python3 -m pip install --user .
|
|
||||||
~/.local/bin/solaar
|
|
||||||
~/.local/bin/solaar show
|
|
||||||
~/.local/bin/solaar config "M720 Triathlon Multi-Device Mouse"
|
|
||||||
sudo libinput debug-events --device /dev/input/eventX
|
|
||||||
sudo /usr/local/bin/keyd monitor
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Caveats
|
## 6) Automated install options
|
||||||
|
|
||||||
* Package availability in RHEL 10 repositories may differ from Fedora or Debian-based systems.
|
Use the guided installer in this repository:
|
||||||
* Wayland limits certain Solaar rule features.
|
|
||||||
* `solaar show` may crash on some host-info metadata due to an upstream parsing issue.
|
```bash
|
||||||
* Direct user-local execution from `~/.local/bin/solaar` may be required if no system package exists.
|
./tools/install-rhel.sh
|
||||||
* Replace example paths and event device numbers with the values on your own system.
|
```
|
||||||
|
|
||||||
|
Minimal non-interactive example script:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat > install-rhel-solaar.sh <<'SCRIPT'
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
if [[ "${EUID}" -eq 0 ]]; then
|
||||||
|
echo "Run as a regular user with sudo access, not as root."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
sudo dnf makecache --refresh
|
||||||
|
sudo dnf install -y \
|
||||||
|
git \
|
||||||
|
gtk3 \
|
||||||
|
python3 \
|
||||||
|
python3-devel \
|
||||||
|
python3-dbus \
|
||||||
|
python3-gobject \
|
||||||
|
python3-pip \
|
||||||
|
python3-psutil \
|
||||||
|
python3-pyudev \
|
||||||
|
python3-setuptools \
|
||||||
|
python3-xlib \
|
||||||
|
python3-yaml
|
||||||
|
|
||||||
|
if [[ ! -d Solaar/.git ]]; then
|
||||||
|
git clone https://github.com/pwr-Solaar/Solaar.git
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd Solaar
|
||||||
|
python3 -m pip install --user .
|
||||||
|
sudo make install_udev_uinput
|
||||||
|
~/.local/bin/solaar --version
|
||||||
|
SCRIPT
|
||||||
|
|
||||||
|
chmod +x install-rhel-solaar.sh
|
||||||
|
./install-rhel-solaar.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7) Verification
|
||||||
|
|
||||||
|
```bash
|
||||||
|
command -v solaar
|
||||||
|
solaar --version
|
||||||
|
python3 -m pip show solaar
|
||||||
|
```
|
||||||
|
|
||||||
|
If installed with `--user`, ensure `~/.local/bin` is on your `PATH`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
echo "$PATH" | tr ':' '\n' | grep -Fx "$HOME/.local/bin" >/dev/null || \
|
||||||
|
echo 'Add ~/.local/bin to PATH'
|
||||||
|
```
|
||||||
|
|
||||||
|
## 8) Troubleshooting
|
||||||
|
|
||||||
|
Receiver not detected:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
lsusb | grep -Ei 'logitech|046d'
|
||||||
|
sudo udevadm trigger
|
||||||
|
```
|
||||||
|
|
||||||
|
Check access to hidraw devices:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ls -l /dev/hidraw*
|
||||||
|
getfacl /dev/hidraw* 2>/dev/null | sed -n '1,80p'
|
||||||
|
```
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue