Skip to content

Conversation

@NickG123
Copy link

I copied the "Arctis 7 Plus" and made some tweaks for Arctis Nova 7 Wireless
I don't see any documentation for contributing so let me know if you need anything else!

@elegos
Copy link
Owner

elegos commented Sep 29, 2025

Hello @NickG123 and thanks for the submission!

Due to the nature of un-testability from my side, I'm going to ask you a few questions:

  • Have you tested the patch by yourself? Does everything work just fine?
  • Have you tried unplugging and plugging the device again, to check whether the device state is correct once powered on on Linux only (I'm thinking about channel switching, channel mixing etc)
  • What are the features that you expect from the device (i.e. the capabilities you can expect on Windows (besides the equalizer, which is not being developed)? Can you make a checklist for each of them and check their functionality?

I see the device should have only a few controls, namely the dual channel mix control and the volume one. If you know of any other feature, put it in the checklist. For example, device status is completely blank, being a wireless device I'd expect at least the battery status. The website shows an AI based ANC. Is it configurable in the SteelSeries application? I think that's a feature you'd like to turn on/off, for example. What happens when you trigger the option, or change its state, in Wireshark?... etc.

If you have troubles with other messages you're not aware of (I'm just checking the comments), try to figure out what they might mean (they might be responses or ticking feedbacks).

@NickG123
Copy link
Author

NickG123 commented Sep 30, 2025

Hi @elegos, here's a few preliminary answers.

Have you tested the patch by yourself? Does everything work just fine?

Generally my main (personal) goal here was to get the chatmix on the 2.4 GHz connection working on my Linux machine - I have tested that functionality extensively and it works fine, though I have not tested the bluetooth connectivity (though thinking on it, the Bluetooth connectivity probably bypasses this whole application and likely works natively) or other features

Have you tried unplugging and plugging the device again, to check whether the device state is correct once powered on on Linux only (I'm thinking about channel switching, channel mixing etc)

Turning the device on and off does maintain the correct channel mixing. Unplugging the 2.4 GHz receiver causes an error notification that says "Shutting down due to error in: USB input management" however once it is plugged back in it automatically resumes the correct state. Not sure where that error is coming from, I can debug further at some point here

What are the features that you expect from the device (i.e. the capabilities you can expect on Windows (besides the equalizer, which is not being developed)? Can you make a checklist for each of them and check their functionality?

Good question. I don't have a Windows test machine handy anymore so I'm not sure what the expected features are, and it's been a while since I use the SteelSeries official software. I'll have to set up a test environment here.

being a wireless device I'd expect at least the battery status.

Yes, definitely that's missing from this pull request. I saw some messages being sent from the device when it was turned on and off that I suspect are battery levels but I was having trouble interpreting them (Again, I don't have a Windows machine right now to reference the SteelSeries actual values or do any packet sniffing)

I guess the question is what your thoughts are on "partial" implementations. I can do some more cursory testing soon, but it will likely be a while before I can get around to setting up a full-blown testing environment. If you're alright with partial for the time being, I can add some documentation around what is and isn't implemented and we can merge this PR, otherwise I can come back with a fully-featured one once I have some time for deeper testing.

@NickG123 NickG123 closed this Sep 30, 2025
@NickG123 NickG123 reopened this Sep 30, 2025
@elegos
Copy link
Owner

elegos commented Sep 30, 2025

If this works partially (i.e. double mixer), I could add the "basic" support as you provided, but I'd keep this PR open after merge for complete solution nonetheless.

A basic testing setup I used myself for my device is using kvm/qemu (relying on Virtual Machine Manager, essentially), using a Windows 11 image (which btw it's totally legal if you simply don't crack it and don't put an activation code either, going into its evaluation mode) with limited resources (6-8 GB of RAM should be way enough, maybe even less), and routing the USB device to the virtual machine, installing Wireshark in the virtual environment and you'd good to go with:

  1. packets rx/tx during the plugging of the device (i.e. setup phase)
  2. packets rx/tx during the settings change
  3. packets rx/tx sent during idle (for example typically my Arctis Nova Pro Wireless can be queried for the state)

You could take a look here for some hints: I started by looking at theNova Pro Wireless' code to start reverse engineering my device too (and then understanding and going further)

@DrDoorknob
Copy link

I've got Windows in a dual boot, so I have a less VM-reliant solution; I just did a few captures of my Nova 7 based on basic features, as-labeled. I can try to pick out other features, or go for another capture format, if it helps.
It seems like battery level would be the main struggle to identify. Maybe it's one of the ones from turning it on? If it's any consolation, it seems to be a struggle for the official software too, which often incorrectly reports it as 100%. I did watch it during idle, but nothing happened in a minute or two, at least on the device IDs I identified.
captures.zip

My main goal with this software is simply to auto-switch active audio device to the headset when it turns on, and switch back to speakers when it turns off. Not sure if that's one of the goals of the project.

@elegos
Copy link
Owner

elegos commented Oct 9, 2025

That is a feature of the app indeed :) I'll see the capture log and try to figure out something. Then I'll put findings here to let them be integrated in the patch and tested.

@UnstableZero
Copy link

Not sure if it's applicable, but Headset Control has support for the SteelSeries Arctis Nova 7, the device support suggests the battery can only report 0-4 for 0-100%. Using the command to poll chat-mix reads the dial correctly, but there's no implementation to use chat-mix.

@Koeleskab
Copy link

There's also an xbox variant of arctis nova 7 with idProduct=2206. I've tried to install and test with the relevant additions all day on Bazzite 43 and fedora 43 distroboxes to no avail. I'd be happy to dig deeper if the build process gets updated to Fedora 43 or there's an experimental RPM I can layer on bazzite.

To be precise, the service worked, sinks worked, but gui and chat mix didn't. the .desktop and binary arctis-manager-launcher didn't properly compile.

2202 and 2206 should function the same. the difference is PC, playstation or xbox branding. So with broader Udev rule coverage?

@elegos
Copy link
Owner

elegos commented Nov 4, 2025

Hello @Koeleskab. Do you have relevant daemon log, running it with -v flag? You should see the device recognition (which should happen, as the daemon is creating the two sinks). The GUI highly depends on the per-device features implemented, and I'm afraid only the Arctis Nova Pro Wireless has proper configuration for the GUI part (other devices owners need to help me in that part).

@Koeleskab
Copy link

Koeleskab commented Nov 4, 2025

Running it is a bit of a process, since i have to change ownership to user from root on both manager and launcher. This might be user-error, but was done because they otherwise hit dbus access restrictions. This is the log for arctis-manager. The sinks are fully working.

User:

QCoreApplication::exec: The event loop is already running
              Daemon     INFO | -------------------------------
              Daemon     INFO | - Arctis Manager is starting. -
              Daemon     INFO | -                    v 1.6.2  -
              Daemon     INFO | -------------------------------
              Daemon     INFO | Registering supported devices.
              Daemon     INFO | Registering device "Arctis Nova 7 Wireless"
              Daemon     INFO | Registering device "Arctis 7+"
              Daemon     INFO | Registering device "Arctis 7+ (Destiny)"
              Daemon     INFO | Registering device "Arctis 7+ (PS5)"
              Daemon     INFO | Registering device "Arctis 7+ (Xbox)"
              Daemon     INFO | Registering device "Arctis Nova Pro Wireless"
              Daemon     INFO | Registering device "Arctis Nova Pro Wireless X"
              Daemon    DEBUG | Identifying Arctis device.
              Daemon     INFO | Identified device: Arctis Nova 7 Wireless.
              Daemon    DEBUG | Initializing device.
              Daemon     INFO | Registering PulseAudio nodes.
              Daemon    DEBUG | Cleaning up PulseAudio nodes.
              Daemon    DEBUG | Getting Arctis sink.
              Daemon    DEBUG | Arctis sink identified as alsa_output.usb-SteelSeries_Arctis_Nova_7X-00.analog-stereo
              Daemon     INFO | Creating PulseAudio Audio/Sink nodes.
              Daemon     INFO | Setting PulseAudio channel links.
              Daemon    DEBUG | Setting "Arctis_Game:monitor_FL" > "alsa_output.usb-SteelSeries_Arctis_Nova_7X-00.analog-stereo:playback_FL"
              Daemon    DEBUG | Setting "Arctis_Game:monitor_FR" > "alsa_output.usb-SteelSeries_Arctis_Nova_7X-00.analog-stereo:playback_FR"
              Daemon    DEBUG | Setting "Arctis_Chat:monitor_FL" > "alsa_output.usb-SteelSeries_Arctis_Nova_7X-00.analog-stereo:playback_FL"
              Daemon    DEBUG | Setting "Arctis_Chat:monitor_FR" > "alsa_output.usb-SteelSeries_Arctis_Nova_7X-00.analog-stereo:playback_FR"
              Daemon     INFO | Setting PulseAudio's default sink to Arctis_Game.
              Daemon     INFO | Starting to listen on device's 07.00.
              Daemon    DEBUG | Starting main loop.

root:

QCoreApplication::exec: The event loop is already running
         DBusManager CRITICAL | could not open dbus info file: /root/.dbus/session-bus/7d2d4544aa38452bb1eec9102d4fdae6-0
              Daemon     INFO | Received shutdown signal, shutting down.

Arctis-manager-launcher just says Arctis Manager service is not available. Please connect the device first and try opening the app again. in kde notification-center. Getting to this point involved advice from #19 and #22. Hope this helps. let me know if there's more i can give.

@elegos
Copy link
Owner

elegos commented Nov 4, 2025

You shouldn't change ownership, as it's executable by all users (owner, group, others) --> -rwxr-xr-x. And it's a user service, so you shouldn't either run it as root. The patch though only handles the device recognition, so I think it's pretty normal that you don't have control over its status or advanced features. If you want to help on that you could follow this issue as base on how to add support to other features. In particular you can see the Nova Pro Wireless device adapter, which is fully featured.

@Koeleskab
Copy link

alright, thank you for the pointer. I'll sit down with it.

@Koeleskab
Copy link

Koeleskab commented Nov 4, 2025

So far i've managed to identify hid interface 5 as chatmix, 4 as powerbutton and 3 as everything else. There isn't an interface 7 on arctis nova 7. When using 5 as chatmix and 3 as everyting else, i can't start the daemon:

              Daemon    ERROR | Failed to identify device: Arctis Nova 7X Wireless ('NoneType' object has no attribute 'interface').
              Daemon    ERROR | Failed to identify the Arctis device. Please ensure it is connected.
                           Compatible devices are: Arctis Nova 7X Wireless, Arctis 7+, Arctis 7+ (Destiny), Arctis 7+ (PS5), Arctis 7+ (Xbox), Arctis Nova Pro Wireless, Arctis Nova Pro Wireless X

There is no out endpoint on arctis nova 7 headsets that i can find and i'm so deeply out of my depth to figure out how to handle that appropriately in this codebase. I also can't figure out why it would just start right up without error when 7 is defined as interface endpoint. since it doesn't exist.

If i was unclear, all i was looking to do, was get chatmix working. I'll keep trying, but if anyone has any more insight to share, that would be welcome.

@bneumann
Copy link

I ran into similar problems with my Arctis Nova 7P headset. I already did a lot of USB traces out of a VM so I could get going and patch the copy as @Koeleskab did here but it behaved strange and failed to connect even though it should have discovered and connected from what I understood in the code.
Do we have some Discord channel or anything to stick our heads together?

@elegos
Copy link
Owner

elegos commented Nov 10, 2025

@bneumann it was time I created a discord channel for my works 🙄

https://discord.gg/6MnmU9YS

Just create a topic in the development forum 👍

@elegos
Copy link
Owner

elegos commented Dec 3, 2025

Hey @NickG123

I wanted to let you know that your changes have been added / slightly adapted in feature/arctis-nova-7-wireless (credits will be added in changeset).

May you please check if it "works for you"? You can run it in debug, or install it via the new packaging scripts (currently Ubuntu and Fedora are supported, I want to add Bazzite / Arch as soon I smooth some script edges and - actually - have the time to do the packaging scripts :D)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants