Решено: Вопросы по Pipewire (Решение проблем с использованием Pipewire)

Обсудить вопросы и проблемы со звуком

Модератор: Модераторы разделов

Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Решено: Вопросы по Pipewire

Сообщение ormorph »

Всем привет!
Тут пользовался программой qpwgraph и там можно делать связи между источником и приемником:
Spoiler
Изображение
Spoiler
Изображение
Вот и заинтересовало, как это можно сделать через консольные программы.
Могу получить информацию о портах:

Shell

$ pw-cli ls Port
А вот как сделать соединение с устройствами не знаю. Такое не работает:

Shell

$ pw-cli create-link 56 1 49 1
Похоже что это совсем не то. Знает ли кто как это провернуть?
Последний раз редактировалось ormorph 19.04.2023 10:47, всего редактировалось 1 раз.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Вопросы по Pipewire

Сообщение ormorph »

Хм, уже нашёл решение. Просто нужно использовать для этого pw-link.
Вывод приёмников:

Shell

$ pw-link -i
Вывод источников звука:

Shell

$ pw-link -o
Использование:

Shell

$ pw-link <источник> <приёмник>
Всё оказалось на много проще. Чтобы наоборот убрать связь, то первым параметром должен быть ключик -d. Что то я на этом pw-cli зациклился.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Решено: Вопросы по Pipewire

Сообщение ormorph »

Продолжаю, пригодится для памяти.
Если нужно что бы блютуз не падал при переключении tty терминалов, то нужно добавить в файл /etc/wireplumber/bluetooth.lua.d/89-gentoo-sound-server-enable-bluez-monitor.lua(у вас должно быть свое название) строчку:

Код: Выделить всё

bluez_monitor.properties["with-logind"] = false
У меня например в этом файле всего две строки:

Shell

bluez_monitor.enabled = true
bluez_monitor.properties["with-logind"] = false
Пример из Gentoo для нескольких пользователей, работает только с клиентами pulseaudio и нужно ещё добавить переменную PULSE_SERVER, с указанием адреса. Для локальной работы с несколькими пользователями смотреть /run/user/$UID/pipewire-0, не тяжело догадаться что нужно сделать для каждого пользователя...
Что бы иметь возможность подключаться из консоли к блютуз(звук), то нужно запустить pipewire в консоли примерно так:

Shell

$ dbus-launch gentoo-pipewire-launcher &
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Решено: Вопросы по Pipewire

Сообщение ormorph »

Добавил ебилд для Gentoo pipewiredaemon, запускает демон под пользователем pipewire. Если добавить при запуске системы строчки:
Spoiler

Код: Выделить всё

if ! [[ -f "/run/user/$UID/pipewire-0" ]] ; then
        ln -sf /run/user/509/pipewire-0 "/run/user/$UID/pipewire-0"
fi
для каждого пользователя в файлы автозапуска. Например для сеанса tty это будет ~/.bash_profile и т.д. Тогда звук будет работать для каждого пользователя. Звук через пульсу уже будет работать, но для работы таких клиентов как pavucontrol, нужно будет пользоваться инструкцией для многопользовательского режима с добавлением глобальной переменной PULSE_SERVER. Демон нужен только для openrc, так же нужно удалить файл /etc/xdg/autostart/pipewire.desktop. Демон необходим для многопользовательского режима.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Решено: Вопросы по Pipewire

Сообщение ormorph »

Добавил ебилд новой версии pipewiredaemon-0.2, для Gentoo. Теперь ни чего править не надо, в пользовательских каталогах. Звук теперь будет доступен для всех пользователей. Единственно чтобы при переключении сеанса звук bluetooth не падал нужно добавить строчку в файл /etc/wireplumber/bluetooth.lua.d/89-gentoo-sound-server-enable-bluez-monitor.lua:

Shell

bluez_monitor.properties["with-logind"] = false
Теперь это делается просто.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Решено: Вопросы по Pipewire

Сообщение ormorph »

Обновлена версия pipewiredaemon-0.3, думаю уже больше править не буду, так как уже более менее поведение удовлетворяет. Теперь tcp для переменной PULSE_SERVER сменён на unix сокет, так как на tcp хоть информация pulseaudio получалась, но изменить параметры было нельзя. Теперь регулировка через такие клиенты pulseaudio как pavucontrol работает. Так же для демона используется своя домашняя директория /var/lib/pipewire, что бы настройки изменённые через pavucontrol и т.п. после перезагрузки сохранялись.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2913
ОС: Gentoo

Re: Решено: Вопросы по Pipewire

Сообщение ormorph »

Обновился Pipewire, у демона перестал работать звук через bluetooth. Для решения проблемы нужно добавить строчку в файл /etc/wireplumber/wireplumber.conf.d/gentoo-sound-server-enable-audio-bluetooth.conf: monitor.bluez.seat-monitoring = disabled
Пример:

Код: Выделить всё

wireplumber.profiles = {
  main = {
    hardware.audio = required
    hardware.bluetooth = required
    monitor.bluez.seat-monitoring = disabled
  }
}
Спасибо сказали: