Skip to content

Instantly share code, notes, and snippets.

@ktosiek
Last active April 25, 2025 23:01
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"
@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