LINUX.ORG.RU

pipewire в Debian. Не все работает.

 ,


0

1

Что то не получается заставить корректно работать pipewire в debian12
При обновлении оно само подтялулось, но не заработало. Стал разбираться, прожевал инструкцию на https://wiki.debian.org/PipeWire#Debian_12. Потом прожевал еще много разных мануалов.
По пакетам вроде все стоит что надо:
i gstreamer1.0-pipewire - GStreamer 1.0 plugin for the PipeWire multimedia server
i libpipewire-0.3-0 - служба для обработки аудио и видео в реальном времени — библиотеки
i A libpipewire-0.3-common - libraries for the PipeWire multimedia server - common files
i libpipewire-0.3-modules - libraries for the PipeWire multimedia server - modules
i A libwireplumber-0.4-0 - Shared libraries for WirePlumber
i pipewire - служба для обработки аудио и видео в реальном времени
i A pipewire-alsa - PipeWire ALSA plugin
i pipewire-audio - recommended set of PipeWire packages for a standard audio desktop use
i pipewire-bin - служба для обработки аудио и видео в реальном времени — утилиты
i pipewire-jack - PipeWire JACK plugin
i pipewire-libcamera - PipeWire libcamera plugin
i pipewire-pulse - PipeWire PulseAudio daemon
i wireplumber - modular session / policy manager for PipeWire


По итогу - железно все работает, но не умеет притворятся пульсой что критично.

любое обращение к pulse отвергается
pactl stat
Connection failure: Connection refused


1. Проблему железа исключаем - прекрасно работают aplay и pw-play
2. wpctl status
PipeWire 'pipewire-0' [0.3.65, griz@pc, cookie:3732000604]
└─ Clients:
31. WirePlumber [0.3.65, griz@pc, pid:2001]
32. WirePlumber [export] [0.3.65, griz@pc, pid:2001]
33. pipewire [0.3.65, griz@pc, pid:1998]
55. xdg-desktop-portal [0.3.65, griz@pc, pid:2768]
56. Telegram [0.3.65, griz@pc, pid:7618]
57. wpctl [0.3.65, griz@pc, pid:8062]

Audio
├─ Devices:
│ 40. CMI8788 [Oxygen HD Audio] (Virtuoso 100 (Xonar Essence STX)) [alsa]
│ 41. Renoir Radeon High Definition Audio Controller [alsa]
│ 42. Family 17h/19h HD Audio Controller [alsa]

├─ Sinks:
│ * 47. CMI8788 [Oxygen HD Audio] (Virtuoso 100 (Xonar Essence STX)) Аналоговый стерео [vol: 0.41]
│ 49. Renoir Radeon High Definition Audio Controller Digital Stereo (HDMI 2) [vol: 0.40]

├─ Sink endpoints:

├─ Sources:
│ * 48. CMI8788 [Oxygen HD Audio] (Virtuoso 100 (Xonar Essence STX)) Аналоговый стерео [vol: 1.00]

├─ Source endpoints:

└─ Streams:

Video
****

Settings
└─ Default Configured Node Names:
0. Audio/Sink alsa_output.pci-0000_07_04.0.analog-stereo
1. Audio/Source alsa_input.pci-0000_07_04.0.analog-stereo

3. systemctl status --user pipewire pipewire.socket pipewire-pulse pipewire-pulse.socket wireplumber
● pipewire.service - PipeWire Multimedia Service
Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: enabled)
Active: active (running) since Wed 2023-09-06 11:26:18 MSK; 31min ago
TriggeredBy: ● pipewire.socket
Main PID: 1999 (pipewire)
Tasks: 2 (limit: 37707)
Memory: 6.6M
CPU: 70ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
└─1999 /usr/bin/pipewire

сен 06 11:26:18 pc systemd[1967]: Started pipewire.service - PipeWire Multimedia Service.

● pipewire.socket - PipeWire Multimedia System Socket
Loaded: loaded (/usr/lib/systemd/user/pipewire.socket; enabled; preset: enabled)
Active: active (running) since Wed 2023-09-06 11:26:18 MSK; 31min ago
Triggers: ● pipewire.service
Listen: /run/user/1000/pipewire-0 (Stream)
CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/pipewire.socket

сен 06 11:26:18 pc systemd[1967]: Listening on pipewire.socket - PipeWire Multimedia System Socket.

● pipewire-pulse.service - PipeWire PulseAudio
Loaded: loaded (/etc/xdg/systemd/user/pipewire-pulse.service; enabled; preset: enabled)
Active: active (running) since Wed 2023-09-06 11:26:18 MSK; 31min ago
TriggeredBy: ● pipewire-pulse.socket
Main PID: 1998 (pipewire-pulse)
Tasks: 2 (limit: 37707)
Memory: 3.0M
CPU: 5ms
CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/pipewire-pulse.service
└─1998 /usr/bin/pipewire-pulse

сен 06 11:26:18 pc systemd[1967]: Started pipewire-pulse.service - PipeWire PulseAudio.

● pipewire-pulse.socket - PipeWire PulseAudio
Loaded: loaded (/etc/xdg/systemd/user/pipewire-pulse.socket; enabled; preset: enabled)
Active: active (running) since Wed 2023-09-06 11:26:18 MSK; 31min ago
Triggers: ● pipewire-pulse.service
Listen: /run/user/1000/pulse/native (Stream)
CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/pipewire-pulse.socket

сен 06 11:26:18 pc systemd[1967]: Listening on pipewire-pulse.socket - PipeWire PulseAudio.

● wireplumber.service - Multimedia Service Session Manager
Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
Active: active (running) since Wed 2023-09-06 11:26:18 MSK; 31min ago
Main PID: 2001 (wireplumber)
Tasks: 7 (limit: 37707)
Memory: 26.3M
CPU: 169ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
└─2001 /usr/bin/wireplumber

сен 06 11:26:18 pc systemd[1967]: Started wireplumber.service - Multimedia Service Session Manager.
сен 06 11:26:18 pc wireplumber[2001]: [0:00:14.888727944] [2001] WARN IPAManager ipa_manager.cpp:154 No IPA found in '/usr/lib/x86_64-linux-gnu/libcamera'
сен 06 11:26:18 pc wireplumber[2001]: [0:00:14.888762027] [2001] INFO Camera camera_manager.cpp:299 libcaдля гномаmera v0.0.3
сен 06 11:26:19 pc wireplumber[2001]: GetManagedObjects() failed: org.freedesktop.DBus.Error.NameHasNoOwner
сен 06 11:26:19 pc wireplumber[2001]: <WpSiAudioAdapter:0x5638bf9d9040> Object activation aborted: proxy destroyed
сен 06 11:26:19 pc wireplumber[2001]: <WpSiAudioAdapter:0x5638bf9d9040> failed to activate item: Object activation aborted: proxy destroyed

★★

Последнее исправление: griz (всего исправлений: 2)

Выяснить как это сделано в Бубунте и сравнить? В виртуалку там поставить. Но конечно сначала какую-нибудь archwiki покурить, но ты сказал, что уже.

В Бубунте уже пару релизов эта Пипка заводится, и работает в принципе..

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

Да, пример бубунты тоже был изучен, виртуалку не ставил, но почитывал. У меня все так же красиво - сервисы стартуют, логи чистые.
Подозреваю что если новый дебиан с нуля поставить то тоже будет работать из коробки, иначе проблема была бы тотальной и обсуждаемой. Тут скорее при обновлении что то не корректно встало.
Да и сам pipewire работает, проблема где то в сопряжении с pulsaudio и теми кто его хочет.

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

под рукой бубунты нет, потом смогу глянуть.
просто я в принципе не особо интересовался, в чём вообще заключается механизм эмуляции (?) пульсы.

видимо что-то не так при обновлении, но по логике не должно быть сложно допилить руками

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

так то Wireplumber вроде работает, wpctl говорит что все хорошо, руками подключенный mpd через пипку играет отлично.


удалил
то же самое но в профиль:

● wireplumber.service - Multimedia Service Session Manager
Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
Active: active (running) since Wed 2023-09-06 16:59:31 MSK; 6s ago
Main PID: 29056 (wireplumber)
Tasks: 5 (limit: 37707)
Memory: 11.1M
CPU: 141ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
└─29056 /usr/bin/wireplumber

сен 06 16:59:31 pc systemd[1967]: Started wireplumber.service - Multimedia Service Session Manager.
сен 06 16:59:31 pc wireplumber[29056]: SPA handle 'api.libcamera.enum.manager' could not be loaded; is it installed?
сен 06 16:59:31 pc wireplumber[29056]: PipeWire's libcamera SPA missing or broken. libcamera not supported.
сен 06 16:59:32 pc wireplumber[29056]: GetManagedObjects() failed: org.freedesktop.DBus.Error.NameHasNoOwner
сен 06 16:59:32 pc wireplumber[29056]: <WpPortalPermissionStorePlugin:0x55944c265450> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera

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

«Штабильный Дебьян», говорили они, «обновляюсь без проблем», утверждали мне именитые лоровцы...

Честно, не знаю. Дурацкое предположение - удалить gnomecamera? Но это было бы вообще странно.

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

там в конфигах можно убрать желание камеры. Получается вот так
systemctl --user status wireplumber
● wireplumber.service - Multimedia Service Session Manager
Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
Active: active (running) since Wed 2023-09-06 17:36:41 MSK; 4min 35s ago
Main PID: 35870 (wireplumber)
Tasks: 4 (limit: 37707)
Memory: 9.0M
CPU: 136ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
└─35870 /usr/bin/wireplumber

сен 06 17:36:41 pc systemd[1967]: Started wireplumber.service - Multimedia Service Session Manager.
сен 06 17:36:42 pc wireplumber[35870]: GetManagedObjects() failed: org.freedesktop.DBus.Error.NameHasNoOwner

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

фигня у меня на Бубунте так же

пока нет идей, что у тебя не так. Я со времени появления pw особо не вникал. Странно, что вроде всё на месте.

может с чистым хомяком попробовать… ~/.config/pulse/ нет лишнего?

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

не, такого пути вообще нет. Да и пульсы то нет, она конфликтует с pipewire-audio и автоматом удаляется.
Правда я пробовал оставлять пульсу и не ставить pipewire-audio, результат такой же.

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

aptitude search pulse | grep -e ^i
i gstreamer1.0-pulseaudio - GStreamer plugin for PulseAudio (Transitional package)
i libpulse-mainloop-glib0 - клиентские библиотеки PulseAudio (поддержка glib)
i libpulse0 - клиентские библиотеки PulseAudio
i libpulse0:i386 - клиентские библиотеки PulseAudio
i libpulsedsp - PulseAudio OSS pre-load library
i libsox-fmt-pulse - SoX PulseAudio format I/O library
i pipewire-pulse - PipeWire PulseAudio daemon
i pulseaudio-utils - инструменты командной строки для звукового сервера PulseAudio

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

«Штабильный Дебьян»

ну в trixie умвр
upd:

wireplumber[3757]: PipeWire's libcamera SPA missing or broken. libcamera not supported.

с другой стороны не помню чтобы были какие-то проблемы со звуком в bookworm

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

тут такое дело, bookworm появился не на пустом месте, система живет уже лет 10 наверно перезежая на новое железо и изредка обновляясь. Там могут быть больные хвосты, да и как правило бывают после обновления, но так что бы никаких наводок что сломалось не бывало. Всегда что то не очень сложно правилось.

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

нет там ничего. совсем.
ls ~/.config/pipewire
ls: невозможно получить доступ к '/home/griz/.config/pipewire': Нет такого файла или каталога

видимо по той-же причине
A notable change compared to Debian 11 is that the configuration directory has been moved from /etc/pipewire/ to /usr/share/pipewire/: you may want to get rid of the former to avoid confusion.

подтягивает конфиг из /usr/share/pipewire/

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

Не могу сейчас посмотреть, я снёс Дебьян на рабочем компе, не выдержал других проблем. Ради ржачки поставил пока MX Linux, но там такое... Хорошо у меня комп которым можно баловаться даже на работе :)

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

Да, дома только Манджара, а на работе... Всё надумываю поставить себе туда OpenMaint. Даже не представляю почему. Дурость. Скоро накачу Манджару. Просто я ещё не набаловался.

R_He_Po6oT ★★★★★
()
Ответ на: комментарий от griz
$ tree /usr/lib/x86_64-linux-gnu/{pulse*,pipewi*}
/usr/lib/x86_64-linux-gnu/pulseaudio
├── libpulsecommon-16.1.so
└── libpulsedsp.so
/usr/lib/x86_64-linux-gnu/pipewire-0.3
├── libpipewire-module-access.so
├── libpipewire-module-adapter.so
├── libpipewire-module-avb.so
├── libpipewire-module-client-device.so
├── libpipewire-module-client-node.so
├── libpipewire-module-combine-stream.so
├── libpipewire-module-echo-cancel.so
├── libpipewire-module-fallback-sink.so
├── libpipewire-module-ffado-driver.so
├── libpipewire-module-filter-chain-lv2.so
├── libpipewire-module-filter-chain.so
├── libpipewire-module-filter-chain-sofa.so
├── libpipewire-module-jackdbus-detect.so
├── libpipewire-module-jack-tunnel.so
├── libpipewire-module-link-factory.so
├── libpipewire-module-loopback.so
├── libpipewire-module-metadata.so
├── libpipewire-module-netjack2-driver.so
├── libpipewire-module-netjack2-manager.so
├── libpipewire-module-pipe-tunnel.so
├── libpipewire-module-portal.so
├── libpipewire-module-profiler.so
├── libpipewire-module-protocol-native.so
├── libpipewire-module-protocol-pulse.so
├── libpipewire-module-protocol-simple.so
├── libpipewire-module-pulse-tunnel.so
├── libpipewire-module-raop-discover.so
├── libpipewire-module-raop-sink.so
├── libpipewire-module-rtkit.so
├── libpipewire-module-rtp-sap.so
├── libpipewire-module-rtp-session.so
├── libpipewire-module-rtp-sink.so
├── libpipewire-module-rtp-source.so
├── libpipewire-module-rt.so
├── libpipewire-module-session-manager.so
├── libpipewire-module-spa-device-factory.so
├── libpipewire-module-spa-device.so
├── libpipewire-module-spa-node-factory.so
├── libpipewire-module-spa-node.so
├── libpipewire-module-vban-recv.so
├── libpipewire-module-vban-send.so
└── libpipewire-module-zeroconf-discover.so


на всякий случай и модули pipewire
ну и пакеты:

$ dpkg --get-selections | egrep 'pulse|pipewire'
gstreamer1.0-pipewire:amd64			install
gstreamer1.0-pulseaudio:amd64			install
libcanberra-pulse:amd64				install
libkf5pulseaudioqt3:amd64			install
libkpipewire5					install
libkpipewiredmabuf5				install
libkpipewirerecord5				install
libpipewire-0.3-0:amd64				install
libpipewire-0.3-common				install
libpipewire-0.3-modules:amd64			install
libpulse-mainloop-glib0:amd64			install
libpulse0:amd64					install
libpulse0:i386					install
libpulsedsp:amd64				install
pipewire:amd64					install
pipewire-alsa:amd64				install
pipewire-audio					install
pipewire-bin					install
pipewire-pulse					install
pulseaudio-utils				install
qml-module-org-kde-pipewire			install
xfce4-pulseaudio-plugin:amd64			install

$wpctl status
...
Settings
└─ Default Configured Node Names:
0. Audio/Sink alsa_output.usb-FiiO_FiiO_BTR7-00.iec958-stereo

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

Alsamixer работает.
Да и вообще звук то работает. Mpd руками воткнул вывод через pipewire и он работает нормально.
Aplay тоже нормально. Но многим приложениям надо пульсу, а вот эта эмуляция не работает.

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

нет, не пробует даже
connect(14, {sa_family=AF_INET, sin_port=htons(4713), sin_addr=inet_addr(«127.0.0.1»)}, 16) = -1 EINPROGRESS (Операция выполняется в данный момент)

там есть какая то ошибка по сокетам
strace pactl info 2>&1 | grep SOCK
sendto(4, «W», 1, MSG_NOSIGNAL, NULL, 0) = -1 ENOTSOCK (Операция для сокета применена к не-сокету)
socketpair(AF_UNIX, SOCK_DGRAM, 0, [8, 9]) = 0
socketpair(AF_UNIX, SOCK_DGRAM, 0, [11, 13]) = 0
socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 14
setsockopt(14, SOL_SOCKET, SO_PRIORITY, [6], 4) = 0
getsockopt(14, SOL_SOCKET, SO_ERROR, [ECONNREFUSED], [4]) = 0

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

strace -o vyhlop.txt уж тогда. замучаешься grep’ать.

лучше запустить pactl с переменными среды и посмотреть не полегчает ли

PULSE_SERVER Defines where the server is. It takes a protocol prefix like unix: or tcp followed by the path or IP of the server. Example: unix:/home/pulse/native-sock.

PULSE_COOKIE Point this to the location of a file that contains the random cookie generated by PulseAudio. This file will be read by clients and its content sent to the server, thus the file has to be readable by all audio clients. It does not need to be the same file, as long as its content matches the one the daemon uses.

или запустить pipewire-pulse с каким-нибудь debug выхлопом, если у него есть такое.

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

значит у тебя какой-то кастомный конфиг пульсы, она хочет подключиться к 127.0.0.1:4713 вместо сокета пайпвари. Проверь, что у тебя в ~/.config/pulse и /etc/pulse, а также в переменных среды.

У меня выхлоп strace выглядит так:

$ strace pactl info 2>&1 | grep connect
connect(8, {sa_family=AF_UNIX, sun_path="/run/user/1000/pulse/native"}, 110) = 0

попробуй запустить

$ PULSE_RUNTIME_PATH=/run/user/1000/pulse pactl info
Lrrr ★★★★★
()
Последнее исправление: Lrrr (всего исправлений: 1)
Ответ на: комментарий от Lrrr

да нет у меня кастомного конфига. Вообще никакого нет, и путей ~/.config/pulse и /etc/pulse тоже нет.
Что там должно быть на живой системе? Когда pipewire-audio ставил он подтер пульсу из системы полностью, остались только утилиты.

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

Как оказалось зада решена только на половину. Звук пошел, все кто хочет pulseaudio играют музыку.
pavucontrol подключается, красиво дрыгается инидикаторами и вообще реагирует на происходящее - правильно показывает потоки, уровни.
Но ничего не регулирует. Можно двигать и переключать все в любых комбинациях - это не влияет на уровни громкости.
alsamixer ожидаемо работает хорошо.

pipewire видит подключения

PipeWire 'pipewire-0' [0.3.65, griz@pc, cookie:623807006]
└─ Clients:
31. WirePlumber [0.3.65, griz@pc, pid:1965]
32. WirePlumber [export] [0.3.65, griz@pc, pid:1965]
33. pipewire [0.3.65, griz@pc, pid:1962]
55. GNOME Volume Control Media Keys [0.3.65, griz@pc, pid:2434]
56. GNOME Shell Volume Control [0.3.65, griz@pc, pid:2271]
57. xdg-desktop-portal [0.3.65, griz@pc, pid:2722]
58. Music Player Daemon [0.3.65, griz@pc, pid:1961]
64. wpctl [0.3.65, griz@pc, pid:9518]
81. speech-dispatcher-dummy [0.3.65, griz@pc, pid:5922]
90. Firefox [0.3.65, griz@pc, pid:5179]

но
как осуществляется обратная связь?

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

Посмотри как оформляется код на ЛОРе, https://www.linux.org.ru/help/markdown.md.

Хотя учитывая как давно зарегался, должен был и так знать.

upd. Пример. Результат будет выглядеть так же красиво, как здесь pipewire в Debian. Не все работает. (комментарий).

```bash
git pull && sbt compile
```

krasnh ★★★★
()
Последнее исправление: krasnh (всего исправлений: 3)