LINUX.ORG.RU

Через 20 минут после загрузки системы, PulseAudio само перенастраивается (Debian 12 без PipeWire)

 , , ,


0

2

Привет, уже который день мучаюсь от того, что PulseAudio ведет себя неадекватно.

Имеется Debian 12 с удаленным PipeWire (ведь все знают что в Debian 12 по-дефолту зачем-то ставится и PulseAudio и PipeWire, и они дерутся друг с другом за устройства). Debian запущен на ноуте HP 450, карта только та которая на борту, никаких внешних звуковух нет.

После загрузки системы, через ~20 минут, если пользоваться приложениями которые воспроизводят звук, что-то происходит с PulseAudio. Например, VLC перестает воспроизводить звук и пишет ошибки:

[00007ff680c17bf0] avcodec decoder: Using OpenGL/VAAPI backend for VDPAU for hardware decoding
[00005624e12f8310] pulse audio output error: overflow, flushing
[00005624e12f8310] pulse audio output error: overflow, flushing

Я заморочился, и снял вывод утилит с общей информацией об звуковой системе до и после отвала звука:
alsa-info
pacmd list-sinks
pacmd list-sources

Вот ссылки на консольный вывод.

До: https://webhamster.ru/mytetrashare/index/mtb0/1755634406ol8t7ca9if
После: https://webhamster.ru/mytetrashare/index/mtb0/1755637817tjfk5n8hov

Можно сравнить через Meld или чем там удобнее.

И отличия таки есть:
437c437
<   Converter: stream=0, channel=0
---
>   Converter: stream=5, channel=0

448c448
<   Converter: stream=0, channel=0
---
>   Converter: stream=5, channel=0

454c454
<   Converter: stream=0, channel=0
---
>   Converter: stream=1, channel=0

673,674c673,674
< crw-rw----+ 1 root audio 116,  3 Aug 19 23:02 /dev/snd/pcmC0D0c
< crw-rw----+ 1 root audio 116,  2 Aug 19 23:09 /dev/snd/pcmC0D0p
---
> crw-rw----+ 1 root audio 116,  3 Aug 20 00:05 /dev/snd/pcmC0D0c
> crw-rw----+ 1 root audio 116,  2 Aug 20 00:01 /dev/snd/pcmC0D0p

693c693
<   Subdevices: 1/1
---
>   Subdevices: 0/1

975,976c975,976
<                 value.0 0
<                 value.1 0
---
>                 value.0 3
>                 value.1 4

1309c1309
<         suspend cause: IDLE
---
>         suspend cause: (none)

1320c1320
<         sample spec: s16le 2-канальный 4410
---
>         sample spec: s16le 2-канальный 4800

1324,1325c1324,1325
<         linked by: 0
<         configured latency: 0.00 ms; range is 0.50 .. 2000.00 ms
---
>         linked by: 1
>         configured latency: 0.00 ms; range is 0.50 .. 1837.50 ms

1381c1380
<         suspend cause: IDLE
---
>         suspend cause: (none)

1390c1389
<         sample spec: s16le 2-канальный 4410
---
>         sample spec: s16le 2-канальный 4800

1395c1394
<         configured latency: 0.00 ms; range is 0.50 .. 2000.00 ms
---
>         configured latency: 0.00 ms; range is 0.50 .. 1837.50 ms

Сверху - было, снизу - стало.

Вот. Что и где надо крутить, чтобы звук нормально работал? Как понять, из-за чего происходит перенастройка? И почему после этой перенастройки звук отваливается?



Перемещено hobbit из general

★★★★★
Ответ на: комментарий от anonymous

When using WirePlumber, the amount of required configuration to use PipeWire as your sound server is very minimal. In fact, the WirePlumber package recommends pipewire-pulse

А оно точно без пульсы работает? Ну или альсы, или джека?

Jeronimo ★★
()
Ответ на: комментарий от Jeronimo

Да, точно. PW полностью реализует API PulseAudio. За это отвечает пакет pupewire-pulse. Вроде даже сами разработчики рекомендуют пока использовать API PA вместо собственного, который менее удобен.

Использую PW в Debian уже года три-четыре, разницы не заметил. На удивление бесшовный для линуксового софта переход.

anonymous
()
Ответ на: комментарий от anonymous

Да, но в данном случае пульса- сервер, пайпвайр- клиент. Т.е. pipewire работает через пульсу. Может через альсу или джек. Пакеты pulseaudio и pipewire-pulse должны конфликтовать.

paru -S pulseaudio
разрешение зависимостей...
проверка конфликтов...
:: pulseaudio-17.0+r43+g3e2bb8a1e-1 and pipewire-pulse-1:1.4.7-1 >are in conflict. Remove pipewire-pulse? [y/N]

Jeronimo ★★
()
Ответ на: комментарий от Jeronimo

Да, но в данном случае пульса- сервер, пайпвайр- клиент. Т.е. pipewire работает через пульсу.

Нет, там вообще нет pulseaudio, если я правильно понимаю, о чём ты.

❯ fuser /run/user/1000/pulse/native 
/run/user/1000/pulse/native:  2756
❯ realpath /proc/2756/exe 
/usr/bin/pipewire
❯ pactl info 
Server String: /run/user/1000/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 99
Tile Size: 65472
User Name: sk
Host Name: snowfortress
Server Name: PulseAudio (on PipeWire 1.4.2)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.usb-FiiO_K3-00.analog-stereo
Default Source: alsa_output.usb-FiiO_K3-00.analog-stereo.monitor
Cookie: 731f:4648

Нет никакого смысла пускать PW через PA, он же его заменяет (ну, фактически уже).

anonymous
()
Ответ на: комментарий от vbcnthfkmnth123

Удали, оставь просто alsa, настрой и будет работать

Правда не всегда и с неудобствами. Но зато ты одержал маленькую победу над системой! :)

anonymous
()
Ответ на: комментарий от anonymous

Да норм на самом деле. Неудобно, если у тебя приложения которые требуют OSS, там придется дополнительно ставить слой совместимости, а так сойдет.

vbcnthfkmnth123 ★★★★★
()
Последнее исправление: vbcnthfkmnth123 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Нет никакого смысла пускать PW через PA, он же его заменяет (ну, фактически уже).

Server Name: PulseAudio (on PipeWire 1.4.2)

Вот тут pulse работает через pipewire

Jeronimo ★★
()
Ответ на: комментарий от vbcnthfkmnth123

а так сойдет

Ну хотя бы честно охарактеризовал положение дел. Оно сойдёт, когда у тебя, в идеале, одно звуковое устройство и минимум осложнений. Про Bluetooth я даже не вспоминаю, его у вас ещё не изобрели.

Неудобно, если у тебя приложения которые требуют OSS, там придется дополнительно ставить слой совместимости

Ну вот, а в случае с Pulseaudio/PipeWire есть утилита padsp, которая просто работает, в отличие от кривых модулей ядра. Для ALSA тоже было что-то такое, и оно тоже работало, но название не помню.

anonymous
()
Ответ на: комментарий от Jeronimo

Вот тут pulse работает через pipewire

Тут нет никакого Pulseaudio. Есть только libpulse, через которую клиенты обращаются к PipeWire, предоставляющему совместимый API.

anonymous
()
Ответ на: комментарий от vbcnthfkmnth123

Удали, оставь просто alsa, настрой и будет работать

И что делать, если нужное мне ПО требует только PulseAudio?

> ldd projectM | grep alsa

> ldd projectM | grep pulse
        libpulse.so.0 => /lib/x86_64-linux-gnu/libpulse.so.0 (0x00007f283fa55000)
        libpulsecommon-16.1.so => /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-16.1.so (0x00007f283eb6c000)


Кроме того, в PulseAudio я пользуюсь перенаправлением потоками:

Как в Linux c PulseAudio услышать в наушниках звук, который подается на микрофонный вход?

Как ты понимаешь, классическое лоровское «этим не пользуйся, пользуйся другим потому что у меня лично работает» - не канает.

* * *

Мне нужно разобраться, почему в середине работы системы, в какой-то момент PulseAudio начинает иметь другую конфигурацию, которая не работает? Что происходит?

Я надеюсь, что если такое поведение отключу, то с той конфигурацией, которая возникает при старте системы, все что нужно будет продолжать работать.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Многое работает, некоторые фичи не реализованы. Про твою конкретную фичу ничего сказать не могу, посмотри в документации.

vbcnthfkmnth123 ★★★★★
()
Ответ на: комментарий от anonymous

Удали PulseAudio, поставь PipeWire.

Откуда уверенность, что PipeWire не будет так же перенастраиваться на лету что и PulseAudio? Может там какой-то еще пакет влияет, который перетыкает настройки звуковой подсистемы? Как это выяснить? Он может даже в зависимостях не упоминаться. Но что-то делает, из-за чего через ~20мин...1час настройки меняются.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Я не знаю, что у тебя там на самом деле творится. Могу только предложить перехватить сокет Pulseaudio, чтобы понять, откуда приходят изменения. Возможно, установлены какие-то эффекты, эквалайзеры или что-то ещё. Можно начать с apt rdepends libpulse0 --installed даже.

anonymous
()
Ответ на: комментарий от anonymous

Информация такая:

# apt rdepends libpulse0 --installed
libpulse0
Reverse Depends:
  Зависит: libkf5pulseaudioqt2 (>= 5.0.0~)
  Зависит: qemu-system-gui (>= 0.99.1)
  Зависит: avidemux-plugins (>= 0.99.1)
  Зависит: libfluidsynth2 (>= 0.99.1)
  Зависит: libavdevice58 (>= 0.99.1)
  Зависит: chromium (>= 0.99.1)
  Зависит: libpulse-dev (= 16.1+dfsg1-2+b1)
  Зависит: vlc-plugin-base (>= 0.99.4)
  Зависит: mpv (>= 0.99.4)
  Зависит: mplayer (>= 0.99.1)
  Зависит: gstreamer1.0-plugins-good (>= 2.0)
  Зависит: libavdevice60 (>= 0.99.1)
  Зависит: libavdevice58 (>= 0.99.1)
  Зависит: libdrumstick-rt-backends (>= 0.99.1)
  Зависит: avidemux-plugins (>= 0.99.1)
  Зависит: libasound2-plugins (>= 0.99.1-1~)
  Зависит: chromium (>= 0.99.1)
  Зависит: libwine (>= 0.99.1)
  Зависит: vlc-plugin-base (>= 1.0)
  Зависит: speech-dispatcher-audio-plugins (>= 0.99.1)
  Зависит: libsox-fmt-pulse (>= 0.99.1)
  Зависит: librtaudio6 (>= 0.99.1)
  Зависит: libqt5multimedia5-plugins (>= 0.99.1)
  Зависит: libqt5multimedia5 (>= 0.99.1)
  Зависит: libqt6multimedia6 (>= 5.0)
  Зависит: qemu-system-gui (>= 0.99.1)
  Зависит: libkf5pulseaudioqt3 (>= 5.0.0~)
  Зависит: pulseaudio-utils (= 16.1+dfsg1-2+b1)
  Зависит: pulseaudio (= 16.1+dfsg1-2+b1)
  Зависит: libpulsedsp (= 16.1+dfsg1-2+b1)
  Зависит: libpulse-mainloop-glib0 (= 16.1+dfsg1-2+b1)
  Зависит: libpipewire-0.3-modules (>= 0.99.1)
  Зависит: libphonon4qt5-4 (>= 0.99.1)
  Зависит: libpcaudio0 (>= 0.99.1)
  Зависит: pavucontrol (>= 15)
  Рекомендует: libopenal1 (>= 0.99.1)
  Зависит: mpv (>= 0.99.4)
  Зависит: mplayer (>= 0.99.1)
  Зависит: mpg123 (>= 0.99.1)
  Зависит: libsdl2-2.0-0 (>= 0.99.1)
  Зависит: libsdl1.2debian (>= 0.99.1)
  Зависит: libmikmod3 (>= 0.99.1)
  Зависит: libdrumstick-rt-backends (>= 0.99.1)
  Предлагает: libao4
  Зависит: hydrogen (>= 0.99.1)
  Зависит: libgvnc-1.0-0 (>= 0.99.1)
  Зависит: gstreamer1.0-plugins-good (>= 2.0)
  Зависит: libfluidsynth3 (>= 0.99.1)
  Зависит: chromium (>= 0.99.1)
  Зависит: libasound2-plugins (>= 0.99.1-1~)

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Вот у меня был запущен «pactl subscribe». В момент, когда произошел отвал звука, просто соединение завершилось:

> pactl subscribe
Событие «появление» в отношении клиента №9
Событие «удаление» в отношении клиента №9
Событие «появление» в отношении клиента №10
Событие «изменение» в отношении клиента №10
Событие «изменение» в отношении аудиоприёмника №0
Событие «изменение» в отношении источника №0
...
Событие «появление» в отношении клиента №21
Событие «изменение» в отношении клиента №21
Ошибка подключения: Соединение завершено

Еще, PulseAudio был запущен командой:
pulseaudio -k
pulseaudio -v --log-level=debug 2> ~/pulse_debug.log

Но в логе ничего в момент отваливания звука нет. Только строки, которые появились при старте команды:
I: [pulseaudio] main.c: setrlimit(RLIMIT_NICE, (31, 31)) failed: Операция не позволена
D: [pulseaudio] core-rtclock.c: Timer slack is set to 50 us.
D: [pulseaudio] core-util.c: RealtimeKit worked.
I: [pulseaudio] core-util.c: Successfully gained nice level -11.
I: [pulseaudio] main.c: This is PulseAudio 16.1
D: [pulseaudio] main.c: Compilation CFLAGS: Not yet supported on meson
D: [pulseaudio] main.c: Running on host: Linux x86_64 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07
)
D: [pulseaudio] main.c: Found 8 CPUs.
I: [pulseaudio] main.c: Page size is 4096 bytes
D: [pulseaudio] main.c: Compiled with Valgrind support: no
D: [pulseaudio] main.c: Running in valgrind mode: no
D: [pulseaudio] main.c: Running in VM: no
D: [pulseaudio] main.c: Running from build tree: no
D: [pulseaudio] main.c: Optimized build: yes
D: [pulseaudio] main.c: All asserts enabled.
I: [pulseaudio] main.c: Machine ID is f81e42c90a044f8d91fd082ae11642be.
I: [pulseaudio] main.c: Session ID is 2.
I: [pulseaudio] main.c: Using runtime directory /run/user/1000/pulse.
I: [pulseaudio] main.c: Using state directory /home/xi/.config/pulse.
I: [pulseaudio] main.c: Using modules directory /usr/lib/pulse-16.1+dfsg1/modules.
I: [pulseaudio] main.c: Running in system mode: no
E: [pulseaudio] pid.c: Daemon already running.
E: [pulseaudio] main.c: Произошла ошибка при выполнении pa_pid_file_create().

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от anonymous

А вот лог сервиса в момент ошибки. Просто ресурс вдруг стал занят:

> journalctl -u --user pulseaudio.service
...
-- Boot 6ddf9024ba49410680f20b8a29665781 --
авг 20 11:28:32 hp450 systemd[1226]: Starting pulseaudio.service - Sound Service...
авг 20 11:28:33 hp450 systemd[1226]: Started pulseaudio.service - Sound Service.
авг 20 22:52:54 hp450 systemd[1226]: pulseaudio.service: Consumed 5.865s CPU time.
авг 20 22:52:56 hp450 systemd[1226]: Starting pulseaudio.service - Sound Service...
авг 20 22:52:56 hp450 systemd[1226]: Started pulseaudio.service - Sound Service.
авг 21 00:29:34 hp450 pulseaudio[56105]: Error opening PCM device front:0: Устройство или ресурс занято
авг 21 00:29:34 hp450 pulseaudio[56105]: Error opening PCM device front:0: Устройство или ресурс занято
авг 21 00:29:34 hp450 pulseaudio[56105]: Error opening PCM device front:0: Устройство или ресурс занято
авг 21 00:29:49 hp450 pulseaudio[56105]: Error opening PCM device front:0: Устройство или ресурс занято
...

А сокет вообще в это время продолжал работать:
> journalctl -u --user pulseaudio.socket
-- Boot 6ddf9024ba49410680f20b8a29665781 --
авг 20 11:28:32 hp450 systemd[1226]: Listening on pulseaudio.socket - Sound System.

Xintrea ★★★★★
() автор топика
Последнее исправление: Xintrea (всего исправлений: 2)
Ответ на: комментарий от Xintrea

fuser -v /dev/snd/* должно показать негодяя. Это либо приложение, которое, лезет в ALSA напрямую не через default (которое должен предоставлять pulseaudio), либо ещё один pulseaudio.

anonymous
()
Ответ на: комментарий от Xintrea

Кроме того, в PulseAudio я пользуюсь перенаправлением потоками Как ты понимаешь, классическое лоровское «этим не пользуйся, пользуйся другим потому что у меня лично работает» - не канает.

https://docs.pipewire.org/page_module_loopback.html

anonymous
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.