Solaar/lib/logitech_receiver
Ken Sanislo e8af8b08c2 HeadsetSidetone: scale UI percent to the device's gain-step grid
The 0x0604 wire "level" is a gain-step index 0..N-1, not a 0-100
percent. G HUB reads the step count N from getSidetoneLevelSettings
(function 2) and scales: level = (N-1)*pct/100. Solaar wrote the raw
percent, which only matches when N == 101 — so V2 headsets reporting a
smaller N (G522: N=10) got out-of-range step writes the firmware
silently ACK'd without applying.

Read func 2 at build time, take reply byte 2 as N (default 101 when
the call is absent — V1 — or the reply is unusable). The validator now
maps the 0-100 UI percent to/from the wire step index and clamps
writes to N-1. V1 devices (e.g. PRO X 2) keep N=101, which makes the
scaling an exact identity — their wire traffic is unchanged. The raw
func-2 reply is still logged at debug level for a future G HUB
setpoint correlation.
2026-05-15 15:53:19 -07:00
..
__init__.py
…
advanced_para_eq.py G522 LIGHTSPEED headphones support 2026-05-15 14:29:03 -07:00
base.py G522 LIGHTSPEED headphones support 2026-05-15 14:29:03 -07:00
base_usb.py
…
centurion.py G522 LIGHTSPEED headphones support 2026-05-15 14:29:03 -07:00
centurion_constants.py
…
common.py ui: Show offline status for receiver-paired device batteries (#3217) 2026-05-13 17:32:03 -04:00
descriptors.py G522 LIGHTSPEED headphones support 2026-05-15 14:29:03 -07:00
desktop_notifications.py
…
device.py G522 LIGHTSPEED headphones support 2026-05-15 14:29:03 -07:00
device_quirks.py Add RGB lighting persistence and software LED power management for G515 2026-05-13 19:03:44 -04:00
diversion.py
…
exceptions.py
…
headset_rgb.py G522 LIGHTSPEED headphones support 2026-05-15 14:29:03 -07:00
hidpp10.py
…
hidpp10_constants.py
…
hidpp20.py G522 LIGHTSPEED headphones support 2026-05-15 14:29:03 -07:00
hidpp20_constants.py Drop 0x0623 probe — feature is unmapped and not in G HUB 2026-05-15 14:29:03 -07:00
i18n.py
…
listener.py G522 LIGHTSPEED headphones support 2026-05-15 14:29:03 -07:00
logivoice.py G522 LIGHTSPEED headphones support 2026-05-15 14:29:03 -07:00
notifications.py G522 LIGHTSPEED headphones support 2026-05-15 14:29:03 -07:00
onboard_eq.py G522 LIGHTSPEED headphones support 2026-05-15 14:29:03 -07:00
receiver.py
…
rgb_effects_probe.py Drop 0x0623 probe — feature is unmapped and not in G HUB 2026-05-15 14:29:03 -07:00
rgb_power.py rgb_control: honor the off state — don't auto-claim, init, or shutdown LEDs 2026-05-15 10:45:27 -04:00
settings.py G522 LIGHTSPEED headphones support 2026-05-15 14:29:03 -07:00
settings_new.py
…
settings_templates.py HeadsetSidetone: scale UI percent to the device's gain-step grid 2026-05-15 15:53:19 -07:00
settings_validator.py Add RGB lighting persistence and software LED power management for G515 2026-05-13 19:03:44 -04:00
special_keys.py
…