mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] HID: steelseries: space Arctis 7 status requests
@ 2026-10-24 16:40 Erik Håkansson
  0 siblings, 0 replies; only message in thread
From: Erik Håkansson @ 2026-10-24 16:40 UTC (permalink / raw)
  To: Jiri Kosina, Benjamin Tissoires
  Cc: linux-input, linux-kernel, Erik Håkansson

A user reports that the Arctis 7 (2018) frequently reports a battery
capacity of 3% before returning the correct value about 30 ms later,
causing false low-battery notifications. In the reporter's tests, this
occurs when the receiver is connected through a USB hub, but not when
connected directly to a root port.

The driver sends connection (0x14) and battery (0x18) requests back to
back. The spurious battery value, 0x03, matches the connection reply's
connected value, suggesting that the firmware may return stale buffer
contents when the requests arrive too close together.

Add a 10 ms sleep between the requests. Arctis Sound Manager uses the
same minimum spacing for this device family, citing the behaviour of
the proprietary SteelSeries GG software in its configuration comments.

The reporter tested both versions on CachyOS Linux 7.3.0 with receiver
1038:12ad behind a USB hub. During separate 60-second runs, the stock
module produced eight false battery reports of 3%, whereas the patched
module did not exhibit the issue.

Reported and tested by a user who wishes to remain anonymous.

Link: https://github.com/loteran/Arctis-Sound-Manager/blob/342194fb24873b343a4b38336aa14bffabfe6e09/src/arctis_sound_manager/devices/arctis_7.yaml#L2-L3
Fixes: 7e749a797282 ("HID: steelseries: Add support for Arctis 7 (2018)")
Signed-off-by: Erik Håkansson <erikhakan@gmail.com>
Assisted-by: LLM
---
Add spacing between the connection and battery requests to prevent
spurious low-battery reports on the Arctis 7 (2018).

The reporter confirmed the fix in an A/B comparison on CachyOS Linux
7.3.0, with the receiver connected through a USB hub. Their reporting
and testing contributions are credited anonymously at their request.

checkpatch warns that msleep() below 20 ms can sleep for up to 20 ms.
That is acceptable here: the delay enforces minimum command spacing,
and status polling repeats approximately every three seconds.
---
 drivers/hid/hid-steelseries-arctis.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/hid/hid-steelseries-arctis.c b/drivers/hid/hid-steelseries-arctis.c
index df61fa33d4c6..dc5a421e8d76 100644
--- a/drivers/hid/hid-steelseries-arctis.c
+++ b/drivers/hid/hid-steelseries-arctis.c
@@ -6,6 +6,7 @@
  *  Copyright (c) 2026 Sriman Achanta
  */
 
+#include <linux/delay.h>
 #include <linux/device.h>
 #include <linux/hid.h>
 #include <linux/kref.h>
@@ -111,6 +112,12 @@ static int steelseries_arctis_7_2018_request_status(struct hid_device *hdev)
 	if (ret)
 		return ret;
 
+	/*
+	 * Back-to-back requests may cause the device to return stale buffer
+	 * contents, resulting in incorrect battery reports.
+	 */
+	msleep(10);
+
 	return steelseries_send_output_report(hdev, battery, sizeof(battery));
 }
 

---
base-commit: c03c1a14507dfaf8b856c2608f9ac216021fc222
change-id: 20261024-feature-arctis7-2dbf70d7ce38

Best regards,
-- 
Erik Håkansson <erikhakan@gmail.com>


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-10-24 16:41 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-24 16:40 [PATCH] HID: steelseries: space Arctis 7 status requests Erik Håkansson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®