[Bug]: Superlight 2 DPI write fails. Receiver misidentified as Unifying
- Dominant language
- Rust
- Stars
- 21k
- Forks
- 675
- Avg merge
- 1d 6h
- Merged PRs (30d)
- 180
Description
### Pre-flight checklist
- [x] I searched [existing issues](https://github.com/AprilNEA/OpenLogi/issues?q=is%3Aissue) and this is not a duplicate.
- [x] I am on the [latest release](https://github.com/AprilNEA/OpenLogi/releases/latest) or a recent `master` build.
- [x] I quit **Logi Options+** before running OpenLogi (the two apps fight over HID++ access and only one can own a receiver at a time).
### Which part of OpenLogi?
Both
### OpenLogi version
0.8.3
### Operating system
Linux
### OS version & architecture
EndeavourOS
### Device model
PRO X 2 (Superlight 2) via LIGHTSPEED receiver
### How is the device connected?
Other / not sure
### Affected area(s)
- [ ] Device discovery / detection
- [ ] Button remapping
- [x] DPI control
- [ ] SmartShift
- [ ] Per-application profiles
- [ ] Battery status
- [ ] Settings / configuration (TOML)
- [ ] Auto-update
- [ ] Menu bar / tray
- [ ] Other
### What happened?
DPI changes made in the OpenLogi GUI don't apply - the mouse keeps whatever DPI it already had in onboard memory. Confirmed via the CLI diagnostic that the write itself is rejected with a HID++ feature error, while read/detection work fine.
Expected: setting a new DPI value in the GUI (or via `openlogi diag dpi --target`) should write it to the device and the mouse should respond at the new sensitivity.
Actual: the value is read correctly (current DPI: 2840, full 100–44000 range reported), but the write fails with a LogitechInternal error on feature 0x2202 (AdjustableDpi). Device is detected fine (name, battery, serial all correct) both as a normal user and as root, and no other app (G HUB, Solaar) is running to compete for the receiver.
### Steps to reproduce
1. Connect a Logitech G PRO X 2 (Superlight 2) via its LIGHTSPEED USB receiver
2. Open OpenLogi GUI, select the device, and change the DPI slider/preset
3. Observe the mouse's actual sensitivity does not change (confirmed onboard/last DPI persists)
4. Confirm via CLI: `openlogi diag dpi --target 1600` — reproduces the failure directly with this error:
Error: write DPI
Caused by: HID++ feature error during WriteDpi for feature 0x2202: LogitechInternal
### Diagnostics report
```markdown
### OpenLogi Diagnostics
**App**
- OpenLogi (GUI): v0.8.3 (release)
- Agent: v0.8.3 (connected)
- IPC protocol: GUI 29 / agent 29
- Inventory: ready
- OS: Linux (x86_64)
- Locale: en-GB (UI: follow system)
- Accessibility: granted · Input hook: installed
- Launch at login: yes · Menu bar: yes · Update check: on
- Running from: source build (dev)
- Config: schema 7 · 1 configured device(s) · thumbwheel 14
**Assets**
- Source: user cache · Index: loaded (210 models) · User cache: present
- Cache path: ~/.local/share/openlogi/assets · Bundle assets: absent
**Devices (1)**
- PRO X 2 — mouse (codename: PRO X 2)
- Connection: Logi Unifying receiver · Online: yes · Battery: 48% (discharging, good)
- Capabilities: buttons=no, pointer=yes, lighting=no
- DPI: 2840 dpi (range 100–44000, 957 steps)
- Model: 040a9 (wpid: 40a9, model-ids: 40a9/c09b/0000, ext-model: 00)
- Transports: USB, eQuad
- Render: ⚠️ none (silhouette) · Slot 1
**Receivers (1)**
- Lightspeed Receiver (VID 046d / PID c54d)
```
### `openlogi list` output
```text
Lightspeed Receiver (B8E6B0AA, vid=046d pid=c54d)
└─ slot 1 ● PRO X 2 (mouse, wpid=40a9, battery=49% good (discharging))
model_ids=[40a9,c09b,0000] ext=00 serial=2426ZAP4GBG8 unit_id=34a17ee1 transports=usb+equad
```
### Logs
```shell
2026-09-08T04:50:26.426738Z DEBUG openlogi_hid::transport: opened HID++ channel name=Logitech USB Receiver vid=046d
2026-09-08T04:50:26.427311Z DEBUG openlogi_device::inventory::probe: receiver reports pairing count pairing_count=1
2026-09-08T04:50:28.132961Z DEBUG openlogi_device::inventory::probe: drained device-arrival events events=3
2026-09-08T04:50:28.206423Z DEBUG openlogi_device::inventory::probe: unifying paired slot slot=1 online=true wpid=40a9 kind=Mouse codename=Some("PRO X 2")
device: PRO X 2 (slot 1 on receiver B8E6B0AA)
current DPI: 2840
supported DPI: 100..44000 (step ≈ 1, 957 values)
writing DPI: 1600
Error: write DPI
Caused by:
HID++ feature error during WriteDpi for feature 0x2202: LogitechInternal
```
### macOS permissions (if applicable)
- [ ] OpenLogi has **Accessibility** permission (needed to remap buttons via the event tap).
- [ ] OpenLogi has **Input Monitoring** permission (needed for Bluetooth-direct devices and capture).
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with `openlogi diag dpi --target 1600` and trace the HID++ `WriteDpi` path for feature `0x2202`. Read the receiver and device classification path around the diagnostic output that labels the LIGHTSPEED receiver as Unifying. Done means DPI writes succeed for the PRO X 2 through its LIGHTSPEED receiver and the mouse responds at the requested sensitivity.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100