AprilNEA / AprilNEA/OpenLogi

[Bug]: Superlight 2 DPI write fails. Receiver misidentified as Unifying

Open
#1,306 0 comments 1 reaction 0 assignees View on GitHub
needs: triage type: bug
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.