Skip to content

Instantly share code, notes, and snippets.

@ktosiek
Last active February 27, 2024 22:46
Show Gist options
  • Save ktosiek/ff35074c309b291b4193b1f6167ca6fc to your computer and use it in GitHub Desktop.
Save ktosiek/ff35074c309b291b4193b1f6167ca6fc to your computer and use it in GitHub Desktop.
Astro A50 support on Linux - basic configuration for PulseAudio 13 (tested on Ubuntu's 13.99.1). Install the files and reboot, to make sure udev and PA reloaded :-)
; /usr/share/pulseaudio/alsa-mixer/profile-sets/astro-a50-gen4.conf
[General]
auto-profiles = yes
[Mapping analog-voice]
description = Voice
device-strings = hw:%f,0,0
channel-map = left,right
paths-output = steelseries-arctis-output-chat-common
intended-roles = phone
[Mapping analog-voice-input]
description = Voice
device-strings = hw:%f,0,0
channel-map = mono
paths-input = usb-gaming-headset-input
intended-roles = phone
[Mapping analog-game]
description = Game
device-strings = hw:%f,1,0
channel-map = left,right
paths-output = steelseries-arctis-output-game-common
direction = output
[Profile output:analog-voice+output:analog-game+input:analog-voice]
output-mappings = analog-voice analog-game
input-mappings = analog-voice-input
priority = 5100
skip-probe = yes
# /etc/udev/rules.d/90-astro-50.rules
# ID 9886:002c is for Astro A50 Gen4
ACTION=="change", SUBSYSTEMS=="usb", ATTRS{idVendor}=="9886", ATTRS{idProduct}=="002c", ENV{PULSE_PROFILE_SET}="astro-a50-gen4.conf"
@YannikSc
Copy link

YannikSc commented Oct 28, 2020

Original comment:

Your approach was not quite the full solution for me. I still was missing the Game output but with removing the paths-output line and changing the channel-map line to channel-map = left,right,front-center,rear-center,rear-left,rear-right everything works fine.

Correction:
To find out what exactly caused this behavior I was adding back the paths-output line and it still works.
When changing the channel-map back it broke again. So this is the only reason.

I'm running pulseaudio 13.99.2-13-g7f4d7 on Arch (Kernel 5.8.14-arch1-1).

The 6 channels are actually working (of cause with DTS enabled on the headset). But I can hear the virtual speakers when I'm changing the volumes on the channels in pavucontrol.

Sadly I cannot tell you exactly why this is not working for me. Ideas on how I can debug this are welcome if this is interesting (although I would continue using the 6 channel config afterwards).
Also I think that I only have the Gen 3 version of the headset with the 9886:0015 identifier. This might be a cause.

@ktosiek
Copy link
Author

ktosiek commented Oct 28, 2020

Right, Gen3 probably is a bit different. Can you test pulseaudio master branch? It would be cool to have a profile upstream.

I've used this guide to build PA: https://colin.guthr.ie/2010/09/compiling-and-running-pulseaudio-from-git/
And then I'm running it with: cd ~/pulseaudio/build/ && git pull --ff-only && make -j && systemctl --user stop pulseaudio.{socket,service} && src/pulseaudio -n -F src/default.pa -p $PWD/src/.libs/ -v - you'll have to restart your sound emitting apps, as most applications don't reconnect to PA after the daemon is restarted.

You'll also need to change the udev rule to use an absolute path to your profile-set, but with a bit of luck you should be able to enhance the src/modules/alsa/mixer/profile-sets/usb-gaming-headset.conf file to also handle Astro Gen3. Ping me if you try - I'll check if your changes don't break a Gen4 :-)

@YannikSc
Copy link

I've built pulseaudio with your guide and started it with your command (after removing the .libs from your -p argument as PA was appending this already).
Also I changed the udev rule to be ACTION=="change", SUBSYSTEMS=="usb", ATTRS{idVendor}=="9886", ATTRS{idProduct}=="0015", ENV{PULSE_PROFILE_SET}="/home/$USER/Downloads/pulseaudio/paudio/src/modules/alsa/mixer/profile-sets/usb-gaming-headset.conf" (but with my user name instead of $USER)
But still I'm only getting one output device which is called Headphones - A50.

This time changing the channel-map was not the solution to it, so I created a new path/copied the stereo path called usb-gaming-headset-output-game (src/modules/alsa/mixer/paths/usb-gaming-headset-output-game.conf) and used it in the stereo-game section.
And with this it worked! However it still needs to have the extended channel-map.

I also got you some logs starting from the point when I plugged in the headset

Hope it helps

@TheCherry
Copy link

I have the strange problem that my Microphone just stop working after some time and I have to switch the profile in pavucontrol. Sometimes its work for 1-2 Days ... and then its starting to work only for 15 Seconds and I have all 15 Seconds to switch the profile, else nobody can hear me .... very very strange! -.-

@trenton4k
Copy link

have anyone got Gen 3 version working?

@Vladimyr0
Copy link

have anyone got Gen 3 version working?

just changde idProduct in udev rules. gen 3 has probably 0015 instead of 002c.
you might check it with lsusb | grep 9886

@michaelmrose
Copy link

Is this expected to work with pipewire?

@Vladimyr0
Copy link

Is this expected to work with pipewire?

it won't, but not required.

just execute one of the following commands:
sh -c 'pactl set-card-profile alsa_card.usb-Astro_Gaming_Astro_A50-00 pro-audio; pactl set-default-sink alsa_output.usb-Astro_Gaming_Astro_A50-00.pro-output-0; notify-send -i audio-headphones "Sound Output:" "Astro 50 Voice"'
or
sh -c 'pactl set-card-profile alsa_card.usb-Astro_Gaming_Astro_A50-00 pro-audio; pactl set-default-sink alsa_output.usb-Astro_Gaming_Astro_A50-00.pro-output-1; notify-send -i audio-headphones "Sound Output:" "Astro 50 Game"'

in the latest case your headset will get the equalizer and dolby surround

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