AprilNEA / AprilNEA/OpenLogi

[Bug]: MX Master Mouse 3S cant detect adjustable DPI

Open
#1,339 0 comments 0 reactions 0 assignees View on GitHub
needs: triage type: bug
Dominant language
Rust
Stars
21k
Forks
675
Avg merge
2d 5h
Merged PRs (30d)
172

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?

GUI (desktop app)

### OpenLogi version

0.8.3

### Operating system

Windows

### OS version & architecture

Windows 11 25H2

### Device model

MX Master Mouse 3S + Bolt receiver

### How is the device connected?

Logi Bolt receiver

### 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?

In Pointer tab, DPI says "this device did not report adjustable DPI support"
"DPI range unavailable: device does not expose HID++ feature 0x2201"

### Steps to reproduce

Open app

### 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: Windows (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 · 2 configured device(s) · thumbwheel 14

**Assets**
- Source: user cache · Index: loaded (210 models) · User cache: present
- Cache path: C:\Users\ajury\.local/share/openlogi\assets · Bundle assets: absent

**Devices (2)**
- MX Master 3S — mouse (codename: MX Master 3S)
- Connection: Logi Bolt receiver · Online: yes · Battery: 40% (discharging, good)
- Capabilities: buttons=yes, pointer=yes, lighting=no
- DPI: 1000 dpi (range 200–8000, 157 steps)
- Model: 0b034 (wpid: b034, model-ids: b034/0000/0000, ext-model: 00)
- Transports: BTLE
- Render: mx_master_3s · Slot 1
- MX Keys S — keyboard (codename: MX KEYS S)
- Connection: Logi Bolt receiver · Online: yes · Battery: 85% (discharging, full)
- Capabilities: buttons=yes, pointer=no, lighting=no
- Model: 0b378 (wpid: b378, model-ids: b378/0000/0000, ext-model: 00)
- Transports: BTLE
- Render: mx_keys_s · Slot 2

**Receivers (1)**
- Logi Bolt Receiver (VID 046d / PID c548)
```

### `openlogi list` output

```text
(inventory read from the running agent)
Logi Bolt Receiver (8E49D494F4D537A4, vid=046d pid=c548)
├─ slot 1 ● MX Master 3S (mouse, wpid=b034, battery=40% good (discharging))
│ model_ids=[b034,0000,0000] ext=00 serial=2302LZ51A5D8 unit_id=85afb154 transports=btle
└─ slot 2 ● MX KEYS S (keyboard, wpid=b378, battery=85% full (discharging))
model_ids=[b378,0000,0000] ext=00 serial=2312CE1055D8 unit_id=cfbab565 transports=btle
```

### Logs

```shell
2026-09-10T11:49:00.801979Z DEBUG RPC{rpc.deadline=2026-09-10T11:49:10.801884600Z otel.kind="client" otel.name=Agent.protocol_version rpc.trace_id=00}: tarpc::client: SendRequest
2026-09-10T11:49:00.802179Z DEBUG RPC{rpc.deadline=2026-09-10T11:49:10.801884600Z otel.kind="client" otel.name=Agent.protocol_version rpc.trace_id=00}: tarpc::client: ReceiveResponse
2026-09-10T11:49:00.802261Z DEBUG RPC{rpc.deadline=2026-09-10T11:49:10.802254900Z otel.kind="client" otel.name=Agent.declare_client rpc.trace_id=00}: tarpc::client: SendRequest
2026-09-10T11:49:00.802343Z DEBUG RPC{rpc.deadline=2026-09-10T11:49:10.802254900Z otel.kind="client" otel.name=Agent.declare_client rpc.trace_id=00}: tarpc::client: ReceiveResponse
2026-09-10T11:49:00.802388Z DEBUG RPC{rpc.deadline=2026-09-10T11:49:10.802384900Z otel.kind="client" otel.name=Agent.snapshot rpc.trace_id=00}: tarpc::client: SendRequest
2026-09-10T11:49:00.802498Z DEBUG RPC{rpc.deadline=2026-09-10T11:49:10.802384900Z otel.kind="client" otel.name=Agent.snapshot rpc.trace_id=00}: tarpc::client: ReceiveResponse
(inventory read from the running agent)
Logi Bolt Receiver (8E49D494F4D537A4, vid=046d pid=c548)
├─ slot 1 ● MX Master 3S (mouse, wpid=b034, battery=40% good (discharging))
│ model_ids=[b034,0000,0000] ext=00 serial=2302LZ51A5D8 unit_id=85afb154 transports=btle
└─ slot 2 ● MX KEYS S (keyboard, wpid=b378, battery=85% full (discharging))
model_ids=[b378,0000,0000] ext=00 serial=2312CE1055D8 unit_id=cfbab565 transports=btle
```

### 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 in the GUI Pointer tab and compare its DPI capability result with the diagnostics inventory, which reports 200–8000 dpi and 157 steps for the MX Master 3S over the Logi Bolt receiver. Reproduce by opening the app with the receiver-connected device; done means the Pointer tab recognizes adjustable DPI and presents the reported range without the HID++ 0x2201 error.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 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.