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