Solaar/lib/logitech_receiver
Ken Sanislo 56bce3fc1b G522 mic-mute fix + cluster-info decode + 0x0623 probe
Three findings from G HUB pcap analysis (~/ghub/g522/*.pcapng):

1. Mic-mute on G522 actually works — we had the wrong fnids. The
   firmware uses fn 0x10 (function 1) for state-change events / reads
   and fn 0x20 (function 2) for SetState; the standard fn 0x10 SetState
   path returns 0x0A NOT_SUPPORTED. Replace the previous "suppress
   entirely on G522" quirk with a per-PID rw_options override that
   uses the right fnids. Other headsets keep the standard pattern.

2. setRGBClusterEffect (0x0621 fn 0x30) takes effect_id 0x0000 paired
   with RGB bytes to mean "Static color" — *not* "Off / Disabled" as
   our cluster-info parse had guessed. Add a structured decoder for
   getRGBClusterInfo (fn 0x10) that emits a human-readable summary
   alongside the raw hex, with effect_id 0x0000 labelled "Static".
   Records turn out to be 4 bytes each (effect_id LE u16, slot_idx
   LE u16) — most other HID++ fields are BE but this one is LE per
   the captured factory-default bytes.

3. Sub-feature 0x0623 is present on G522 but unmapped (it appeared
   as `unknown:0623` in the feature-table dump). Add a placeholder
   SupportedFeature entry and probe the first 8 functions read-side
   so the next bring-up captures whatever responds.
2026-05-10 15:39:17 -07:00
..
__init__.py Refactor: Distinguish module from package 2024-09-15 09:18:51 -04:00
advanced_para_eq.py G522 bug batch from log df178225 2026-05-10 15:39:17 -07:00
base.py Tighten Centurion probe and silence FeaturesArray query spam 2026-05-10 15:39:17 -07:00
base_usb.py device: Support per-slot unpair on Lightspeed receivers (CLI + GUI) (#3183) 2026-04-17 09:34:58 -04:00
centurion.py Fix FeatureNotSupported crash on pending CenturionReceiver 2026-05-10 15:39:17 -07:00
centurion_constants.py centurion: support PRO X 2 LIGHTSPEED headphones Centurion features (#3150) 2026-04-14 11:43:23 -04:00
common.py centurion: support PRO X 2 LIGHTSPEED headphones Centurion features (#3150) 2026-04-14 11:43:23 -04:00
descriptors.py Add G522 LIGHTSPEED headset support (Centurion 0x50 transport variant) 2026-05-10 15:39:16 -07:00
desktop_notifications.py testing: upgrade desktop notifications tests to take notifications availability into account 2025-01-02 10:47:53 -05:00
device.py Audit diagnostic logging added during G522 bring-up 2026-05-10 15:39:17 -07:00
diversion.py rules: remove use of XTest and use uinput in all cases 2026-03-08 20:58:43 -04:00
exceptions.py Use double quotes for module level docstrings 2024-06-02 09:54:21 -04:00
headset_rgb.py Refactor G522 RGB to match keyboard/mouse LED Control pattern 2026-05-10 15:39:17 -07:00
hidpp10.py cli: Fix crash when showing notification flags. (#3070) 2025-12-12 04:54:10 -05:00
hidpp10_constants.py device: Handle composite IntFlag.name on Python < 3.11 (#3187) 2026-04-16 11:38:25 -04:00
hidpp20.py G522 bug batch from log df178225 2026-05-10 15:39:17 -07:00
hidpp20_constants.py G522 mic-mute fix + cluster-info decode + 0x0623 probe 2026-05-10 15:39:17 -07:00
i18n.py Unify imports in logitech package 2024-05-23 16:42:18 -04:00
listener.py Add G522 LIGHTSPEED headset support (Centurion 0x50 transport variant) 2026-05-10 15:39:16 -07:00
logivoice.py LogiVoice: rewrite Parameters field tables and decode GetInfo bounds 2026-05-10 15:39:17 -07:00
notifications.py centurion: support PRO X 2 LIGHTSPEED headphones Centurion features (#3150) 2026-04-14 11:43:23 -04:00
onboard_eq.py Remove references to internal RE docs and lghub_agent from code comments 2026-05-10 15:39:17 -07:00
receiver.py device: Support per-slot unpair on Lightspeed receivers (CLI + GUI) (#3183) 2026-04-17 09:34:58 -04:00
rgb_effects_probe.py G522 mic-mute fix + cluster-info decode + 0x0623 probe 2026-05-10 15:39:17 -07:00
settings.py Don't misreport empty-ACK writes as failed (Setting.write) 2026-05-10 15:39:17 -07:00
settings_new.py settings: add setting for HAPTIC feature 2025-11-12 14:50:46 -05:00
settings_templates.py G522 mic-mute fix + cluster-info decode + 0x0623 probe 2026-05-10 15:39:17 -07:00
settings_validator.py Add per-key RGB color painter and replace MAP_CHOICE color validator 2026-05-10 17:52:55 -04:00
special_keys.py device: add special keys from Logitech 2025-10-16 20:57:15 -04:00