[Pkg-utopia-maintainers] Bug#1039012: pipewire-alsa: installing pipewire-alsa:amd64 but not :i386 breaks audio for "plain ALSA" i386 games
Simon McVittie
smcv at debian.org
Sat Jun 24 15:14:40 BST 2023
Package: pipewire-alsa
Version: 0.3.71-2
Severity: normal
Control: affects -1 + quake4 etqw
I'm not sure whether this is even fixable, but it seems like something
that should be reported as a known issue, even if it's going to be wontfix.
To reproduce:
* Have i386 as a foreign architecture on an amd64 system
* Use Pipewire for audio (the pipewire-audio metapackage is a good way to
do this), and in particular, have pipewire-alsa:amd64
* *Don't* have pipewire-alsa:i386
* Use game-data-packager to package the proprietary and non-redistributable
Quake 4 binaries for i386
* Log in as a user account with which you don't mind running non-auditable
proprietary binaries
* Run quake4
* Listen for audio
Expected result: audio (for example the intro cinematics include audio).
Actual result: quake4 uses the default output device in the ALSA
user-space API (libasound) for audio. Because pipewire-alsa:amd64 installs
/usr/share/alsa/alsa.conf.d/99-pipewire-default.conf, libasound wants
to use Pipewire; but because I don't have pipewire-alsa:i386, it cannot
load /usr/lib/i386-linux-gnu/alsa-lib/libasound_module_pcm_pipewire.so.
It doesn't fall back to PulseAudio, JACK or "plain ALSA"; instead,
there is no sound output.
Solution from the application side: if the i386 application uses a
typical audio abstraction layer like OpenAL, SDL or Portaudio, then
it will usually work OK. Even if the abstraction layer prefers native
Pipewire over the Pulseaudio protocol, these abstraction layers will
typically try each backend in turn until they find one that works;
so if I have libasound2-plugins:i386 and pipewire-pulse installed, the
abstraction layer will try libasound_module_pcm_pipewire.so, fail to
load it, fall back to libasound_module_pcm_pulse.so, and successfully
connect to pipewire-pulse. (But quake4 doesn't do this: even though it's
a SDL game, it implements its audio by using libasound directly.)
Solution from the user side: if you have pipewire-alsa:amd64 and you
have enabled i386, then you should also install pipewire-alsa:i386. If
#1026780 was implemented in apt, then it could automate this.
smcv
More information about the Pkg-utopia-maintainers
mailing list