-
Notifications
You must be signed in to change notification settings - Fork 22
Add support for Arctis Nova 7 Wireless #34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
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:
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). |
|
Hi @elegos, here's a few preliminary answers.
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
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
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.
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. |
|
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:
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) |
|
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. 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. |
|
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. |
|
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. |
|
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? |
|
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). |
|
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: root: Arctis-manager-launcher just says |
|
You shouldn't change ownership, as it's executable by all users (owner, group, others) --> |
|
alright, thank you for the pointer. I'll sit down with it. |
|
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: 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. |
|
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. |
|
@bneumann it was time I created a discord channel for my works 🙄 Just create a topic in the development forum 👍 |
|
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) |
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!