pulseaudio, analog sound output, and WHAT?

Matt Graham mhgraham at crow202.org
Fri Nov 20 07:58:17 MST 2020


The firefox developers have basically said, "The microphone on your 
computer won't work at all unless you use pulseaudio."[0]  I've been 
trying to avoid pulseaudio for various reasons.[1]  But since 
Thanksgiving is canceled this year, I'll have to see the family 
virtually, and why not do that with bigbluebutton.org ?  This led me to 
a twisty maze of unwarranted assumptions and outright stupidity, which I 
will try to summarize below.  TL;DR: pulseaudio hates analog audio and 
making analog audio work properly requires editing config files by hand.

I first tried building pulseaudio and firefox with the pulseaudio USE 
flag on my laptop.  This worked almost perfectly.  I expected this to 
work basically identically on my desktop, because both machines use 
sound cards that are driven by the snd_hda_intel module.  Nope!

pulseaudio has a strong preference for digital audio.  Its 
autodetection will select the first digital device it finds as the 
default audio output.  For me, this was the HDMI output... which is 
hooked up to the TV, which is almost never on.  My actual sound card was 
also found, but it wasn't the default output, and it was set to output 
sound to the iec-958-stereo-output (S/PDIF jack).  I do not have 
anything plugged in to that.  Setting the default output to the analog 
sound card didn't work; pulseaudio refused to write any data to the 
analog card.

I found a solution at 
https://wiki.archlinux.org/index.php/PulseAudio/Examples , link 
"Simultaneous HDMI and analog output".  If a digital device exists, 
pulseaudio refuses to send data to analog devices unless it can *also* 
send data to a digital device.  This makes no sense.  I have no idea how 
ordinary users would deal with this problem.  The solution was to put 
the lines:

# make pulseaudio work with analog and digital things at
# the same time.  Load analog device (NOTE: use aplay -l
# to find the hw: numbers for the device you need, they
# will be displayed as "card X: (name) device Y: and you
# need to put those numbers in there.  X and Y for me
# were both 0 because my analog card's first on the
# PCI bus.  YMMV.)
load-module module-alsa-sink device=hw:X,Y
load-module module-combine-sink sink_name=combined
set-default-sink combined

...up at the top of the /etc/pulse/default.pa file.  I have no idea how 
Mint/Ubuntu et al would handle this for ordinary users.  There is no way 
to do any of this with the slightly more user-friendly pavucontrol[2].  
I've had these speakers for 21 years, which may be a bit unusual, but 
are people really abandoning analog sound?  Regardless, I'm leaving this 
here in the hopes that some crawler will find it and some search engine 
will lead someone to a quicker fix than the multiple-hour @#%^ing around 
I had to do.

[0] "Select the audio input and output devices that exist and put them 
into 2 lists, have user choose speaker/mike from those 2 lists" is 
apparently much more difficult with ALSA than with pulseaudio or 
whatever OS X/Doze provides.  Or the firefox developers are lazy and 
clueless.

[1] Poettering, nuff said.

[2] Our UX experts have determined that the best way to deal is to 
pretend we're a phone!  So the menubar doesn't act like a menubar acts 
in real applications!  Isn't that edgy and disruptive?

-- 
Crow202 Blog: http://crow202.org/wordpress
There is no Darkness in Eternity
But only Light too dim for us to see.


More information about the PLUG-discuss mailing list