Recognize all HID++ 2.0 device types: the x0005 DeviceName type table stopped at receiver (7), so newer types resolved to no kind at all. Add the remaining official types (the G560 reports 14 = speaker) with matching HID++ 1.0 compatibility values, and themed icons for speaker/microphone/webcam. Name LED zone locations by device kind: the wire location codes are physical-zone handles whose meaning depends on the device kind — the existing table (Primary/Logo/Left Side/Right Side) matches mice and keyboards. On speakers, codes 1-4 denote the left front, right front, left rear and right rear lamps. Setting names derive from the numeric code and are unchanged, so existing configurations keep working. Add the Audio Visualizer LED effect (0x07), the G560's factory default: pulses lamp brightness with the audio signal. Wire layout (hardware-derived): control byte at offset 0 (0 = pulse a fixed color, 1 = self-cycle hue), RGB at 1-3, BE16 period in ms at 5-6. Control values >= 2 select unmapped non-pulsing sub-modes and are not exposed. The effect has no working intensity parameter; overall brightness is governed by the separate BRIGHTNESS CONTROL (0x8040) feature. Without a param table the effect displayed as Unknown(0x07) and saved settings mis-split the period across the Cycle layout. Strip the request echo from LED zone effect reads: GetEffect (0x8070 fn 0xE0) replies with the zone index echoed ahead of the effect slot and parameters, but the reply was parsed as if it began with the slot, shifting every readback one byte (only accidentally right when the zone index happened to match the slot). HeteroValidator gains a read_skip_byte_count option. Repaint saved zone effects when LED Control is re-enabled: the firmware starts a SW-control session blank, so without this the claim looks like it did nothing (mirrors RGBControl on 0x8071). All changes verified against a live G560 (046D:0A78); device scan included. |
||
|---|---|---|
| .github | ||
| bin | ||
| docs | ||
| lib | ||
| po | ||
| rules.d | ||
| rules.d-uinput | ||
| share | ||
| tests | ||
| tools | ||
| .coveragerc | ||
| .git-blame-ignore-revs | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| .python-version | ||
| CHANGELOG.md | ||
| COPYRIGHT | ||
| LICENSE.txt | ||
| MANIFEST.in | ||
| Makefile | ||
| README.md | ||
| RELEASE.md | ||
| RHEL.md | ||
| Release_Notes.md | ||
| mkdocs.yml | ||
| pyproject.toml | ||
| release.sh | ||
| setup.py | ||
README.md
Solaar
Solaar is a Linux manager for many Logitech keyboards, mice, and other devices that connect wirelessly to a Unifying, Bolt, Lightspeed or Nano receiver as well as many Logitech devices that connect via a USB cable or Bluetooth. Solaar is not a device driver and responds only to special messages from devices that are otherwise ignored by the Linux input system.
More Information - Usage - Capabilities - Rules - Manual Installation - Known Issues
Solaar supports:
- pairing/unpairing of devices with receivers
- configuring device settings
- custom button configuration
- running rules in response to special messages from devices
For more information see the main Solaar documentation page. -
Installation Packages
Up-to-date prebuilt packages are available for some Linux distros (e.g., Fedora) in their standard repositories. If a recent version of Solaar is not available from the standard repositories for your distribution, you can try one of these packages:
- Arch solaar package in the extra repository
- Ubuntu/Kubuntu package in Solaar stable ppa
- NixOS Flake package in Svenum/Solaar-Flake
Solaar is available from some other repositories but may be several versions behind the current version:
- a Debian package, courtesy of Stephen Kitt
- a Ubuntu package is available from universe repository
- a Gentoo package, courtesy of Carlos Silva and Tim Harder
- a Mageia package, courtesy of David Geiger