From: Dennis Marttinen twelho@welho.tech
[ Upstream commit d7f6629bffdcb962d383ef8c9a30afef81e997fe ]
I've acquired a Logitech MX Anywhere 3S mouse, which supports HID++ over Bluetooth. Adding its PID 0xb037 to the allowlist enables the additional features, such as high-resolution scrolling. Tested working across multiple machines, with a mix of Intel and Mediatek Bluetooth chips.
[jkosina@suse.com: standardize shortlog] Signed-off-by: Dennis Marttinen twelho@welho.tech Signed-off-by: Jiri Kosina jkosina@suse.com Signed-off-by: Sasha Levin sashal@kernel.org ---
LLM Generated explanations, may be completely bogus:
## Analysis of HID: logitech: add HID++ support for Logitech MX Anywhere 3S
### 1. COMMIT MESSAGE ANALYSIS
**Subject:** "HID: logitech: add HID++ support for Logitech MX Anywhere 3S"
The commit message explains: - Author acquired an MX Anywhere 3S mouse that supports HID++ over Bluetooth - Adding PID 0xb037 to the allowlist enables additional features (high- resolution scrolling) - Tested on multiple machines with Intel and Mediatek Bluetooth chips - Has proper sign-offs from author and maintainer (Jiri Kosina)
No `Cc: stable` or `Fixes:` tags are present, but as noted, that's expected for commits undergoing manual review.
### 2. CODE CHANGE ANALYSIS
The actual change is minimal:
```c + { /* MX Anywhere 3S mouse over Bluetooth */ + HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb037) }, ```
This adds exactly **2 lines** - one comment and one device ID entry to the `hidpp_devices[]` table. Looking at the context, this table already contains many similar Logitech Bluetooth device entries: - MX Master (0xb012), MX Master 2S (0xb019), MX Master 3 (0xb023), MX Master 3S (0xb034) - MX Anywhere 3 (0xb025), MX Anywhere 3SB (0xb038) - M720 Triathlon (0xb015), MX Ergo (0xb01d), MX Vertical (0xb020), etc.
The new entry follows the exact same pattern as all existing entries.
### 3. CLASSIFICATION
This is a **NEW DEVICE ID** addition - one of the explicitly allowed exception categories for stable kernels:
"Adding PCI IDs, USB IDs, ACPI IDs, etc. to existing drivers - These
are trivial one-line additions that enable hardware support"
Key points: - The hid-logitech-hidpp driver already exists in stable kernels - The HID++ protocol support is fully implemented - Only the Bluetooth device ID 0xb037 is being added - This is not a new driver or new functionality - it's enabling an existing driver for new hardware
### 4. SCOPE AND RISK ASSESSMENT
**Risk: EXTREMELY LOW**
| Factor | Assessment | |--------|------------| | Lines changed | 2 | | Files touched | 1 | | Code logic changed | None | | Complexity | Zero - pure data table entry | | Subsystem maturity | Very mature (HID drivers) |
This cannot introduce regressions because: - No code paths are modified - No functions are changed - Only users with this specific mouse over Bluetooth are affected - If there were somehow an issue, it would only affect that specific hardware
### 5. USER IMPACT
**Who benefits:** Users with Logitech MX Anywhere 3S mice using Bluetooth connection
**Without this fix:** The mouse works via basic HID, but lacks: - High-resolution scrolling - Battery status reporting - Other HID++ features that premium Logitech mice support
**Impact level:** The MX Anywhere 3S is a current-generation retail product that users are actively purchasing. Stable kernel users expect their hardware to work properly.
### 6. STABILITY INDICATORS
- ✅ Tested by author on multiple machines with different Bluetooth chips - ✅ Reviewed and signed off by HID maintainer Jiri Kosina - ✅ Pattern is identical to many existing, working entries
### 7. DEPENDENCY CHECK
**Dependencies:** None
This is a pure data addition. The driver framework already exists in all stable kernels that have the hid-logitech-hidpp driver. No other commits are required.
---
## Summary
This commit is a **textbook example of a stable-appropriate device ID addition**:
1. ✅ **Trivial 2-line change** - Just a device ID added to an existing table 2. ✅ **No code modifications** - Pure data entry 3. ✅ **Driver already exists** - hid-logitech-hidpp is well-established in stable 4. ✅ **Follows existing pattern** - Identical format to dozens of other entries 5. ✅ **Tested** - Verified on multiple hardware configurations 6. ✅ **Zero regression risk** - Only affects users with this specific hardware 7. ✅ **Real user benefit** - Enables proper hardware support for current-generation product 8. ✅ **No dependencies** - Can be cleanly cherry-picked to any stable kernel
The stable kernel rules explicitly allow device ID additions because they enable hardware support with virtually zero risk. This is precisely what the "device ID exception" exists for.
**YES**
drivers/hid/hid-logitech-hidpp.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c index a88f2e5f791c6..9b612f62d0fba 100644 --- a/drivers/hid/hid-logitech-hidpp.c +++ b/drivers/hid/hid-logitech-hidpp.c @@ -4661,6 +4661,8 @@ static const struct hid_device_id hidpp_devices[] = { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb025) }, { /* MX Master 3S mouse over Bluetooth */ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb034) }, + { /* MX Anywhere 3S mouse over Bluetooth */ + HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb037) }, { /* MX Anywhere 3SB mouse over Bluetooth */ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb038) }, {}