Commit Graph

2909 Commits

Author SHA1 Message Date
Ken Sanislo 8bdb49feec Remove static PRO X 2 descriptor; fully probe Centurion devices at runtime
Replace the hardcoded descriptor entry with dynamic discovery of all device
properties via the Centurion protocol. The headset name, kind, serial,
firmware, and battery are now probed at runtime — matching how the device
actually presents itself rather than relying on static data.

Key changes:
- Discover sub-device features via CentPPBridge and route requests through
  the bridge automatically
- Infer device kind from feature IDs (0x06xx = headset) for both wireless
  and direct USB connections
- Read device name from USB product string with protocol probe fallback
- Parse bridge error responses (sub_feat_idx=0xFF) instead of timing out
- Handle unknown HID++ error codes gracefully in base.py
- Fix firmware deduplication for Centurion parent devices
- Prefer sub-device serial/firmware over parent (non-printable) values
- Add Centurion-aware display in solaar show with parent/sub-device sections
- Support both wireless (0AF7 dongle) and direct USB (0AF8) connections
2026-04-12 14:51:54 -07:00
Ken Sanislo 693741f216 Add Centurion transport and PRO X 2 LIGHTSPEED headset support
Adds support for the Logitech PRO X 2 LIGHTSPEED Gaming Headset (PID 0x0AF7)
which uses the Centurion transport protocol (report ID 0x51 on USB usage page
0xFFA0) instead of standard HID++ report IDs.

Changes:
- HID enumeration: detect Centurion devices via report descriptor parsing
  (usage page 0xFFA0, report ID 0x51, 63-byte frames)
- Centurion transport: wrap/unwrap HID++ 2.0 frames in Centurion framing
  for write, read, and ping operations
- Feature discovery: enumerate features individually on Centurion devices
  (different response format: [remaining_count, feat_hi, feat_lo])
- Device descriptor for PRO X 2 LIGHTSPEED Gaming Headset
- New feature enum entries for Centurion-era headset features (0x06xx)
- CenturionRawRW class for write-only headset settings controlled via
  raw Centurion commands reverse-engineered from HeadsetControl
- HeadsetSidetone setting (0-100 range, persisted locally)

Known limitations:
- Only sidetone control is implemented; other features need RE work
- Settings are write-only (no read-back from device)
- Headset features (0x06xx) not discoverable via IRoot; registered manually
2026-04-12 14:51:54 -07:00
Caio Quirino da Silva 5478224cfa
device: Add PRO X 2 Superstrike mouse support with HITS tuning settings (#3132)
* feat: PRO X 2 Superstrike support with click haptics, actuation point and rapid trigger config support

* feat: PRO X 2 Superstrike docs

* docs: document PRO X 2 Superstrike features, device entry, and capabilities

* fix: code review points

# Conflicts:
#	lib/logitech_receiver/hidpp20_constants.py

* Fix the write_key_value for dpi_extended

I was playing with the branch from the MR and I wanted to fix the cli stuff, it now properly sets when I use:

solaar config 1 dpi_extended X 400

Should be enough

Signed-off-by: Shane Fagan <mail@shanefagan.com>

* Fix ruff style check

---------

Signed-off-by: Shane Fagan <mail@shanefagan.com>
Co-authored-by: Shane Fagan <mail@shanefagan.com>
2026-04-12 09:53:47 -04:00
Nikolay Yordanov 99a403c554
add Bulgarian translation
* Bulgarian PO files

Български превод на приложението

* Delete bg.mo

* Delete bg.po

* Delete bg.po~

* Bulgarian Translation

Български превод на приложението.

* Update i18n.md

* Delete po/bg.mo

* Delete po/bg.po~
2026-04-07 08:36:02 -04:00
Ken Sanislo b9e0cf8235
hidpp: Add names for HID++ 2.0 features and sort by ID (#3153)
Add 30 documented HID++ 2.0 feature names from LGHUB source analysis:
keyboard/mouse (PROPERTY_ACCESS, BLE_PRO_PRE_PAIRING, FULL_KEY_CUSTOMIZATION,
CONTROL_LIST, SWITCH_SWAPABILITY, DEVICE_MODE, ENABLE_HIDDEN_FEATURES,
KEYBOARD_DISABLE_CONTROLS, LOGI_MODIFIERS), racing peripherals
(RPM_INDICATOR, RPM_LED_PATTERN, LEGACY/AXIS_RESPONSE_CURVE, BANDED_AXIS,
COMBINED_PEDALS, BUNNY_HOPPING, PROFILE_MANAGEMENT, DUAL_CLUTCH,
WHEEL_CENTER_POSITION, DISPLAY_GAME_DATA, CENTER_SPRING, AXIS_MAPPING,
GLOBAL_DAMPING, BRAKE_FORCE, PEDAL_STATUS, TORQUE_LIMIT,
CONFIGURATION_PROFILES, OPERATING_RANGE, TRUE_FORCE, FFB_FILTER).

Sort RPM_INDICATOR/RPM_LED_PATTERN (0x807A-B) before PER_KEY_LIGHTING
(0x8080-81) to maintain ID ordering.
2026-03-20 09:07:11 -04:00
Peter F. Patel-Schneider a22ae124d9 device: don't use Logitech for codename 2026-03-19 11:27:26 -04:00
Peter F. Patel-Schneider 230eaf242c docs: add several device descriptions 2026-03-19 11:27:26 -04:00
Peter F. Patel-Schneider ee25bc76c7 device: put lock around getting device name 2026-03-19 11:27:26 -04:00
Peter F. Patel-Schneider dc9affe6fb hidpp: fix bug when showing device notification flags 2026-03-19 11:27:26 -04:00
Peter F. Patel-Schneider 7520c9cc28 hidpp20: be defensive about no device features 2026-03-13 16:21:51 -04:00
Peter F. Patel-Schneider 94e94c1254 hidpp: add feature x1b04 flag sent by M510 4004 2026-03-13 16:21:51 -04:00
Peter F. Patel-Schneider 55a67c142c device: remove incorrect descriptor for WPID 4004 2026-03-13 16:21:51 -04:00
Peter F. Patel-Schneider 51532252df ui: better handling of missing devices 2026-03-13 13:41:59 -04:00
Grant Scott Turner 940aae1be1
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
2026-03-10 07:43:25 -04:00
Peter F. Patel-Schneider 4525704793 docs: document change to use uinput only 2026-03-08 20:58:43 -04:00
Peter F. Patel-Schneider f17021e2f0 rules: remove use of XTest and use uinput in all cases 2026-03-08 20:58:43 -04:00
gnotree ✟🕊︎ 9344466949
Add installation guide for Solaar on RHEL 10 (#3158)
* Add installation guide for Solaar on RHEL 10

Document steps to install and run Solaar on RHEL 10, including environment setup and troubleshooting.

* Add interactive RHEL installer script
2026-03-08 20:54:31 -04:00
Br1an67 8cea17fc46 Use console_scripts entry point for pipx compatibility
Replace scripts=glob("bin/*") with entry_points console_scripts
to make solaar installable via pipx. pipx requires packages to
define console_scripts entry points to detect command-line apps.
2026-03-07 07:17:54 -05:00
Niko Savola 30d4d0f65d
Update Finnish localization (#3154)
* Update Finnish translation template

* Add missing Finnish translations and polish

* Fix typo feeback → feedback

* Update translators list and solaar.pot
2026-03-05 07:53:51 -05:00
Din Tort 310b3af76f
Skip Logitech webcams to prevent them from locking up during HID++ checks on Macs
* Skip Logitech webcams (PID 0x0800 to 0x09FF) to prevent them from locking up during hidpp checks #3145

* Skip Logitech webcams (PID 0x0800 to 0x09FF) to prevent them from locking up during hidpp checks #3145 - format comment

* Skip Logitech webcams (PID 0x0800 to 0x09FF) to prevent them from locking up during hidpp checks #3145 - format hex

* Skip Logitech webcams from hidpp checks #3145 - local constant for LOGITECH_VENDOR_ID as per code review
2026-02-28 10:50:36 -05:00
NaviMen 75aadc706c Add Ukrainian credit to the about model
​Hi! I have contributed to the Ukrainian translation and would like to be added to the translators list in the "About" section.
2026-02-28 09:50:44 -05:00
Peter F. Patel-Schneider d919bcbb30 device: downgrade ping no such device to informational log entry 2026-02-26 08:46:22 -05:00
Peter F. Patel-Schneider 97dd9467b5 device: add names for G500 mouse 2026-02-26 07:49:18 -05:00
Peter F. Patel-Schneider cbb3106993 device: recover from guessing the wrong number for direct-connected HID++ 1.0 devices 2026-02-26 07:49:18 -05:00
Peter F. Patel-Schneider 42e0e391b5 config: tolerate devices with no unitId 2026-02-05 10:50:49 -05:00
Peter F. Patel-Schneider 40dcaadec7 docs: add information on G733 Gaming Headest 2026-02-05 10:41:07 -05:00
Peter F. Patel-Schneider 1e756f6438 po: fix format characters in sk translation 2026-02-05 10:39:43 -05:00
Peter F. Patel-Schneider a79bb24da5 cli: correctly handle timeout in Bolt discovery 2026-01-18 14:21:56 -05:00
aasami 7dbb51b05b Update sk.po
Almost complete Slovak translation.
2026-01-18 14:20:18 -05:00
Mário Victor Ribeiro Silva d82233b69c feat: update pt_BR translations 2026-01-08 22:40:59 -05:00
daviddavid 2f3b3c1964 Update French translation (for release 1.1.19)
- by David Geiger <david.david@mageialinux-online.org>
2026-01-08 14:40:36 -05:00
Peter F. Patel-Schneider 97311bed5f ui: handle missing receiver_path more gracefully 2026-01-08 12:38:14 -05:00
Peter F. Patel-Schneider 6926047020 device: handle inaccessiable devices when determining protocol 2026-01-08 12:37:31 -05:00
Peter F. Patel-Schneider 0110bbff31 cli: be defensive when showing features in solaar show 2026-01-08 12:36:42 -05:00
Peter F. Patel-Schneider 4bda869542 release 1.1.19 2026-01-08 12:32:44 -05:00
Ekaterine Papava ce1adc7b03 po: Add Georgian translation 2026-01-07 22:50:17 -05:00
Peter F. Patel-Schneider fc68521731 release 1.1.19rc1 2025-12-29 09:47:07 -05:00
Peter F. Patel-Schneider c87730f1eb tests: remove test that doesn't work in older Pythons 2025-12-24 08:11:04 -05:00
Peter F. Patel-Schneider 76346cd5aa docs: update help messages for CLI commands 2025-12-21 18:03:53 -05:00
Peter F. Patel-Schneider 705279097f cli: allow to change LED settings 2025-12-21 18:03:53 -05:00
Peter F. Patel-Schneider 36377fdd5a doc: instructions on running solaar show in 1.1.18 2025-12-21 18:01:53 -05:00
Peter F. Patel-Schneider a427c66dc1 tools: add python3-devel to install-dnf in Makefile 2025-12-20 12:31:17 -05:00
Peter F. Patel-Schneider f0c64f5fb3 tools: improve flags for hidconsole 2025-12-19 10:55:50 -05:00
Peter F. Patel-Schneider a0e19282ec tools: hidconsole can send an HID command non-interactively 2025-12-19 09:38:17 -05:00
Peter F. Patel-Schneider e999b12246 receiver: add info about new lightspeed receiver 2025-12-17 15:52:17 -05:00
Peter F. Patel-Schneider d3216ea57a device: remove debugging statement 2025-12-17 15:44:14 -05:00
Nick 0b6a5fa108 Update Swedish translation
Fix one translation
2025-12-17 11:47:25 -05:00
Peter F. Patel-Schneider ff23601183 device: fix bug when showing details about direct-connected device 2025-12-16 15:23:06 -05:00
Daniel Nylander aaabb5d811 Updated Swedish translation 2025-12-13 07:53:04 -05:00
Peter Dave Hello ccf1ac5b6d po: Update zh_TW Traditional Chinese locale 2025-12-13 07:52:20 -05:00