From d218de078053c6443e2bd9303dff3ab5751a9b23 Mon Sep 17 00:00:00 2001 From: steveyh25 Date: Sat, 19 Sep 2026 20:18:53 +0100 Subject: [PATCH 1/2] Arctis 7+: persist settings with the save command --- lib/devices/steelseries_arctis_7_plus.hpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lib/devices/steelseries_arctis_7_plus.hpp b/lib/devices/steelseries_arctis_7_plus.hpp index 05b57c09..90356f8b 100644 --- a/lib/devices/steelseries_arctis_7_plus.hpp +++ b/lib/devices/steelseries_arctis_7_plus.hpp @@ -85,6 +85,12 @@ class SteelSeriesArctis7Plus : public protocols::SteelSeriesNovaDevice saveStateArctis7Plus(hid_device* device_handle) const + { + std::array cmd { 0x00, 0x09 }; + return sendCommand(device_handle, cmd); + } + // Rich Results V2 API Result getBattery(hid_device* device_handle) override { @@ -137,6 +143,10 @@ class SteelSeriesArctis7Plus : public protocols::SteelSeriesNovaDevice Date: Tue, 22 Sep 2026 20:42:57 +0200 Subject: [PATCH 2/2] arctis 7+: note the flash write in the header Every setter now sends the save command, so each set writes to flash. That matters to anyone driving these from a timer, and the file is where they will look. --- lib/devices/steelseries_arctis_7_plus.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/devices/steelseries_arctis_7_plus.hpp b/lib/devices/steelseries_arctis_7_plus.hpp index 90356f8b..fcd6e0e8 100644 --- a/lib/devices/steelseries_arctis_7_plus.hpp +++ b/lib/devices/steelseries_arctis_7_plus.hpp @@ -18,6 +18,10 @@ namespace headsetcontrol { * - Chatmix * - Inactive time * - Equalizer (10 bands, -12 to +12 range) + * + * Every setter follows the write with the save command (00 09), so the value + * survives a power cycle. That means each set writes to flash - worth knowing + * before calling these on a timer. */ class SteelSeriesArctis7Plus : public protocols::SteelSeriesNovaDevice { public: