evilphish/sennheiser-gsx-1000

Support for this card is now merged upstream in pulseaudio

barskern opened this issue · 10 comments

While updating my system today I got some conflicting file errors, and turns out that support for the GSX 1000/1200 is merged upstream. See link below:

https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/257

Yeah, I also got some conflict when updating my arch-system.
I thought I could remove this fix and that the vanilla pulseaudio would work, but it seems it still doesn't work with the pulseaudio 14.2.

E: [pulseaudio] module-alsa-card.c: Failed to find a working profile.
E: [pulseaudio] module.c: Failed to load module "module-alsa-card" (argument: "device_id="2" name="usb-Sennheiser_GSX_1000_Main_Audio_5698800139034192-00" card_name="alsa_card.usb-Sennheiser_GSX_1000_Main_Audio_5698800139034192-00" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1""): initialization failed.

Yeah, I also got some conflict when updating my arch-system.
I thought I could remove this fix and that the vanilla pulseaudio would work, but it seems it still doesn't work with the pulseaudio 14.2.

E: [pulseaudio] module-alsa-card.c: Failed to find a working profile.
E: [pulseaudio] module.c: Failed to load module "module-alsa-card" (argument: "device_id="2" name="usb-Sennheiser_GSX_1000_Main_Audio_5698800139034192-00" card_name="alsa_card.usb-Sennheiser_GSX_1000_Main_Audio_5698800139034192-00" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1""): initialization failed.

Ah that's a shame. I haven't faced those same issues, but I simply removed the file that was colliding and left the rest as-is (files installed by this repo).

Hey, can somebody please quickly update me on how they got the GSX 1000 to work with current Pulseaudio versions (I have 14.2 installed as of today). For me, everything from this repo suddenly stopped working after this alleged support for the GSX 1000 and 1200 was added to Pulseaudio.

For 1-2 hours I have already tried to troubleshoot everything. The problem is the following:
If I configure everything through "install.sh" from this repo, the device doesn't even show up in Pulseaudio at all anymore.

Once I remove everything via "uninstall.sh", the device apparently gets recognized properly as GSX 1000 Main Audio in Pulseaudio. But it just does not load the profiles from /usr/share/alsa-card-profile/mixer/profile-sets/sennheiser-gsx.conf like it should (I guess?). Instead, it seems to default to profiles like "Multichannel" from /usr/share/alsa-card-profile/mixer/profile-sets/default.conf. However, I'm still limited to mono(!) sound, it seems like. I don't really know enough about Pulseaudio to make the last tweaks that result in the proper profiles. Can somebody fill me in on how they did it? Does it have to do with changing /etc/pulse/default.pa?

I guess since @evilphish is also a user of the GSX 1000, he could maybe help as well. Thanks, guys. I'll try my best, but help is definitely appreciated as quickly as possible. :)

Edit: Note that I'm on the latest Manjaro version. Everything worked perfectly fine with fixes/workarounds from this repo until the time I last updated before today, which was around the 20th December 2020.

Edit2: It's actually using the wrong subdevice, which is of course the communications audio output, to create the sink. Pacmd list-sinks shows this, for example:

sample spec: s16le 1ch 16000Hz
channel map: mono
Mono

Update: While I still have no idea how to connect a sink to a profile, my (hopefully) temporary workaround is the following:
In /etc/pulse/default.pa, I have just added these two lines:

load-module module-alsa-sink device=hw:2,1 channels=8 channel_map=front-left,front-right,front-center,lfe,rear-left,rear-right,side-left,side-right
load-module module-alsa-source device=hw:2,0

I know, this is a really ugly way of doing it, but this at least gave me a 7.1 sink in Pulseaudio that seems to sound almost exactly like it did before. However, I noticed that the "Subwoofer" sound test button in Pavucontrol doesn't result in any sound, so maybe there is still something misconfigured. Bass is there for sure, so I'm not sure what's wrong. All other directions sound perfectly in the Pulseaudio test.
I hope the support for the GSX 1000 gets hardened a bit. I'm really unsure how it seemed to be plug and play for everyone. :/

Anyways. Let me know how you guys did it. I don't really want to make this my permanent solution, since this is a really bad workaround in my opinion. I would much rather use the existing config file for the GSX 1000 instead.

I switched to pipewire and had also problems with having just mono sound, so I opened a ticket on pipewire repo, but after just a few days a working fix was committed.

So in short, latest stable version 0.3.23 makes our device just work with no additional tweaks or fixes.

That sounds great. Manjaro repos are still at version 0.3.22 though, so I guess it's best to wait for now, as long as my temporary solution keeps working after a reboot.
What is your experience with Pipewire so far after replacing Pulseaudio?
Also, have you tried this just for comparison instead of using the GSX 1000? https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Simple-audio-post-processing
Would be quite interesting to hear from you if this is any different or even better. As far as I see it, the example even uses the GSX impulse response file.

Oh and another question I initially had for you: Were you just able to use the existing config file at /usr/share/alsa-card-profile/mixer/profile-sets/sennheiser-gsx.conf or is the location different for when you want to use Pipewire?

I haven't tried out that postprocessing stuff you linked, but it sounds interesting and I'll try investigate it when I get some time on my hands.

Regarding the config folder. The answer is that it depends on what version of pulseaudio if it uses same config or not.

They extracted the alsa card profiles into the separate package named alsa-card-profiles and the idea was that the profiles of the cards shouldn't differ if you use pipewire or pulseaudio as base-system.

Futher reading gave me this article detailing on some issues with pulseaudio moving back to the old location again.
https://www.reddit.com/r/archlinux/comments/l21y2y/latest_pulseaudio_package_update_might_break_some/

I have moved to pipewire but saw that puldeaudio 15 has some more fixes for our device.

https://www.freedesktop.org/wiki/Software/PulseAudio/Notes/15.0/#sennheisergsx10001200pro

Personally tried pipewire but the amount of issue you run with it are endless. Sleep / Hibernate / Locking breaks the entire sound, swaps names, mono/stereo swapping and things like that.

I would say that pipewire is yet not worth the hassle with the GSX, but i guess it depends. I use manjaro 21 with an AMD Ryzen / 5.13 kernel on XFCE and cannot tell that i'am happy with the result. Will switch back to pulseaudio for sure