Решение проблем PulseAudio и PipeWire: различия между версиями
Строка 148: | Строка 148: | ||
Воспользуйтесь командой: | Воспользуйтесь командой: | ||
pactl list sinks для просмотра доступных потоков и pactl set-default-sink для смены стандартного потока на bluetooth устройство. Можно автоматизировать через udev, используя данный скрипт как пример. | $ pactl list sinks | ||
для просмотра доступных потоков | |||
Вывод: | |||
{|class="wikitable mw-collapsible mw-collapsed" style="float:center; margin-left:2em" | |||
!pactl list sinks | |||
|- | |||
| | |||
<pre> | |||
Аудиоприёмник №42 | |||
Состояние: SUSPENDED | |||
Имя: alsa_output.pci-0000_00_05.0.analog-stereo | |||
Описание: Built-in Audio Analog Stereo | |||
Драйвер: PipeWire | |||
Спецификация отсчётов: s16le 2-канальный 4800 | |||
Схема каналов: front-left,front-right | |||
Модуль-владелец: 4294967295 | |||
Звук выключен: нет | |||
Громкость: front-left: 48287 / 74% / -7,96 dB, front-right: 48287 / 74% / -7,96 dB | |||
баланс 0,00 | |||
Базовая громкость: 65536 / 100% / 0,00 dB | |||
Мониторный источник: alsa_output.pci-0000_00_05.0.analog-stereo.monitor | |||
Задержка: 0 мкс, настроено на 0 мкс | |||
Флаги: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY | |||
Свойства: | |||
object.path = "alsa:pcm:0:front:0:playback" | |||
api.alsa.path = "front:0" | |||
api.alsa.pcm.card = "0" | |||
api.alsa.pcm.stream = "playback" | |||
audio.channels = "2" | |||
audio.position = "FL,FR" | |||
device.routes = "2" | |||
alsa.resolution_bits = "16" | |||
device.api = "alsa" | |||
device.class = "sound" | |||
alsa.class = "generic" | |||
alsa.subclass = "generic-mix" | |||
alsa.name = "Intel 82801AA-ICH" | |||
alsa.id = "Intel ICH" | |||
alsa.subdevice = "0" | |||
alsa.subdevice_name = "subdevice #0" | |||
alsa.device = "0" | |||
alsa.card = "0" | |||
alsa.card_name = "Intel 82801AA-ICH" | |||
alsa.long_card_name = "Intel 82801AA-ICH with AD1980 at irq 21" | |||
alsa.driver_name = "snd_intel8x0" | |||
device.profile.name = "analog-stereo" | |||
device.profile.description = "Analog Stereo" | |||
card.profile.device = "4" | |||
device.id = "41" | |||
factory.name = "api.alsa.pcm.sink" | |||
priority.driver = "1009" | |||
priority.session = "1009" | |||
media.class = "Audio/Sink" | |||
node.nick = "Intel 82801AA-ICH" | |||
node.name = "alsa_output.pci-0000_00_05.0.analog-stereo" | |||
device.description = "Built-in Audio" | |||
device.icon_name = "audio-card-analog" | |||
device.bus = "pci" | |||
device.bus_path = "pci-0000:00:05.0" | |||
device.form_factor = "internal" | |||
node.pause-on-idle = "false" | |||
factory.id = "18" | |||
clock.quantum-limit = "8192" | |||
client.id = "33" | |||
node.driver = "true" | |||
factory.mode = "merge" | |||
audio.adapt.follower = "" | |||
library.name = "audioconvert/libspa-audioconvert" | |||
object.id = "42" | |||
object.serial = "42" | |||
device.enum.api = "udev" | |||
api.alsa.card = "0" | |||
api.alsa.card.name = "Intel 82801AA-ICH" | |||
api.alsa.card.longname = "Intel 82801AA-ICH with AD1980 at irq 21" | |||
device.plugged.usec = "5422646" | |||
sysfs.path = "/devices/pci0000:00/0000:00:05.0/sound/card0" | |||
device.subsystem = "sound" | |||
device.vendor.id = "0x8086" | |||
device.vendor.name = "Intel Corporation" | |||
device.product.id = "0x2415" | |||
device.product.name = "82801AA AC'97 Audio Controller" | |||
device.name = "alsa_card.pci-0000_00_05.0" | |||
device.nick = "Intel 82801AA-ICH" | |||
api.alsa.use-acp = "true" | |||
api.acp.auto-profile = "false" | |||
api.acp.auto-port = "false" | |||
api.dbus.ReserveDevice1 = "Audio0" | |||
device.string = "0" | |||
Порты: | |||
analog-output;output-amplifier-on: Analog Output / Amplifier (тип: Аналоговый, приоритет: 9910, доступность неясна) | |||
analog-output;output-amplifier-off: Analog Output / No Amplifier (тип: Аналоговый, приоритет: 9900, доступность неясна) | |||
Активный порт: analog-output;output-amplifier-on | |||
Форматы: | |||
pcm | |||
</pre> | |||
|} | |||
и | |||
pactl set-default-sink | |||
для смены стандартного потока на bluetooth устройство. | |||
Пример использования: | |||
$ pactl set-default-sink 42 | |||
Можно автоматизировать через udev, используя данный скрипт как пример. | |||
Обсуждение данной проблемы можно посмотреть здесь. По словам автора скрипта, профиль гарнитуры (HSP) все еще может иметь проблемы. | Обсуждение данной проблемы можно посмотреть здесь. По словам автора скрипта, профиль гарнитуры (HSP) все еще может иметь проблемы. |
Версия от 14:17, 22 сентября 2023
Решение проблем PulseAudio и PipeWire
PulseAudio
1
PipeWire
PipeWire не видит микрофон
Если у вас PipeWire не видит микрофон, попробуйте выключить в конфигурационном файле параметр api.alsa.use-acp и/или включить api.alsa.use-ucm.
Если используется pipewire-media-session
Откройте через текстовый редактор от рута /etc/pipewire/media-session.d/alsa-monitor.conf /usr/share/pipewire/media-session.d/alsa-monitor.conf
И приведите выделенные параметры к указанным значениям:
... rules = [ { ... actions = { update-props = { ... api.alsa.use-acp = false ...
Проверка доступных устройств
Для проверки доступных устройств ввода используйте команду:
$ pw-link -iol | grep input
Если используется wireplumber
Откройте через текстовый редактор от рута /etc/wireplumber/main.lua.d/50-alsa-config.lua (или ~/.config/wireplumber/main.lua.d/50-alsa-config.lua) /usr/share/wireplumber/main.lua.d/50-alsa-config.lua
... alsa_monitor.rules = { { ... apply_properties = { -- Использование устройств ALSA-Card-Profile. Они используют UCM или -- конфигурацию профиля для настройки параметров устройства и микшера. -- ["api.alsa.use-acp"] = true, -- Использование UCM вместо profile по возможности. Можно отключить, -- чтобы не пытаться использовать профиль UCM. ["api.alsa.use-ucm"] = true, ...
Затем перезапустите PipeWire и проверьте список доступных устройств:
$ systemctl --user --now enable pipewire-media-session.service
Проверка доступных устройств
Для проверки доступных устройств ввода используйте команду:
$ pwctl status
Если она отсутствует, установите ее следующей командой:
# apt-get install /usr/bin/pwctl
Звук не переключается автоматически при подключении нового устройства
Чтобы автоматически переключаться на вновь подключенные устройства, раскомментируйте следующую строку (выделена жирным):
/usr/share/pipewire/pipewire-pulse.conf (или добавьте в ~/.config/pipewire/pipewire.conf)
... context.exec = [ { path = "pactl" args = "load-module module-always-sink" } { path = "pactl" args = "load-module module-switch-on-connect" } #{ path = "/usr/bin/sh" args = "~/.config/pipewire/default.pw" } ] ...
Перезапустите пользовательские службы pipewire.service и pipewire-pulse.service для применения изменений.
$ systemctl --user restart pipewire.service pipewire-pulse.service
Звук не переключается автоматически на наушники Bluetooth
# apt-get install /usr/bin/pactl
# apt-get install /usr/bin/pwctl
Выполните:
$ pactl load-module module-switch-on-connect
и настройте среду рабочего стола на автоматический запуск этой команды при входе в систему.
Возможно, вам потребуется выполнить:
$ wpctl set-default <id>.
Найти <id> можно следующим способом:
$ wpctl status
Вывод:
$ wpctl status |
---|
PipeWire 'pipewire-0' [0.3.71, petr@atk, cookie:1976916996] └─ Clients: 32. pipewire-media-session [0.3.71, petr@atk, pid:10780] 33. pipewire-media-session [0.3.71, petr@atk, pid:10780] 39. pipewire [0.3.71, petr@atk, pid:10781] 49. wpctl [0.3.71, petr@atk, pid:11459] 50. pipewire [0.3.71, petr@atk, pid:10781] Audio ├─ Devices: │ 41. Built-in Audio [alsa] │ ├─ Sinks: │ * 42. Built-in Audio Analog Stereo [vol: 0.74] <-- Здесь <id> = 42 │ ├─ Sink endpoints: │ ├─ Sources: │ * 43. Built-in Audio Analog Stereo [vol: 0.74] <-- Здесь <id> = 43 │ ├─ Source endpoints: │ └─ Streams: Video ├─ Devices: │ ├─ Sinks: │ ├─ Sink endpoints: │ ├─ Sources: │ ├─ Source endpoints: │ └─ Streams: Settings └─ Default Configured Node Names: 0. Audio/Sink alsa_output.pci-0000_00_05.0.analog-stereo |
Нет звука после подключения устройства Bluetooth
По состоянию на 2020-12-07, если у вас нет звука после подключения Bluetooth устройства, вам скорее всего потребуется переключить стандартный аудиопоток или перенаправить его к требуемому.
Воспользуйтесь командой:
$ pactl list sinks
для просмотра доступных потоков
Вывод:
pactl list sinks |
---|
Аудиоприёмник №42 Состояние: SUSPENDED Имя: alsa_output.pci-0000_00_05.0.analog-stereo Описание: Built-in Audio Analog Stereo Драйвер: PipeWire Спецификация отсчётов: s16le 2-канальный 4800 Схема каналов: front-left,front-right Модуль-владелец: 4294967295 Звук выключен: нет Громкость: front-left: 48287 / 74% / -7,96 dB, front-right: 48287 / 74% / -7,96 dB баланс 0,00 Базовая громкость: 65536 / 100% / 0,00 dB Мониторный источник: alsa_output.pci-0000_00_05.0.analog-stereo.monitor Задержка: 0 мкс, настроено на 0 мкс Флаги: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY Свойства: object.path = "alsa:pcm:0:front:0:playback" api.alsa.path = "front:0" api.alsa.pcm.card = "0" api.alsa.pcm.stream = "playback" audio.channels = "2" audio.position = "FL,FR" device.routes = "2" alsa.resolution_bits = "16" device.api = "alsa" device.class = "sound" alsa.class = "generic" alsa.subclass = "generic-mix" alsa.name = "Intel 82801AA-ICH" alsa.id = "Intel ICH" alsa.subdevice = "0" alsa.subdevice_name = "subdevice #0" alsa.device = "0" alsa.card = "0" alsa.card_name = "Intel 82801AA-ICH" alsa.long_card_name = "Intel 82801AA-ICH with AD1980 at irq 21" alsa.driver_name = "snd_intel8x0" device.profile.name = "analog-stereo" device.profile.description = "Analog Stereo" card.profile.device = "4" device.id = "41" factory.name = "api.alsa.pcm.sink" priority.driver = "1009" priority.session = "1009" media.class = "Audio/Sink" node.nick = "Intel 82801AA-ICH" node.name = "alsa_output.pci-0000_00_05.0.analog-stereo" device.description = "Built-in Audio" device.icon_name = "audio-card-analog" device.bus = "pci" device.bus_path = "pci-0000:00:05.0" device.form_factor = "internal" node.pause-on-idle = "false" factory.id = "18" clock.quantum-limit = "8192" client.id = "33" node.driver = "true" factory.mode = "merge" audio.adapt.follower = "" library.name = "audioconvert/libspa-audioconvert" object.id = "42" object.serial = "42" device.enum.api = "udev" api.alsa.card = "0" api.alsa.card.name = "Intel 82801AA-ICH" api.alsa.card.longname = "Intel 82801AA-ICH with AD1980 at irq 21" device.plugged.usec = "5422646" sysfs.path = "/devices/pci0000:00/0000:00:05.0/sound/card0" device.subsystem = "sound" device.vendor.id = "0x8086" device.vendor.name = "Intel Corporation" device.product.id = "0x2415" device.product.name = "82801AA AC'97 Audio Controller" device.name = "alsa_card.pci-0000_00_05.0" device.nick = "Intel 82801AA-ICH" api.alsa.use-acp = "true" api.acp.auto-profile = "false" api.acp.auto-port = "false" api.dbus.ReserveDevice1 = "Audio0" device.string = "0" Порты: analog-output;output-amplifier-on: Analog Output / Amplifier (тип: Аналоговый, приоритет: 9910, доступность неясна) analog-output;output-amplifier-off: Analog Output / No Amplifier (тип: Аналоговый, приоритет: 9900, доступность неясна) Активный порт: analog-output;output-amplifier-on Форматы: pcm |
и
pactl set-default-sink
для смены стандартного потока на bluetooth устройство.
Пример использования:
$ pactl set-default-sink 42
Можно автоматизировать через udev, используя данный скрипт как пример.
Обсуждение данной проблемы можно посмотреть здесь. По словам автора скрипта, профиль гарнитуры (HSP) все еще может иметь проблемы.