News: 0001590804

  ARM Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life (Terry Pratchett, Jingo)

Linux Proposal Aims To Overcome Kernel Limitation Affecting Various Gaming Peripherals

([Hardware] 5 Hours Ago Multiple Battery HID Devices)


The Linux kernel's Human Interface Devices (HID) subsystem has an existing architectural limitation that there is just up to one battery per HID device. But with modern devices -- especially among various gaming peripherals -- there can be more than one battery when considering earbuds with a battery for each earbud, multi-device wireless receivers, etc. A proposal was raised today to address this limitation.

Lucas Zampieri of Red Hat sent out the patch today proposing support for multiple batteries per HID devices to overcome this HID subsystem limitation of assuming up to just one battery per device/

Some of the multi-battery device scenarios considered as part of this proposal included:

"Multiple battery scenarios that cannot be properly reported today:

1. Gaming headsets with charging docks (e.g., SteelSeries Arctis Nova Pro Wireless) - headset battery reported, dock battery invisible

2. Graphics tablets with stylus batteries (Wacom) - requires driver-specific workarounds

3. Wireless earbuds with per-earbud batteries plus charging case

4. Multi-device receivers (Logitech Unifying) - requires proprietary HID++ protocol parsing

This forces manufacturers to use proprietary protocols and vendor-specific software. Community projects parse USB packets directly because standard HID battery reporting cannot handle multi-battery scenarios."

As for the proposal while retaining backwards compatibility:

"## Why This Matters

The current limitation creates a cycle: OS lacks support, so manufacturers implement proprietary protocols, which makes vendor software necessary, which reduces pressure to fix the OS limitation. Improving HID core support for multiple batteries would enable standardized reporting, reduce the need for vendor software, improve OS integration, reduce driver duplication, and provide a foundation for future multi-battery devices.

## Proposed Solution

This patch introduces struct hid_battery to encapsulate individual battery state, adds a batteries list to struct hid_device for tracking multiple batteries, and uses report ID-based identification. The implementation maintains full backwards compatibility with existing single-battery code."

So assuming [1]this proposal goes through, Linux HID drivers would be able to properly report multiple batteries independently per HID device.



[1] https://lore.kernel.org/lkml/20251111105634.1684751-1-lzampier@redhat.com/



When we write programs that "learn", it turns out we do and they don't.