Linux device manager for Logitech devices
Go to file
Ken Sanislo 38b5665e51 Add support for the G560 Gaming Speaker and speaker devices generally
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.
2026-07-16 23:06:34 -07:00
.github doc: instructions on running solaar show in 1.1.18 2025-12-21 18:01:53 -05:00
bin Remove Python 2 specific path handling 2025-01-01 10:18:44 -05:00
docs Add support for the G560 Gaming Speaker and speaker devices generally 2026-07-16 23:06:34 -07:00
lib Add support for the G560 Gaming Speaker and speaker devices generally 2026-07-16 23:06:34 -07:00
po Update French translation (for release 1.1.20) 2026-06-19 11:23:25 -04:00
rules.d docs: document change to use uinput only 2026-03-08 20:58:43 -04:00
rules.d-uinput Apply uaccess rules on all actions other than remove 2025-09-08 10:11:52 -04:00
share release 1.1.20 2026-06-28 09:55:10 -04:00
tests Add support for the G560 Gaming Speaker and speaker devices generally 2026-07-16 23:06:34 -07:00
tools Add installation guide for Solaar on RHEL 10 (#3158) 2026-03-08 20:54:31 -04:00
.coveragerc Test coverage: Fix keysyms to be visible (#9) 2024-10-11 07:42:38 -04:00
.git-blame-ignore-revs git-blame-ignore-revs: add pre-commit bulk change 2020-07-07 16:10:37 +01:00
.gitignore Ignore macOS junk files and pipenv config 2025-01-02 17:18:39 -05:00
.pre-commit-config.yaml dist: modify pre-commit args to make ruff change files 2024-02-21 16:06:22 -05:00
.python-version dist: update pre-commit versions and python version 2022-11-23 14:20:56 -05:00
CHANGELOG.md release 1.1.20 2026-06-28 09:55:10 -04:00
COPYRIGHT clarify license status; fix debian packaging copyight notice 2019-12-24 18:53:43 +00:00
LICENSE.txt Simplify name of license file 2024-03-02 18:15:56 -05:00
MANIFEST.in Simplify name of license file 2024-03-02 18:15:56 -05:00
Makefile tools: add python3-devel to install-dnf in Makefile 2025-12-20 12:31:17 -05:00
README.md docs: make known issues more prominent 2025-10-23 08:16:05 -04:00
RELEASE.md release 1.1.20rc2 2026-05-24 10:14:45 -04:00
RHEL.md Improve RHEL installation guide and add automated install example (#3162) 2026-03-10 07:43:25 -04:00
Release_Notes.md release 1.1.20rc2 2026-05-24 10:14:45 -04:00
mkdocs.yml docs: update files shown in documentation 2025-10-23 09:28:52 -04:00
pyproject.toml ruff: Force single line imports 2024-03-13 15:41:21 -04:00
release.sh misc: Use PATH instead of hardcoded absolute paths (#3014) 2025-11-04 03:28:10 +09:00
setup.py Add per-key RGB color painter and replace MAP_CHOICE color validator 2026-05-10 17:52:55 -04:00

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

codecov License: GPL v2

 

 

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:

Solaar is available from some other repositories but may be several versions behind the current version: