Решение проблем PulseAudio и PipeWire: различия между версиями

Материал из ALT Linux Wiki
Строка 269: Строка 269:


Нажмите {{button|Esc}} для выхода и выполните {{cmd|alsactl}} для сохранения параметров ALSA после перезагрузки.
Нажмите {{button|Esc}} для выхода и выполните {{cmd|alsactl}} для сохранения параметров ALSA после перезагрузки.
===Изменение частоты дискретизации по умолчанию===
По умолчанию PipeWire устанавливает фиксированную глобальную частоту дискретизации 48 кГц. Если вам нужно изменить его (например, у вас есть ЦАП (цифро-аналоговый преобразователь), поддерживающий более высокое значение), вы можете установить новое значение по умолчанию:
Откройте о суперпользователя, если вы хотите изменить общесистемные параметры:
$ su -
# mcedit /etc/pipewire/pipewire.conf
Или от обычного пользователя, если хотите изменить параметры только для себя:
$ mcedit ~/.config/pipewire/pipewire.conf
Найдите
...
  context.properties = {
      ...
      ## Properties forr the DSP configuration.
      #default.clock.rate =  48000
      ...
Раскомментируйте строчку {{cmd|default.clock.rate}} и замените {{cmd|48000}} на свое значение.


==Источники==
==Источники==

Версия от 11:53, 25 сентября 2023

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Решение проблем PulseAudio и PipeWire

PulseAudio

1

PipeWire

Примечание: Для работы с утилитами Pipewire необходимо установить пакет pipewire-utils


PipeWire не видит микрофон

Если у вас PipeWire не видит микрофон, попробуйте выключить в конфигурационном файле параметр api.alsa.use-acp и/или включить api.alsa.use-ucm.

Если используется pipewire-media-session

Примечание: Чтобы проверить, установлен ли у вас Pipewire, выполните в консоли команду: "rpm -q pipewire"


Откройте через текстовый редактор от рута /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

Примечание: Чтобы проверить, установлен ли у вас Wireplumber, выполните в консоли команду: "rpm -q 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

Примечание: Чтобы установить команду pactl, выполните:
# apt-get install /usr/bin/pactl
Примечание: Чтобы установить команду pwctl, выполните:
# 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, используя данный скрипт как пример.

Примечание: Хотя на Github указано, что он уже не нужен после v0.3.21 или GIT. В P10 на 22.09.23 - 0.3.71


Обсуждение данной проблемы можно посмотреть здесь. По словам автора скрипта, профиль гарнитуры (HSP) все еще может иметь проблемы.

Низкая громкость

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

Для исправления данной проблемы откройте в консоли alasmixer, используйте F6 для выбора звуковой карты (выберите стрелками нужную карту и нажмите Enter).

Клавишами вверх/вниз установите громкость ALSA в колонке Master на значение 100%.

Нажмите Esc для выхода и выполните alsactl для сохранения параметров ALSA после перезагрузки.

Изменение частоты дискретизации по умолчанию

По умолчанию PipeWire устанавливает фиксированную глобальную частоту дискретизации 48 кГц. Если вам нужно изменить его (например, у вас есть ЦАП (цифро-аналоговый преобразователь), поддерживающий более высокое значение), вы можете установить новое значение по умолчанию:

Откройте о суперпользователя, если вы хотите изменить общесистемные параметры:

$ su -
# mcedit /etc/pipewire/pipewire.conf

Или от обычного пользователя, если хотите изменить параметры только для себя:

$ mcedit ~/.config/pipewire/pipewire.conf 

Найдите

... 
 context.properties = { 
     ... 
     ## Properties forr the DSP configuration.
     #default.clock.rate =  48000 
     ... 

Раскомментируйте строчку default.clock.rate и замените 48000 на свое значение.

Источники