For some time I experience a failed pulseaudio service after logging in (systemctl --user status pulseaudio: Failed to start Sound Service). The system is a Dell XPS 13 using a docking station. I can start pulseaudio manually from the terminal with pulseaudio --start and sometimes the interal audio is detected. I usually can connect a Bluetooth headset after some retries. Logging out and in again might recover the internal audio (which I need) but this is not reproducible. I always have to start pulseaudio manually.
Using alsamixer I can see all audio devices (internal, audio from docking station, and bluetooth headset, if connected). dmesg does not show sound related error messages.
Unfortunately, I cannot get anywhere with the failed pulseaudio service. journalctl does not reveal anything and I am stuck as to isolate the problem.
The context is that I recently had to start using the docking station. IIRC, the sound problems I have now have not occurred immediately after using the docking station but definitely have not occurred before that. Maybe related or not, I use a bluetooth keyboard as well, which no longer connects on start-up (I have bluez-auto-enable-devices installed). This used to work before. As of now, I have to do a systemctl restart bluetooth and than connect using the KDE bluetooth widget (here I see a Bluetooth: hci1: command 0x0c52 tx timeout from dmesg. The same dongle works without problems in another system).
Thank you in advance for any help.
uname -a
Linux sheep-4 5.3.18-lp152.75-preempt #1 SMP PREEMPT Wed May 5 09:22:56 UTC 2021 (16c42c8) x86_64 x86
_64 x86_64 GNU/Linux
System is updated as of the date of this post. Packman packages are in use for non-free codecs.
Thanks for the suggestion. However, chosing Generic offers only the choice of sound card model “USB audio”. The sound card in question is not a USB model though and configuration fails.
Yast reports an error and demsg shows:
8339.570631] usbcore: deregistering interface driver snd-usb-audio
8343.074626] Lockdown: y2start: /dev/mem,kmem,port is restricted; see man kernel_lockdown.7
8343.074647] Lockdown: y2start: /dev/mem,kmem,port is restricted; see man kernel_lockdown.7
8343.077409] Lockdown: y2start: /dev/mem,kmem,port is restricted; see man kernel_lockdown.7
8380.829627] usb 3-1.1.3: 3:1: cannot get freq at ep 0x84
8381.083491] usbcore: registered new interface driver snd-usb-audio
When I try to configure the soundcard from Yast (Sunrise Point-LP HD Audio), i get in dmesg:
8616.104643] snd_soc_skl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040380
8616.113478] snd_soc_skl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915>
[ 8616.145280] HDMI HDA Codec ehdaudio0D2**: Max dais supported: 3**
8616.146322] snd_soc_skl 0000:00:1f.3**: Direct firmware load for 9d71-INTEL-EDK2-2-tplg.bin failed **>
8616.146324] snd_soc_skl 0000:00:1f.3: tplg fw 9d71-INTEL-EDK2-2-tplg.bin load failed with -2, fal>
8616.146330] snd_soc_skl 0000:00:1f.3**: Direct firmware load for dfw_sst.bin failed with error -2**
8616.146331] snd_soc_skl 0000:00:1f.3: Fallback tplg fw dfw_sst.bin load failed with -2
8616.146332] snd_soc_skl 0000:00:1f.3: Failed to init topology!
8616.146332] snd_soc_skl 0000:00:1f.3: ASoC: failed to probe component -2
8616.146342] skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: failed to instantiate card -2
8616.146351] skl_hda_dsp_generic**: probe of skl_hda_dsp_generic failed with error -2
**
I know this thread. Unfortunately, this is not a solution for me as I need the microphone more than the speaker. It used to work, so there should be a way to configure it again.
I thought that I had found a solution by configuring an additional soundcard as generic which would capture the USB-audio from the docking station. Everything worked, except that microsoft teams wouldn’t seen any soundcard. I believe this might be connected with the initial failure of pulseaudio to start which I will investigate next.
The culprit for the failed pulseaudio startup on login seems to be
E: [pulseaudio] module-udev-detect.c: inotify_init1() failed: Zu viele offene Dateien
E: [pulseaudio] module.c: Failed to load module "module-udev-detect" (argument: ""): initialization failed.
as shown in the logs above. This prevents pulseaudio from finding the devices and somehow leads to a failure of the systemd service. Starting manually later solves this issue (with pulseaudio --start, although /usr/bin/pulseaudio -v --daemonize=no still fails most of the time). Maybe there is open file congestion on login?
The state so far is that adding another Generic/USB sound card in Yast leads to a seemingly stable detection of sound cards in alsamixer. Manually starting pulseaudio recovers sound for most applications. One problematic application is MS teams which does not detect camera/sound. This used to work as well but seems unrelated.
Thanks for the help so far. Still further input is appreciated.
I just realized that pipewire got installed as a dependency of Firefox/Thunderbird. This look like a plausible explanation of the problem. Pipewire service is running, pulseaudio failed. How can I get rid of pipewire withouth deinstalling Firefox/Thunderbird?
I have in some games noises/lag in newer OpenSUSE Tumbleweed systems. I thought it was made by piperwire, because it lately being delivered by default, but I checked and pulseaudio working.
Pipewire does not seem to be part of the problem. For now, I can reliably bring up sound when a generic USB sound card is configured (for the docking station). The Realtek sound card is showing as unconfigured and will raise an error when trying to configure. It will still work. I think, it is only the DSP part that is affected.
I still have problems to get sound working though, but it is not a hardware/driver issue. Pulseaudio fails due to not detecting the sound card which in turn is caused by the udev system hitting a limit in the inotify system. Some processes during login seem to consume a lot of inotify file handles. I use inotifywait in several of my private systemd services, which I have to investigate. One disadvantage of systemd is the lack of clear place to access logs of the login process. If I find the culprit, I will report back.
For now, after login, I do
pkill inotify
pulseaudio --start
This recovers audio/camera for most applications (teams is an exception, you can switch to the web based teams service).