You are not logged in.
I'm aware its short for 'inter-process communication' and usually it's also the default name for the Pulseaudio channel.
The problem is it behaves very strange here. I can play YouTube videos in Firefox and ALSA is occupied (i use plug/asym asoundrc config or in other words enforced software mixing. It should play/mix any count of concurrent audio channels but Fx is a blocker here). If Firefox plays sound no one else can (or vice versa). This only happens with Fx. All other apps play nicely together.
The other point is even though i have PulseAudio installed it is disabled (at least i think so) and nevertheless audio is playing in Firefox.
$ systemctl --user status pulseaudio.service
● pulseaudio.service - Sound Service
Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; disabled; vendor preset: enabled)
Active: inactive (dead)
$ systemctl --user status pulseaudio.socket
● pulseaudio.socket
Loaded: masked (Reason: Unit pulseaudio.socket is masked.)
Active: inactive (dead)Also, no pulse (or JACK) processes are running during Fx playback. I usually start/stop it on-demand with 'pulseaudio -D' or 'pulseaudio -k'.
Looking into Firefox 'about:support' it shows:
Audio Backend remoteNo word about PulseAudio at all.
Is this ArchLinux specific or default Mozilla behavior? How is it possible to screw up the system from userspace like this? How exactly does this IPC work? There is no PulseAudio process running in userspace. This rather looks like a custom dirty hook into ALSA or something done by the Arch community (just a wild guess).
Edit:
It also connects to JACK. Wtf.. they decline ALSA support but include JACK?
(screenshots from about:support)
![]()
Last edited by Maniaxx (2019-02-28 21:42:01)
sys2064
Offline
ALSA is still in the firefox codebase, the arch package is compiled with ALSA, but the firefox devs do not provide any tech and bug support for it anymore. I seem to remember mozilla saying that they lack the manpower to manage the ALSA implementation and nobody stepped up when they asked for help. I'm not sure what exactly the problem was. Maybe something with it not playing nicely with sandboxing or something like that.
I don't run firefox with alsa, but AudioIPC may be a homegrown firefox internal "soundserver" that handles the sound interface between the system and the tab sandboxes.
Edit: Here it is in the firefox repo: https://github.com/mozilla/gecko-dev/tr … a/audioipc
Last edited by progandy (2019-02-28 18:53:58)
| alias CUTF='LANG=en_XX.UTF-8@POSIX ' | alias ENGLISH='LANG=C.UTF-8 ' |
Offline
That firefox issue with ALSA has even been present when ALSA was still officially supported, for some reason it doesn't properly use the default device (assuming it is properly defined, what's the output of aplay -L ?). I'm not sure what the proper fix here is or if there even is one.
Offline
Thanks.
I'm not sure where i've seen the string 'AudioIPC' exactly the last time (i think it was in process list) but at the moment i cannot find it anymore so i'm not sure if the above case is 'AudioIPC' indeed.
As ALSA is still active this could simply be the last (buggy) state i'm experiencing.
$ aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
jack
JACK Audio Connection Kit
pulse
PulseAudio Sound Server
sysdefault:CARD=Audigy2
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
Default Audio Device
front:CARD=Audigy2,DEV=0
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
Front speakers
rear:CARD=Audigy2,DEV=0
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
Rear speakers
center_lfe:CARD=Audigy2,DEV=0
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
Center and Subwoofer speakers
side:CARD=Audigy2,DEV=0
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
Side speakers
surround21:CARD=Audigy2,DEV=0
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Audigy2,DEV=0
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
4.0 Surround output to Front and Rear speakers
surround41:CARD=Audigy2,DEV=0
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Audigy2,DEV=0
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Audigy2,DEV=0
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Audigy2,DEV=0
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Audigy2,DEV=0
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
IEC958 (S/PDIF) Digital Audio Output
usbstream:CARD=Audigy2
SB Audigy 2 ZS [SB0350]
USB Stream Output
hdmi:CARD=NVidia,DEV=0
HDA NVidia, HDMI 0
HDMI Audio Output
hdmi:CARD=NVidia,DEV=1
HDA NVidia, HDMI 1
HDMI Audio Output
hdmi:CARD=NVidia,DEV=2
HDA NVidia, HDMI 2
HDMI Audio Output
hdmi:CARD=NVidia,DEV=3
HDA NVidia, HDMI 3
HDMI Audio Output
usbstream:CARD=NVidia
HDA NVidia
USB Stream OutputLast edited by Maniaxx (2019-02-28 19:53:41)
sys2064
Offline
You don't have a default device, afaik firefox will just hardcode on sysdefault in this case, which is synonymous with directly and exclusively use the card. Can you post your config? What's the behaviour with e.g.
speaker-test -Ddefault -c2Offline
How can i define the 'default' device?
$ speaker-test -Ddefault -c2
speaker-test 1.1.8
Playback device is default
Stream parameters are 48000Hz, S16_LE, 2 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 2048 to 8192
Period size range from 1024 to 1024
Using max buffer size 8192
Periods = 4
was set period_size = 1024
was set buffer_size = 8192
0 - Front Left
1 - Front Right
Time per period = 5.809501
0 - Front Left
1 - Front Right
Time per period = 5.973667
0 - Front Left
1 - Front Right
Time per period = 5.973671
0 - Front Left
1 - Front Right
[...].asoundrc
defaults.pcm.rate_converter "speexrate_medium"
pcm.!default {
type plug
slave.pcm "asym"
}
ctl.!default {
type hw
card "hw:0,0"
}
pcm.asym {
type asym
playback.pcm "output"
capture.pcm "input"
}
pcm.output {
type dmix
ipc_key 2048
ipc_perm 0666
slave {
pcm "hw:0,0"
period_time 0
period_size 1024
buffer_size 8192
rate 48000
channels 2
}
bindings {
0 0
1 1
}
}
pcm.input {
type dsnoop
ipc_key 1024
ipc_perm 0666
slave {
pcm "hw:0,1"
channels 2
period_size 1024
buffer_size 4096
rate 48000
periods 0
period_time 0
}
}
pcm.dsp0 {
type plug
slave.pcm "asym"
}Last edited by Maniaxx (2019-02-28 20:47:33)
sys2064
Offline
If pulseaudio-alsa's conf and some cursory reading through the default file in /usr/share/alsa/alsa.conf is any indication, you should be able to make it listable to programs that rely on this with
pcm.!default {
type plug
slave.pcm "asym"
hint {
show on
description "Default device"
}
}Last edited by V1del (2019-02-28 21:08:01)
Offline
Shows up in 'aplay -L' as well. Thanks!
$ aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
jack
JACK Audio Connection Kit
pulse
PulseAudio Sound Server
default
Default device
sysdefault:CARD=Audigy2
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
Default Audio Device
front:CARD=Audigy2,DEV=0
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
Front speakers
[...]Edit:
Even though... when i set 'defaults.namehint.showall on' (and disable the explicit 'hint') i get the output below. Looks like its already set by default. Just not visible.
$ aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
jack
JACK Audio Connection Kit
pulse
PulseAudio Sound Server
default
asym
output
input
dsp0
sysdefault:CARD=Audigy2
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
Default Audio Device
front:CARD=Audigy2,DEV=0
SB Audigy 2 ZS [SB0350], ADC Capture/Standard PCM Playback
Front speakersLast edited by Maniaxx (2019-02-28 21:49:22)
sys2064
Offline
Well yeah you can theoretically list every pcm, that would include a lot of the ones that are usually only used as intermediaries and would clutter up that list with potential disfunct entries, which is probably why it's set up like that by default.
Offline