[PATCH v7 0/8] HID: steelseries: split out Arctis driver and add Nova 5X/Nova 7 support

Sriman Achanta posted 8 patches 1 month, 4 weeks ago
drivers/hid/Makefile                 |   2 +-
drivers/hid/hid-ids.h                |  18 +-
drivers/hid/hid-quirks.c             |  16 +-
drivers/hid/hid-steelseries-arctis.c | 718 +++++++++++++++++++++++++++
drivers/hid/hid-steelseries.c        | 366 +-------------
5 files changed, 751 insertions(+), 369 deletions(-)
create mode 100644 drivers/hid/hid-steelseries-arctis.c
[PATCH v7 0/8] HID: steelseries: split out Arctis driver and add Nova 5X/Nova 7 support
Posted by Sriman Achanta 1 month, 4 weeks ago
This series moves the SteelSeries Arctis headset support out of
hid-steelseries.c into its own module, reworks it around a per-model
device_info table, hardens the battery power-supply lifetime, adds an
asynchronous status interface, and finally adds support for the Arctis
Nova 5X and Nova 7 families. After the split, hid-steelseries.c is left
handling the SRW-S1 racing wheel and the MSI RGB LED devices.

Changes since v6:
 - Rebased onto hid.git#for-7.3/steelseries.
   - The split now leaves the MSI RGB code in hid-steelseries.c
     alongside SRW-S1, and strips only the headset members from
     struct steelseries_device. The MSI RGB quirk bit is renumbered
     to BIT(1) since the two Arctis bits are gone.
   - The Arctis hardening that came with the MSI commit moves into
     hid-steelseries-arctis.c with the rest of the headset code: the
     hdev->rsize < 3 guard in steelseries_is_vendor_usage_page(), the
     battery_registered store/load-acquire pair, the !sd checks, and
     the hid_hw_stop() on the hid_hw_open() error path. The
     steelseries_is_headset() dispatch is dropped, as the new module
     only binds headsets. The battery_registered flag then goes away
     in patch 3, where the device_info rework guards every
     power_supply_changed() on sd->battery instead.
   - The v6 patch "HID: steelseries: Inline and simplify SRWS1 wheel
     driver" is dropped. Its premise was that hid-steelseries.c only
     handles the SRW-S1 after the split, which is no longer true.
 - No other changes. The resulting hid-steelseries-arctis.c is
   byte-identical to v6.

Each patch builds cleanly with CONFIG_HID_STEELSERIES=m, both with and
without CONFIG_LEDS_CLASS_MULTICOLOR.

The Nova 5X protocol was verified against hardware by
sp4m.an.joker@gmail.com, and the original Nova 7 protocol was verified
against hardware by colin@1101b.com. Thanks to both for testing. I
previously ommited other devices in the v4 patch series due to being
unable to verify.

Sriman Achanta (8):
  HID: steelseries: Fix ARCTIS_1_X device mislabeling
  HID: steelseries: Split Arctis headset driver into separate module
  HID: steelseries: Refactor Arctis driver to use device_info framework
  HID: steelseries: Report POWER_SUPPLY_STATUS_FULL when full
  HID: steelseries: Correct Arctis 9 battery calibration range
  HID: steelseries: Manage battery lifetime with refcounting
  HID: steelseries: Add async status interface support
  HID: steelseries: Add support for Arctis Nova 5X and Nova 7 families

 drivers/hid/Makefile                 |   2 +-
 drivers/hid/hid-ids.h                |  18 +-
 drivers/hid/hid-quirks.c             |  16 +-
 drivers/hid/hid-steelseries-arctis.c | 718 +++++++++++++++++++++++++++
 drivers/hid/hid-steelseries.c        | 366 +-------------
 5 files changed, 751 insertions(+), 369 deletions(-)
 create mode 100644 drivers/hid/hid-steelseries-arctis.c


base-commit: 2346d6997b70dae1f8302fd029aa422e28112eaa
-- 
2.55.0
Re: [PATCH v7 0/8] HID: steelseries: split out Arctis driver and add Nova 5X/Nova 7 support
Posted by Jiri Kosina 1 month, 4 weeks ago
On Mon, 3 Aug 2026, Sriman Achanta wrote:

> This series moves the SteelSeries Arctis headset support out of
> hid-steelseries.c into its own module, reworks it around a per-model
> device_info table, hardens the battery power-supply lifetime, adds an
> asynchronous status interface, and finally adds support for the Arctis
> Nova 5X and Nova 7 families. After the split, hid-steelseries.c is left
> handling the SRW-S1 racing wheel and the MSI RGB LED devices.
> 
> Changes since v6:
>  - Rebased onto hid.git#for-7.3/steelseries.
>    - The split now leaves the MSI RGB code in hid-steelseries.c
>      alongside SRW-S1, and strips only the headset members from
>      struct steelseries_device. The MSI RGB quirk bit is renumbered
>      to BIT(1) since the two Arctis bits are gone.
>    - The Arctis hardening that came with the MSI commit moves into
>      hid-steelseries-arctis.c with the rest of the headset code: the
>      hdev->rsize < 3 guard in steelseries_is_vendor_usage_page(), the
>      battery_registered store/load-acquire pair, the !sd checks, and
>      the hid_hw_stop() on the hid_hw_open() error path. The
>      steelseries_is_headset() dispatch is dropped, as the new module
>      only binds headsets. The battery_registered flag then goes away
>      in patch 3, where the device_info rework guards every
>      power_supply_changed() on sd->battery instead.
>    - The v6 patch "HID: steelseries: Inline and simplify SRWS1 wheel
>      driver" is dropped. Its premise was that hid-steelseries.c only
>      handles the SRW-S1 after the split, which is no longer true.
>  - No other changes. The resulting hid-steelseries-arctis.c is
>    byte-identical to v6.

Thanks a lot for such a brisk rebase. Now queued.

-- 
Jiri Kosina
SUSE Labs
Re: [PATCH v7 0/8] HID: steelseries: split out Arctis driver and add Nova 5X/Nova 7 support
Posted by Benjamin Wheeler 1 month, 4 weeks ago
I'm glad to hear this is getting merged! I have studied and tested older 
revisions of Sriman's patchset on my Arctis 7 Gen2 and would love to 
contribute a patch that adds support for it as well. I see you have a 
branch called for-7.3/steelseries in the hid kernel fork. Should I base 
my patchset off that? And should I aim to have this ready before the 7.3 
merge window, or would 7.4 be more realistic? Thanks for the direction.

Sincerely,

Benjamin Wheeler


P.S. And thanks for working on this, Sriman!


On 8/3/26 3:32 PM, Jiri Kosina wrote:
> On Mon, 3 Aug 2026, Sriman Achanta wrote:
>
>> This series moves the SteelSeries Arctis headset support out of
>> hid-steelseries.c into its own module, reworks it around a per-model
>> device_info table, hardens the battery power-supply lifetime, adds an
>> asynchronous status interface, and finally adds support for the Arctis
>> Nova 5X and Nova 7 families. After the split, hid-steelseries.c is left
>> handling the SRW-S1 racing wheel and the MSI RGB LED devices.
>>
>> Changes since v6:
>>   - Rebased onto hid.git#for-7.3/steelseries.
>>     - The split now leaves the MSI RGB code in hid-steelseries.c
>>       alongside SRW-S1, and strips only the headset members from
>>       struct steelseries_device. The MSI RGB quirk bit is renumbered
>>       to BIT(1) since the two Arctis bits are gone.
>>     - The Arctis hardening that came with the MSI commit moves into
>>       hid-steelseries-arctis.c with the rest of the headset code: the
>>       hdev->rsize < 3 guard in steelseries_is_vendor_usage_page(), the
>>       battery_registered store/load-acquire pair, the !sd checks, and
>>       the hid_hw_stop() on the hid_hw_open() error path. The
>>       steelseries_is_headset() dispatch is dropped, as the new module
>>       only binds headsets. The battery_registered flag then goes away
>>       in patch 3, where the device_info rework guards every
>>       power_supply_changed() on sd->battery instead.
>>     - The v6 patch "HID: steelseries: Inline and simplify SRWS1 wheel
>>       driver" is dropped. Its premise was that hid-steelseries.c only
>>       handles the SRW-S1 after the split, which is no longer true.
>>   - No other changes. The resulting hid-steelseries-arctis.c is
>>     byte-identical to v6.
> Thanks a lot for such a brisk rebase. Now queued.
>