Перейти к содержимому

Acp hda node что это

  • автор:

whoa there, pardner!

Your request has been blocked due to a network policy.

Try logging in or creating an account here to get back to browsing.

If you’re running a script or application, please register or sign in with your developer credentials here. Additionally make sure your User-Agent is not empty and is something unique and descriptive and try again. if you’re supplying an alternate User-Agent string, try changing back to default as that can sometimes result in a block.

You can read Reddit’s Terms of Service here.

if you think that we’ve incorrectly blocked you or you would like to discuss easier ways to get the data you want, please file a ticket here.

when contacting us, please include your ip address which is: 178.132.111.61 and reddit account

WirePlumber (Русский)

Состояние перевода: На этой странице представлен перевод статьи WirePlumber. Дата последней синхронизации: 11 октября 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

WirePlumber — это мощный менеджер сеансов и политик для PipeWire. Основанный на модульном дизайне, с плагинами Lua, реализующими фактическую функциональность управления, он обладает высокой настраиваемостью и расширяемостью.

Установка

Установите пакет wireplumber . Он конфликтует с пакетами других менеджеров сеансов PipeWire, что гарантирует, что они будут удалены.

WirePlumber использует пользовательский экземпляр systemd для управления сервером.

Настройка

Расположение файлов настроек

Конфигурация WirePlumber [устаревшая ссылка 2024-01-13 ⓘ] состоит из глобальных JSON-подобных объектов, похожих на объекты из конфигурации PipeWire, таких как context и alsa_monitor . Настройки считываются из каталогов ~/.config/wireplumber/ (пользовательская конфигурация), /etc/wireplumber/ (глобальная конфигурация) и /usr/share/wireplumber/ (конфигурация по умолчанию).

WirePlumber начинает работу с чтения основного файла настроек [устаревшая ссылка 2024-01-13 ⓘ] . Это JSON-подобный файл, который настраивает контекст PipeWire, SPA-плагины, модули и компоненты. Среди этих компонентов есть и Lua, который используется для динамического изменения глобальных объектов.

Есть несколько разных основных файлов настроек, поставляемых вместе с пакетом:

  • Настройки для одиночного экземпляра — /usr/share/wireplumber/wireplumber.conf . Это конфигурация по умолчанию, которая включает в себя функциональность всех других конфигураций в рамках одного процесса.
    • Смотрите документацию объекта «context» [устаревшая ссылка 2024-01-13 ⓘ] , который используется во всех основных файлах настроек.
    • Смотрите документацию объектов ALSA [устаревшая ссылка 2024-01-13 ⓘ] и объектов «access» [устаревшая ссылка 2024-01-13 ⓘ] .
    • Смотрите документацию объекта Bluetooth [устаревшая ссылка 2024-01-13 ⓘ] .
    • Смотрите документацию объектов, связанных с политиками [устаревшая ссылка 2024-01-13 ⓘ] .

    Lua-скрипты из каталогов lua.d/ также загружают другие Lua-скрипты из каталог-настроек/scripts/ . Эти скрипты реализуют некоторые логические/функциональные возможности Pipewire и могут быть полезны при определённых обстоятельствах.

    Изменение настроек

    Рекомендуемый способ для настройки WirePlumber — добавить Lua-скрипт в соответствующий каталог lua.d/ в /etc/wireplumber/ или ~/.config/wireplumber/ . Следует учесть следующие моменты:

    • Если вы хотите создать скрипт, который полностью заменит собой стандартный скрипт, скопируйте его из /usr/share/wireplumber/ в место назначения с тем же самым именем. Будет прочитан только самый приоритетный файл; файлы с таким же именем из менее приоритетных каталогов будут проигнорированы. [2] [устаревшая ссылка 2024-01-13 ⓘ]
    • В противном случае, если вы хотите добавить новый скрипт, в начале его имени укажите номер больше 50 (например, 51-my-config.lua ), так как настройки по умолчанию в основном содержатся на уровне 50 или ниже.
      • Имейте в виду, что WirePlumber выполняет multi-path merging [устаревшая ссылка 2024-01-13 ⓘ] , а это значит, что стандартные настройки с более низким номером будут прочитаны раньше вашего нового скрипта, так как файлы настроек сортируются по их именам.

      Получение имени интерфейса для правил matches

      Выбор настраиваемого интерфейса в Lua-скриптах WirePlumber выполняется с помощью правил matches , в которых прописываются свойства PipeWire-объектов и их значения, по которым будет выполняться выборка.

      Используйте команду wpctl status , чтобы посмотреть все объекты, которыми управляет WirePlumber. Найдите ID нужного вам интерфейса.

      Пример вывода команды:

      $ wpctl status
      PipeWire 'pipewire-0' [0.3.56, user@hostname, cookie:1163266174] └─ Clients: 32. pipewire-pulse [0.3.56, user@hostname, pid:895] 33. WirePlumber [0.3.56, user@hostname, pid:894] . Audio ├─ Devices: │ 42. HD Audio Controller [alsa] │ 105. USB PnP Audio Device [alsa] │ ├─ Sinks: │ * 48. HD Audio Controller Analog Stereo [vol: 0.50] │ 53. EasyEffects Sink [vol: 1.00] │ ├─ . │ ├─ Sources: │ 54. EasyEffects Source [vol: 1.00] │ * 101. USB PnP Audio Device Mono [vol: 0.74] │ └─ . Video └─ . Settings └─ Default Configured Node Names: 0. Audio/Sink alsa_output.pci-0000_08_00.4.analog-stereo 1. Audio/Source alsa_input.usb-0c76_USB_PnP_Audio_Device-00.mono-fallback

      Например, если нужен интерфейс HD Audio Controller Analog Stereo , то здесь его ID — 48 .

      Теперь с помощью команды wpctl inspect ID можно посмотреть список всех доступных свойств этого объекта:

      $ wpctl inspect 48
      id 48, type PipeWire:Interface:Node . * client.id = "34" device.api = "alsa" device.class = "sound" * device.id = "42" device.profile.description = "Analog Stereo" device.profile.name = "analog-stereo" * factory.id = "18" factory.mode = "merge" factory.name = "api.alsa.pcm.sink" library.name = "audioconvert/libspa-audioconvert" * media.class = "Audio/Sink" * node.description = "HD Audio Controller Analog Stereo" . * node.name = "alsa_output.pci-0000_08_00.4.analog-stereo" * node.nick = "ALC1220 Analog" . * object.path = "alsa:pcm:1:front:1:playback" * object.serial = "49" .

      Выберите какое-нибудь из свойств device.name , node.name и node.nick для последующего использования в правилах matches в Lua-скрипте.

      Не используйте device.id , так как он динамический и часто меняется.

      • wpctl inspect показывает тип объекта в первой строке, то есть type PipeWire:Interface:Node означает, что тип этого объекта Node .
      • Объекты Node — это источники (sources) или выводы (sinks) в графе PipeWire, а объекты Device соответствуют устройствам ALSA.
      • Вы можете определить класс Endpoint этого объекта по свойству media.class .
      • Начиная с WirePlumber v0.4.9, узлы ALSA используют имя PCM для заполнения node.nick , что полезно, по крайней мере, на картах HDA, использующих UCM, где все выходы (аналоговые, HDMI и т.д.) отображаются как Node на одном профиле.
      • Команда pw-top показывает список Device и Node , используемых в настоящее время.
      • Команда wpctl inspect ID выводит тот же самый список свойств, что и команда pw-cli dump ID .

      Изменение свойства устройства/узла

      Чтобы изменить свойство устройства или узла, например, его описание или ник, создайте Lua-скрипт и добавьте его в /etc/wireplumber/ или ~/.config/wireplumber/ с соответствующими путём и именем.

      Например, чтобы изменить описание узла ALSA, можно создать примерно такой файл:

      /etc/wireplumber/main.lua.d/51-device-rename.lua (или ~/.config/wireplumber/main.lua.d/51-device-rename.lua)
      rule = < matches = < < < "node.name", "equals", "alsa_output.pci-0000_00_1f.3.output_analog-stereo" >, >, >, apply_properties = < ["node.description"] = "Laptop", >, > table.insert(alsa_monitor.rules, rule)

      А для изменения каких-нибудь свойств узла или устройства Bluetooth можно создать примерно такой файл:

      /etc/wireplumber/bluetooth.lua.d/51-device-rename.lua (или ~/.config/wireplumber/bluetooth.lua.d/51-device-rename.lua)
      rule = < matches = < < < "node.name", "equals", "bluez_output.02_11_45_A0_B3_27.a2dp-sink" >, >, >, apply_properties = < ["node.nick"] = "Headphones", >, > table.insert(bluez_monitor.rules, rule)

      Свойства, которые вы можете изменить, а также правила сопоставления для выбора устройств или узлов описаны в документации WirePlumber: конфигурация ALSA [устаревшая ссылка 2024-01-13 ⓘ] и конфигурация Bluetooth [устаревшая ссылка 2024-01-13 ⓘ] .

      Отключение устройства/узла

      Начиная с WirePlumber v0.4.7, пользователи могут отключать любые устройства или узлы с помощью свойства device.disabled или node.disabled .

      /etc/wireplumber/main.lua.d/51-alsa-disable.lua (или ~/.config/wireplumber/main.lua.d/51-alsa-disable.lua)
      rule = < matches = < < < "device.name", "equals", "alsa_card.pci-0000_08_00.4" >, >, >, apply_properties = < ["device.disabled"] = true, >, > table.insert(alsa_monitor.rules,rule)

      Чтобы узнать имя alsa_card.* в вашей системе, смотрите #Получение имени интерфейса для правил matches.

      Примечание: Обычным случаем использования, например, является отключение HDMI аудиовыхода NVIDIA.

      Одновременное использование нескольких выводов на одной звуковой карте

      Создайте копию /usr/share/alsa-card-profile/mixer/profile-sets/default.conf , чтобы изменения сохранялись при обновлениях. В нём мы определим профиль, объединяющий два стандартных отображения для аналогового и HDMI выводов.

      /usr/share/alsa-card-profile/mixer/profile-sets/multiple.conf
      [General] auto-profiles = no [Mapping analog-stereo] device-strings = front:%f channel-map = left,right paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2 paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic priority = 15 [Mapping hdmi-stereo] description = Digital Stereo (HDMI) device-strings = hdmi:%f paths-output = hdmi-output-0 channel-map = left,right priority = 9 direction = output [Profile multiple] description = Analog Stereo Duplex + Digital Stereo (HDMI) Output output-mappings = analog-stereo hdmi-stereo input-mappings = analog-stereo

      Теперь настроим Wireplumber на использование нового профиля карты для нужных устройств. Получение идентификаторов описано в разделе #Получение имени интерфейса для правил matches. Мы применим конфигурацию, создав такой Lua-скрипт:

      /etc/wireplumber/main.lua.d/51-alsa-custom.lua (или ~/.config/wireplumber/main.lua.d/51-alsa-custom.lua)
      rule = < matches = < < < "device.nick", "matches", "HDA Intel PCH" >, >, >, apply_properties = < ["api.alsa.use-acp"] = true, ["api.acp.auto-profile"] = false, ["api.acp.auto-port"] = false, ["device.profile-set"] = "multiple.conf", ["device.profile"] = "multiple", >, > table.insert(alsa_monitor.rules,rule)

      Советы и рекомендации

      Регулировка звука клавиатурой

      Привяжите следующие команды к своим кнопкам регулировки громкости: XF86AudioRaiseVolume , XF86AudioLowerVolume , XF86AudioMute , XF86AudioMicMute . Подробнее это рассмотрено здесь: Горячие клавиши#Xorg.

      Для увеличения громкости:

      $ wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+

      Для понижения громкости:

      $ wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
      $ wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
      $ wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle

      Совет: Для настройки выводов источников, отличных от используемых по умолчанию, выполните wpctl status , найдите в списке номер нужного вам вывода или источника и используйте его вместо @DEFAULT_AUDIO_SINK@ или _SOURCE@ .

      Отображение уровня громкости

      Чтобы получить уровень громкости вывода по умолчанию:

      $ wpctl get-volume @DEFAULT_AUDIO_SINK@

      Примечание: Если вывод заглушен, то вместе с громкостью будет выведена надпись [MUTED] .

      Смотрите также

      • Документация — Официальная документация
      • WirePlumber, менеджер сеансов PipeWire — Сообщение в блоге Джорджа Киагиадакиса (Collabora) от мая 2020 года с подробным описанием работы WirePlumber

      Retrieved from «https://wiki.archlinux.org/index.php?title=WirePlumber_(Русский)&oldid=797019»

      Acp hda node что это

      Ваша оценка отправлена, спасибо. Сообщите нам, пожалуйста, как можно сделать ответ вам еще более полезным.

      Я не смог найти информацию для решения моей проблемы
      Я нашел информацию, но так и не смог решить свою проблему
      Контент предоставляет неверную информацию
      Контент устарел
      Изображения не четкие
      Шаги не ясны
      Были технические трудности с сайтом, например битые ссылки
      Ответ слишком длинный, чтобы читать
      Другие предложения: :
      Пожалуйста, не указывайте личную информацию в своем комментарии.

      Если вам нужна дополнительная поддержка, обратитесь в MSI с.

      Hot_Line Задайте вопрос None

      Спасибо за то, что дали нам знать.

      Пожалуйста, не указывайте личную информацию в своем комментарии.

      Благодарим за ваше мнение.

      Что делать с неизвестным устройством в диспетчере устройств?

      March 9,2021

      Если вы обнаружили неизвестное устройство или обнаружили ошибку с драйвером, мы рекомендуем удалить текущую версию драйвера, прежде чем устанавливать новый драйвер. Рекомендуется устанавливать драйвер с официального сайта MSI, который прошел полную проверку, чтобы убедиться, что он полностью совместим с нашим продуктом. Сравните эту версию с версией драйвера поставщика оборудования, поставщик выпускает новейшие версии драйвера на своем сайте, и их тоже можно использовать как вариант. Запуск центра обновления Windows (Windows Update) также может решить проблему. Примечание: удалите имеющийся драйвер, прежде чем начать процесс установки нового драйвера.

      Удаление имеющегося драйвера

      Метод 1: удаление драйвера с помощью Диспетчера устройств

      • В ОС Windows щелкните правой кнопкой по [Windows] → Выберите [Device Manager] («Диспетчер устройств») vga driver update
      • Нажмите [Device Manager] («Диспетчер устройств»), найдите [Display adapters] («Видеоадаптеры»). vga driver update
      • Щелкните правой кнопкой по устройству, выберите [Uninstall device] («Удалить устройство»). vga driver update
      • Поставьте галочку в поле [Delete the driver software for this device] («Удалить программы драйверов для этого устройства»), нажмите [Uninstall] («Удалить»). vga driver update

      Метод 2: Удаление драйвера с помощью меню Apps and Features («Приложения и возможности»)

      • Правой кнопкой щелкните по иконке Windows Start > Выберите [Apps and Features] («Приложения и возможности») vga driver update
      • Введите название поставщика, например, “NVIDIA” или “AMD”, чтобы найти драйвер для удаления vga driver update

      Загрузка и установка драйвера с официального сайта MSI

      • Перейдите на официальный сайт MSI, найдите свою материнскую плату и скачайте драйвер
      • Например: RTX 2070 GAMING Z 8G, введите название продукта в поле поиска в верхнем правом углу, нажмите [Enter] vga driver update
      • Появится соответствующий результат для “GeForce RTX 2070 GAMING Z 8G”, выберите [Download] («Скачать»), чтобы зайти в раздел скачивания. vga driver update
      • Перейдите на вкладку [Driver] («Драйвер») vga driver update
      • Выберите вашу операционную систему vga driver update
      • Нажмите и разверните [NVIDIA Graphics Drivers] («Видео драйверы NVIDIA»), нажмите по иконке со стрелкой вниз для скачивания. vga driver update
      • Щелкните правой кнопкой по скачанному файлу и нажмите [Extract All] («Извлечь все»), чтобы разархивировать сжатую папку vga driver update
      • Нажмите [Extract] («Извлечь»). vga driver update
      • Разархивируйте файл vga driver update
      • Правой кнопкой щелкните по файлу, нажмите [Open] («Открыть»), чтобы начать установку драйвера vga driver update
      • Нажмите [OK] и выберите [NEXT] («Далее») на следующем шаге vga driver update
      • Подождите, пока пройдет проверка системы на совместимость vga driver update
      • Нажмите [AGREE AND CONTINUE] («Согласиться и продолжить»). vga driver update
      • Нажмите [NEXT] («Далее»). vga driver update
      • Пройдет подготовка к установке. vga driver update
      • Установка (Примечание: в течение установки экран несколько раз станет черным, это нормальное явление). vga driver update
      • Установка завершена, нажмите [Restart Now] («Перезагрузить сейчас») для перезагрузки компьютера, и процесс будет завершен. vga driver update

      Загрузка и установка драйвера с сайта поставщика оборудования

      Перейдите на официальный сайт AMD или NVIDIA, чтобы скачать и установить драйвер.

      • Возьмем GeForce RTX 2070 GAMING Z 8G в качестве примера
      • Зайдите на официальный сайт Nvidia. Нажмите [DRIVERS] («Драйверы»), выберите [DRIVERS] («Драйверы») vga driver update
      • Выберите нужную видеокарту. vga driver update
      • Нажмите [START SEARCH] («Начать поиск»). vga driver update
      • Скачайте новую версию vga driver update
      • Нажмите [DOWNLOAD] («Скачать») vga driver update
      • Щелкните правой кнопкой по скачанному файлу и нажмите [Extract All] («Извлечь все»), чтобы разархивировать сжатую папку vga driver update
      • Нажмите [Extract] («Извлечь»). vga driver update
      • Извлеките файл vga driver update
      • Правой кнопкой щелкните по файлу, нажмите [Open] («Открыть»), чтобы начать установку драйвера vga driver update
      • Нажмите [OK] и выберите [NEXT] («Далее») на следующем шаге vga driver update
      • Подождите, пока пройдет проверка системы на совместимость vga driver update
      • Нажмите [AGREE AND CONTINUE] («Согласиться и продолжить»). vga driver update
      • Нажмите [NEXT] («Далее»). vga driver update
      • Пройдет подготовка к установке vga driver update
      • Установка (Примечание: в течение установки экран несколько раз станет черным, это нормальное явление). vga driver update
      • Установка завершена, нажмите [Restart Now] («Перезагрузить сейчас») для перезагрузки компьютера, и процесс будет завершен. vga driver update

      Обновление драйверов в Windows 10

      • Убедитесь, что компьютер подключен к интернету.
      • Щелкните правой кнопкой по иконке [Windows Start] → выберите [Device Manager] («Диспетчер устройств»). vga driver update
      • Разверните [Display adapters] («Видеоадаптеры») vga driver update
      • Щелкните правой кнопкой по видеоустройству в меню «Видеоадаптеры», нажмите на [Update driver] («Обновить драйвер») vga driver update
      • Выберите [Search automatically for updated driver software] («Автоматический поиск драйверов») vga driver update
      • Устройство подключится к серверу Microsoft для поиска доступных драйверов vga driver update
      • Установка драйвера завершена, вы можете закрыть это окно. vga driver update

      PipeWire (Русский)

      Состояние перевода: На этой странице представлен перевод статьи PipeWire. Дата последней синхронизации: 6 октября 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

      • PipeWire/Примеры
      • WirePlumber (Русский)

      PipeWire — это новый низкоуровневый мультимедийный фреймворк. Он предназначен для захвата и воспроизведения аудио и видео с минимальной задержкой и поддерживает PulseAudio, JACK, ALSA и приложения, использующие GStreamer.

      Демон, основанный на этом фреймровке, может быть использован как звуковой сервер (с поддержкой возможностей PulseAudio и JACK) и как сервер для захвата видео.

      PipeWire также поддерживает контейнеры по типу Flatpak и не зависит от пользовательских групп audio и video . Вместо них он использует модель безопасности, основанную на Polkit, для запроса у Flatpak или Wayland разрешений для записи экрана или звука.

      Установка

      PipeWire использует пользовательский экземпляр systemd для управления сервером и автоматической активации через сокет.

      Документация есть в пакете pipewire-docs .

      Pipewire может работать как прозрачная замена других звуковых серверов; подробнее в разделе #Аудио.

      Менеджер сеансов

      Как и JACK, PipeWire не реализует никакой внутренней логики подключения. Бремя отслеживания новых потоков и подключения их к соответствующему устройству вывода или приложению возлагается на внешний компонент, известный как менеджер сеансов.

      На данный момент доступны два менеджера сеансов:

      • WirePlumber — Менеджер, основанный на модульной конструкции, с плагинами Lua, которые реализуют фактическую функциональность управления. Он более мощный чем PipeWire Media Session и рекомендуется к использованию по умолчанию.
      • PipeWire Media Session — Очень простой менеджер, подходящий для простых случаев. Он был реализован в основном для тестирования и в качестве примера для создания новых менеджеров сеансов.

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

      GUI

      • Helvum — GTK обёртка для pipewire, вдохновленная подобным инструментом для JACK catia.
      • qpwgraph — Graph/Patchbay для PipeWire на базе Qt, вдохновлённый JACK-инструментом QjackCtl.

      Настройка

      Пакет PipeWire предоставляет начальный набор конфигурационных файлов в /usr/share/pipewire . Не редактируйте эти файлы напрямую, так как обновления пакета перезапишут ваши изменения. Для настройки PipeWire можно скопировать файлы из /usr/share/pipewire в другой общесистемный каталог /etc/pipewire или в пользовательский каталог ~/.config/pipewire . Файл из каталога с более высоким приоритетом заменяет собой файлы с таким же именем из других каталогов. [1]

      Профили

      Pipewire добавляет пользовательский профиль «Pro Audio» в дополнение к профилям PulseAudio, выбираемым через pavucontrol. Эффект от этого описан здесь: https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#what-is-the-pro-audio-profile

      Использование

      Аудио

      PipeWire может быть использован как звуковой сервер наподобие PulseAudio и JACK. Он нацелен их на полную замену путем предоставления реализации PulseAudio-совместимого сервера и ABI-совместимых библиотек для клиентов JACK. Подробнее смотреть здесь.

      Клиенты ALSA

      Установите pipewire-alsa (и удалите pulseaudio-alsa , если он установлен) для перенаправления приложений, использующих ALSA API, через PipeWire.

      Клиенты PulseAudio

      Установите pipewire-pulse . Этот пакет заменит установленные pulseaudio и pulseaudio-bluetooth . Необходимо перезагрузиться или запустить пользовательский юнит pipewire-pulse.service для работы.

      Как правило, этого достаточно для дальнейшей работы, так как сервис pipewire-pulse.socket должен быть автоматически включен. Для проверки работоспособности, выполните следующую команду и изучите вывод:

      $ pactl info
      . Имя сервера: PulseAudio (on PipeWire 0.3.16) .

      Информация о дальнейшей настройке (например, касательно модулей) есть в официальной Wiki проекта: Migration from PulseAudio, Configuration of Pipewire-Pulse.

      Клиенты JACK

      Установите пакет pipewire-jack . Также есть пакет lib32-pipewire-jack для поддержки multilib.

      Можно использовать pw-jack(1) для запуска клиентов JACK, но технически это не обязательно, так как он служит лишь обёрткой для переменных окружения PIPEWIRE_REMOTE , PIPEWIRE_DEBUG и PIPEWIRE_LATENCY .

      Также вы можете использовать другой размер буфера путем установления нужного соотношения размера буфера и частоты дискретизации (что равно задержке в секнудах):

      PIPEWIRE_LATENCY="128/48000" приложение 
      Устройства Bluetooth

      Для управления Bluetooth audio устройствами PipeWire использует pipewire-pulse . Говоря более конкретно, сервис PipeWire проверяет наличие /etc/pipewire/media-session.d/with-pulseaudio и подключает модуль bluez5 автоматически, если он установлен в системе.

      Автоматический выбор профиля

      И pipewire-media-session , и WirePlumber могут автоматически переключаться между профилями HSP/HFP и A2DP при обнаружении входного потока.

      В pipewire-media-session это по умолчанию отключено. Для включения установите параметр bluez5.autoswitch-profile в значение true :

      /etc/pipewire/media-session.d/bluez-monitor.conf (или ~/.config/pipewire/media-session.d/bluez-monitor.conf)
      . rules = [ < . actions = < update-props = < . bluez5.autoswitch-profile = true .

      В WirePlumber это по умолчанию включено. Отключить можно так:

      /etc/wireplumber/policy.lua.d/11-bluetooth-policy.lua (или ~/.config/wireplumber/policy.lua.d/11-bluetooth-policy.lua)
      bluetooth_policy.policy["media-role.use-headset-profile"] = false
      PipeWire native patch sets

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

      pw-savewires
      #!/bin/bash if [[ "$#" -ne 1 ]]; then echo echo 'usage: pw-savewires filename' echo exit 0 fi rm $1 &> /dev/null while IFS= read -r line; do link_on=`echo $line | cut -f 4 -d '"'` link_op=`echo $line | cut -f 6 -d '"'` link_in=`echo $line | cut -f 8 -d '"'` link_ip=`echo $line | cut -f 10 -d '"'` echo "Saving: " "'"$link_on:$link_op"','"$link_in:$link_ip"'" echo "'"$link_on:$link_op"','"$link_in:$link_ip"'" >> $1 done < <(pw-cli dump short link)
      pw-loadwires
      #!/bin/python import sys import csv import os if len(sys.argv) < 2: print('\n usage: pw-loadwires filename\n') quit() with open(sys.argv[1], newline='') as csvfile: pwwreader = csv.reader(csvfile, delimiter=',', quotechar='"') for row in pwwreader: print('Loading: ' + row[0] + ' -->' + row[1]) process = os.popen('pw-link ' + row[0] + ' ' + row[1])
      pw-dewire
      #!/bin/bash while read -r line; do echo 'Dewiring: ' $line '. ' pw-link -d $line done < <(pw-cli dump short link <> grep -Eo '^[0-9]+')
      Совместное использование аудиоустройств по сети

      Хотя в само́м PipeWire нет сетевой прозрачности, его реализация PulseAudio поддерживает передачу звука по сети. Простым способом обмена аудио между компьютерами в сети является использование демона Avahi для обнаружения устройств. Убедитесь, что служба avahi-daemon.service запущена на всех компьютерах, которые будут совместно использовать аудио.

      Чтобы сделать аудиоустройства доступными через сеть, загрузите соответствующие модули на хосте (убедитесь, что используется локальный IP-адрес):

      $ pactl load-module module-native-protocol-tcp listen=192.168.1.10 $ pactl load-module module-zeroconf-publish

      А на клиентах загрузите модуль обнаружения:

      $ pactl load-module module-zeroconf-discover
      Работа PipeWire поверх JACK

      PipeWire также может работать как клиент JACK, если это необходимо. Подробнее смотреть здесь

      Использование ALSA dmix в качестве вывода PipeWire

      Можно использовать сервер PipeWire (или несколько, отдельно для каждого пользователя) для вывода звука на ALSA через ALSA dmix. Это позволяет использовать ALSA в качестве основной системы вывода звука, но при этом использовать устройства, не относящиеся к ALSA, например Bluetooth-наушники.

      Настройка dmix в ALSA

      Допустим, у вас есть две звуковые карты, PCH и HDMI :

      /proc/asound/cards
      0 [PCH ]: HDA-Intel - HDA Intel PCH HDA Intel PCH at 0xdff40000 irq 146 1 [HDMI ]: HDA-Intel - HDA ATI HDMI HDA ATI HDMI at 0xdfe60000 irq 147

      и PCM выглядит примерно так:

      /proc/asound/pcm
      00-00: ALC1220 Analog : ALC1220 Analog : playback 1 : capture 1 00-02: ALC1220 Alt Analog : ALC1220 Alt Analog : capture 1 01-03: HDMI 0 : HDMI 0 : playback 1 01-07: HDMI 1 : HDMI 1 : playback 1 01-08: HDMI 2 : HDMI 2 : playback 1 01-09: HDMI 3 : HDMI 3 : playback 1 01-10: HDMI 4 : HDMI 4 : playback 1 01-11: HDMI 5 : HDMI 5 : playback 1

      и настройки ALSA примерно такие:

      /etc/asound.conf
      ctl.!default < type hw card PCH >pcm.!default < type plug slave.pcm "dmix:PCH,0" > pcm.dhdmi < type plug slave.pcm "dmix:HDMI,9" >

      В примерах ниже будут использоваться dmix-устройства dmix:PCH,0 и dmix:HDMI,9 .

      Настройка dmix в PipeWire

      Сперва нужно отключить автоматический мониторинг устройств ALSA в WirePlumber. Закомментируйте строку alsa_monitor.enable() :

      /etc/wireplumber/main.lua.d/90-enable-all.lua (или ~/.config/wireplumber/main.lua.d/90-enable-all.lua)
      . -- Load devices -- alsa_monitor.enable() v4l2_monitor.enable() libcamera_monitor.enable() .

      Теперь нужно настроить PipeWire на использование dmix. В стандартном файле настроек ( /usr/share/pipewire/pipewire.conf ) есть закомментированный пример, который можно использовать в качестве основы.

      Добавьте свой элемент в массив context.objects :

      /etc/pipewire/pipewire.conf.d/alsa-dmix.conf (или ~/.config/pipewire/pipewire.conf.d/alsa-dmix.conf)
      context.objects = [ # Начинаем не с dmix, а с устройства ввода. Не забудьте его добавить. # Без настроенного устройства ввода наблюдались проблемы в Zoom. < factory = adapter args = < factory.name = api.alsa.pcm.source node.name = "alsa-mic-internal" # название устройства pulse (mpv) node.description = "Mic Internal" # название устройства pulse (pavucontrol) media.class = "Audio/Source" api.alsa.path >> # Теперь можно добавить dmix PCM < factory = adapter args = < factory.name = api.alsa.pcm.sink # Вывод в dmix node.name = "alsa-dmix-internal" # название устройства pulse (mpv) node.description = "PCM Internal" # название устройства pulse (pavucontrol) media.class = "Audio/Sink" # Вывод в dmix api.alsa.path >> < factory = adapter args = < factory.name = api.alsa.pcm.sink # Вывод в dmix node.name = "alsa-dmix-hdmi" # название устройства pulse (mpv) node.description = "PCM HDMI" # название устройства pulse (pavucontrol) media.class = "Audio/Sink" # Вывод в dmix # это dmix из файла /etc/asound.conf api.alsa.path >> ]

      Как обычный пользователь (не root) проверьте вывод wpctl status и настройте источник (source) и вывод (sink) устройства по умолчанию по своему вкусу с помощью wpctl set-default ID , где ID - это число перед именем источника/вывода.

      Теперь можно полноценно протестировать изменения.

      Демонстрация экрана WebRTC

      Большинство браузеров для работы WebRTC и захвата рабочего стола или отдельных приложений используют X11. На Wayland используется подход, основанный на механизме разрешений.

      Для этого требуются пакет xdg-desktop-portal и один из следующих бэкендов:

      • xdg-desktop-portal-gnome для GNOME, который зависит от
      • xdg-desktop-portal-gtk для приложений GTK.
      • xdg-desktop-portal-kde для KDE.
      • xdg-desktop-portal-lxqt for LXQt.
      • xdg-desktop-portal-wlr для оболочек, использующих композитор wlroots (напр. Sway, dwlAUR )

      После установки бэкенда перезапустите пользовательский юнит xdg-desktop-portal.service .

      Примечание: В xdg-desktop-portal 1.10.0 исправлено несоответствие между спецификацией и реализацией интерфейса D-Bus. [2] Как следствие, некоторые клиенты могут не работать с xdg-desktop-portal 1.10.0 или более новыми версиями.

      Firefox (84+) поддерживает данный механизм по умолчанию. Для Chromium (73+) нужно активировать поддержку вручную включением экспериментального флага:

      chrome://flags/#enable-webrtc-pipewire-capturer

      В obs-studio (27+) этот метод реализован в виде источника «Захват экрана (PipeWire)».

      Обратите внимание, что поддерживается только захват экрана целиком, а не отдельного окна/приложения [3][4].

      xdg-desktop-portal-wlr

      Для работы xdg-desktop-portal-wlr необходимо, чтобы в пользовательском сеансе systemd присутствовали переменные окружения XDG_CURRENT_DESKTOP и WAYLAND_DISPLAY . Переменная XDG_CURRENT_DESKTOP должна содержать название используемого вами композитора, например XDG_CURRENT_DESKTOP=sway . Переменную WAYLAND_DISPLAY композитор прописывает автоматически. Рекомендуемый способ перенести эти переменные окружения в пользовательский сеанс systemd — выполнить команду systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP после запуска композитора, например, в файле настроек композитора. Смотрите [5] и [6] для более подробной информации.

      Совет: Если у вас несколько мониторов, то, чтобы выбрать один из них, установите slurp и добавьте следующую конфигурацию (смотрите xdg-desktop-portal-wlr(5) § SCREENCAST OPTIONS ):

      ~/.config/xdg-desktop-portal-wlr/config
      chooser_type = simple chooser_cmd = slurp -f %o -ro

      Когда запрашивается доступ к экрану, slurp покажет вам курсор с перекрестием, и вам нужно будет щёлкнуть на экран, к которому вы хотите предоставить доступ. После выбора xdg-desktop-portal-wlr предоставит доступ к этому экрану.

      Видео

      Большинство приложений, которые полагаются на GStreamer для обработки, например, видеопотоков, должны работать «из коробки», используя плагин PipeWire GStreamer; смотрите GStreamer#PipeWire. Поэтому такие приложения, как, например, cheese , уже могут использовать его для захвата видео.

      Скрипт pw-v4l2 из пакета pipewire-v4l2 выполняет предзагрузку библиотеки ( /lib/pipewire-0.3/v4l2/libpw-v4l2.so ), которая перехватывает вызовы v4l2 и направляет видео через pipewire.

      Постобработка аудио

      EasyEffects

      EasyEffects (ранее PulseEffects) это GTK утилита предоставляющая большой набор аудио эффектов и фильтров для использования в потоках отдельных приложений и микрофона. Присутствуют большинство основных эффектов, таких как эквалайзер, выравнивание громкости, усиления низких частот, дэ-эссер и подавления шумов. Полный список эффектов и фильтров можно посмотреть на GitHub.

      Для использования установите easyeffects . Так же можете посмотреть коллекцию пользовательских пресетов для настройки. Смотрите также AutoEq — коллекция предустановок эквалайзера для наушников, созданная искусственным интеллектом.

      Примечание: Про старую версию — PulseEffects — можно прочитать здесь: PulseAudio (Русский)#PulseEffects.

      NoiseTorch

      NoiseTorch это альтернативный способ для шумоподавления. Для использования установите noisetorch AUR , либо одну из этих версий пакета noisetorch-bin AUR noisetorch-git AUR

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

      Можно сделать автозапуск с помощью systemd; смотрите [7]. Обратите внимание, что путь к исполняемому файлу noisetorch другой при установке из AUR.

      Шумоподавление для голоса

      Установите noise-suppression-for-voice и смотрите https://github.com/werman/noise-suppression-for-voice#pipewire для настройки. После, установите источник подавления шумов по умолчанию в настройках аудио. Возможно потребуется перезапустить приложение.

      JamesDSP

      JamesDSP for Linux (пакет jamesdsp AUR ) предоставляет звуковые эффекты с открытым исходным кодом для PipeWire и PulseAudio. Он использует свой собственный движок эффектов и не зависит от LADSPA, Calf и т.д. Изначально JamesDSP был опубликован как обработчик звуковых эффектов для устройств Android.

      Плагины LADSPA, LV2 и VST

      Если вы хотите использовать плагины LADSPA, LV2 и VST, вы можете применить их используя виртуальный аудиовход Pulseaudio и хост Jack Carla. Установите pipewire-pulse , pipewire-jack и carla . Для начала создайте новый аудиовход в Pulseaudio под названием default_null_sink .

      pactl load-module module-null-sink object.linger=1 media.class=Audio/Sink sink_name=default_null_sink channel_map=FL,FR

      Запустите Carla через PipeWire pw-jack carla-rack . Во вкладке Rack добавьте плагины по желанию. Удостоверьтесь, что они имеют тип stereo. Вы можете поменять их очередность, в которой они будут работать, начиная с верха списка. После этого переместитесь во вкладку Patchbay и подключите default_null_sink к вводу Carla, а вывод Carla к нужному устройству воспроизведения (наушники, колонки, HDMI и т.п.). Сохраните конфигурацию в домашнюю директорию, напр. в ~/Documents/carla_sink_effects.carxp .

      Вы можете протестировать эффекты в любом медиа приложение, производящем звук, например просмотром видео в браузере. Есть два способа сделать это. Открыть в Carla вкладку Patchbay, и перенаправить соединения нужного приложения к default_null_sink . Второй способ через pavucontrol , так же перенаправить аудио поток нужного приложения к аудиовходу default_null_sink (Этот способ запомнит перенаправление, поэтому последующие экземпляры приложения автоматически перенаправится на default_null_sink ).

      Для применения вышеописанных настроек, необходимо создать два пользовательских systemd юнита:

      ~/.config/systemd/user/jack-carla-rack.service
      [Unit] Description=Load Carla Rack JACK host [Service] PassEnvironment="PIPEWIRE_LINK_PASSIVE=true" Type=exec ExecStart=/usr/bin/pw-jack carla-rack -n [Install] WantedBy=default.target
      ~/.config/systemd/user/pulseaudio-null-sink@.service
      [Unit] Description=Load %i Pulseaudio null sink Before=jack-carla-rack.service After=pipewire-pulse.service [Service] Type=oneshot ExecStart=/usr/bin/pactl load-module module-null-sink object.linger=1 media.class=Audio/Sink sink_name=%i channel_map=FL,FR ExecStop=/usr/bin/pactl unload-module module-null-sink RemainAfterExit=yes [Install] WantedBy=default.target

      Затем измените сервис jack-carla-rack, указав полный путь к вашему сохраненному файлу конфигурации в строке Environment:

      ~/.config/systemd/user/jack-carla-rack.service.d/override.conf
      [Service] Environment="CARLA_CONFIG_FILE=/home/username/Documents/carla_sink_effects.carxp" ExecStart= ExecStart=/usr/bin/pw-jack carla-rack -n $CARLA_CONFIG_FILE

      И наконец, включите пользовательские юниты pulseaudio-null-sink@default_null_sink.service и jack-carla-rack.service .

      Обратите внимание, если вы установите default_null_sink как устройство по умолчанию, все приложения будут автоматически перенаправляться к этому аудиовходу и клавиши громкости будут менять его уровень, а не громкость устройств воспроизведения. Для того, чтобы изменять клавишами уровень громкости устройства, необходимо оставить его по умолчанию и перенаправлять аудиопоток приложения к default_null_sink через pavucontrol. (PipeWire запомнит перенаправление и использует его для последующих экземпляров приложений).

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

      Аудио

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

      Модуль alsa-monitor по умолчанию использует alsa-card-profiles для обнаружения устройств. Если этот метод не работает, попробуйте выключить api.alsa.use-acp и/или включить api.alsa.use-ucm .

      /etc/pipewire/media-session.d/alsa-monitor.conf (или ~/.config/pipewire/media-session.d/alsa-monitor.conf)
      . rules = [ < . actions = < update-props = < . api.alsa.use-acp = false .
      /etc/wireplumber/main.lua.d/50-alsa-config.lua (или ~/.config/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 и проверьте список доступных устройств:

      $ pw-record --list-targets
      Available targets ("*" denotes default): 62 58: description="Built-in Audio" prio=1872 60: description="Built-in Audio" prio=2000 * 62: description="Built-in Audio (Loopback PCM)" prio=1984

      Другой вариант решения, предложенный в баг-трекере — добавить микрофон вручную. Сперва убедитесь, что ALSA видит микрофон.

      $ arecord -l
      **** List of CAPTURE Hardware Devices **** card номер_карты: имя_карты, device номер_устройства: имя_устройства .

      Выберите свой микрофон из списка, а для дальнейшего тестирования микрофона выполните следующие команды.

      $ arecord --duration=5 --format=dat --device=hw:номер_карты,номер_устройства test-mic.wav # запись с микрофона $ aplay test-mic.wav # воспроизведение записи

      Если arecord успешно записывает микрофон, но PipeWire его не видит, попробуйте добавить файл настроек для ручного добавления микрофона.

      /etc/pipewire/pipewire.conf.d/microphone.conf (или ~/.config/pipewire/pipewire.conf.d/microphone.conf)
      context.objects = [ < factory = adapter args = < factory.name = api.alsa.pcm.source node.name = "microphone" node.description = "Undetected Microphone" media.class = "Audio/Source" api.alsa.path >> ]

      Перезапустите PipeWire для применения изменений.

      Звук не переключается автоматически при подключении нового устройства

      Чтобы автоматически переключаться на вновь подключенные устройства, раскомментируйте следующую строку (выделена жирным):

      /usr/share/pipewire/pipewire-pulse.conf (или добавьте в ~/.config/pipewire/pipewire.conf)
      . context.exec = [ < path = "pactl" args = "load-module module-always-sink" > # < path = "/usr/bin/sh" args = "~/.config/pipewire/default.pw" >] .

      Перезапустите пользовательские юниты pipewire.service и pipewire-pulse.service для применения изменений.

      Звук не переключается автоматически на наушники Bluetooth

      Выполните pactl load-module module-switch-on-connect и настройте среду рабочего стола на автоматический запуск этой команды при входе в систему. Возможно, вам потребуется выполнить wpctl set-default . Найти можно в выводе команды wpctl status . Смотрите wireplumber issue #89 для более подробной информации.

      Нет звука после подключения устройства Bluetooth

      По состоянию на 2020-12-07, если у вас нет звука после подключения Bluetooth устройства, вам скорее всего потребуется переключить стандартный аудиопоток или перенаправить его к требуемому. Воспользуйтесь pactl list sinks для просмотра доступных потоков и pactl set-default-sink для смены стандартного потока на bluetooth устройство. Можно автоматизировать через udev, используя данный скрипт как пример.

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

      Маленькая громкость

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

      Откройте alsamixer , нажимайте F6 для выбора нужной звуковой карты и удостоверьтесь, что уровень громкости стоит на 100%. alsactl должен сохранить настройки после перезагрузки.

      Увеличение RLIMIT_MEMLOCK
      Dec 13 11:11:11 HOST pipewire-pulse[99999]: Failed to mlock memory 0x7f4f659d8000 32832: This is not a problem but for best performance, consider increasing RLIMIT_MEMLOCK

      Установите realtime-privileges и добавьте пользователя в группу realtime .

      Также, увеличение memlock с 64кБ до 128кБ должно хватить для решение проблемы. Если вы запускаете pipewire-pulse через systemd/User (Русский), допишите:

      имя_пользователя soft memlock 64 имя_пользователя hard memlock 128
      Изменение частоты дискретизации

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

      /etc/pipewire/pipewire.conf (или ~/.config/pipewire/pipewire.conf)
      . context.properties = < . default.clock.rate = частота_дискретизации' .
      Изменение разрешённых частот дискретизации

      PipeWire также может динамически изменять выходную частоту дискретизации, поддерживаемую вашим ЦАП. Частота дискретизации соответствует частоте дискретизации воспроизводимого аудиопотока.

      /etc/pipewire/pipewire.conf (или ~/.config/pipewire/pipewire.conf)
      . context.properties = < . default.clock.allowed-rates = [ частота_1 частота_2 частота_3 . ] .

      например, [ 44100 48000 88200 96000 ] . Поддерживаемые значения должны быть описаны в инструкции к вашему ЦАП.

      По словам разработчика,PipeWire допускает до 16 различных частот дискретизации и переключается по возможности. Это означает, что с приведёнными выше настройками передискретизация не производится, если используемая в аудиопотоке частота поддерживается устройством.

      Чтобы проверить, с какой выходной частотой дискретизации и форматом дискретизации данные отправляются на ЦАП (возможно, вам понадобится изменить цифры):

      $ cat /proc/asound/card0/pcm0p/sub0/hw_params

      Чтобы проверить, какая частота дискретизации используется на входе, измените pcm0p на pcm0c . ( c означает «capture» — захват, p означает «playback» — воспроизведение).

      Качество звука (качество передискретизации)

      Если вы использовали PulseAudio с resample-method = speex-float-10 или soxr-vhq , то вам стоит раскомментировать и изменить строку resample.quality = 4 на 10 или максимальное 15 в блоке stream.properties в файлах /etc/pipewire/client.conf и /etc/pipewire/pipewire-pulse.conf . (скопируйте их из /usr/share/pipewire/ , если они не существуют). Не забудьте перезапустить пользовательские юниты pipewire.service и pipewire-pulse.socket (никогда не забывайте про перезапуск pipewire-pulse.socket , если хотите применить изменения настроек).

      Разница в качестве между 10 и 15 незначительна, но разница в загрузке процессора составляет 2-3 раза. А разница в задержке между 4 , 10 , 15 ещё никем не исследована. Использование resample.quality = 15 на 44100→48000 Гц на Ryzen 2600 приводит к тому, что процессы pipewire или pipewire-pulse нагружают одно ядро CPU на 4.0%.

      Вы можете сравнить ресемплеры здесь: https://src.infinitewave.ca/ (не обращайте внимания на всё, что выше 18 КГц и более 120 дБ). speex указан как "Xiph.org Speex".

      PipeWire использует свой собственный алгоритм передискретизации под названием Spa. Как и в случае sox и Speex speexenc , алгоритм PipeWire доступен в виде автономной версии: spa-resample . Использование:

      $ spa-resample -q 15 -f s24 -r 48000 input16bit44100orAnythingElse.wav output24bit48000hz.wav

      Вероятно, можно как-то использовать другие ресемплеры, создав свой собственный выход. Или просто использовать плагин в проигрывателе (например, в Qmmp есть плагин SoX).

      Внешняя звуковая карта не включается после переподключения

      Проверьте ~/.config/pipewire-media-session/default-profile . Если присутствуют значения с стандартным профилем "off", удалите их. Если же это не поможет, удалите все файлы из ~/.config/pipewire/media-session.d/ и перезапустите пользовательскую службу pipewire.service .

      Нет звука или pactl info показывает Failure: Connection refused

      Эта ошибка говорит о том, что приложение не может присоединиться к службе PipeWire-Pulse. Убедитесь, что /etc/pipewire/pipewire-pulse.conf существует и файл не пустой, и перезапустите пользовательскую службу pipewire-pulse.service .

      Если этот способ не исправит ошибку, запустите strace -f -o /tmp/pipe.txt pactl info для дебага и используйте /tmp/pipe.txt для помощи в IRC чате #pipewire или списках рассылки.

      Низкое качество звука через Bluetooth

      В случае, если звук через Bluetooth заикается, проверьте статус пользовательского юнита pipewire.service . Если у вас есть ошибки по типу:

      Feb 17 18:23:01 HOST pipewire[249297]: (bluez_input.18:54:CF:04:00:56.a2dp-sink-60) client too slow! rate:512/48000 pos:370688 status:triggered

      проверьте используемый кодек командой pactl list sinks и попробуйте поменять его изменением bluez5.codecs на один из следующих: sbc aac ldac aptx aptx_hd . Также можно попробовать включить поддержку mSBC (исправляет микрофон на Sony 1000XM3, то есть Headphones WH-1000XM3 и Earbuds WF-1000XM3), и кодек SBC-XQ.

      /etc/pipewire/media-session.d/bluez-monitor.conf (или ~/.config/pipewire/media-session.d/bluez-monitor.conf)
      . properties = < . bluez5.enable-msbc = true bluez5.enable-sbc-xq = true bluez5.codecs = [sbc sbc_xq] .
      /etc/wireplumber/bluetooth.lua.d/51-bluez-config.lua (или ~/.config/wireplumber/bluetooth.lua.d/51-bluez-config.lua)

      bluez_monitor.properties =

      Перезапустите пользовательскую службу pipewire.service для применения изменений.

      Заметная задержка звука при воспроизведении

      Обычно это происходит после отключения узла в период неактивности.

      Если вы используете pipewire-media-session , отключить это можно путём редактирования одного из файлов /etc/pipewire/media-session.d/*-monitor.conf в зависимости от того, где происходит задержка, заменив значение session.suspend-timeout-seconds на 0 для отключения или поэкспериментировав с другими значениями.

      Либо же закомментируйте строку suspend-node в файле /etc/pipewire/media-session.d/media-session.conf .

      Перезапустите службы pipewire и pipewire-pulse для применения изменений, или перезагрузитесь.

      Если вы используете wireplumber , создайте новый файл для переопределения настроек по умолчанию:

      ~/.config/wireplumber/main.lua.d/51-disable-suspension.lua (или /etc/wireplumber/main.lua.d/51-disable-suspension.lua)
      table.insert (alsa_monitor.rules, < matches = < < -- Соответствует всем источникам. < "node.name", "matches", "alsa_input.*" >, >, < -- Соответствует всем выводам. < "node.name", "matches", "alsa_output.*" >, >, >, apply_properties = < ["session.suspend-timeout-seconds"] = 0, -- 0 выключает приостановку >, >)

      Вместо полного отключения приостановки можно задать желаемое количество секунд задержки перед приостановкой.

      Пропадание звука при проигрывании других потоков

      Обычно проблему можно диагностировать в журнале пользовательской службы pipewire-pulse.service , в котором могут обнаружиться такие строки:

      pipewire-pulse[21740]: pulse-server 0x56009b9d5de0: [Nightly] UNDERFLOW channel:0 offset:370676 underrun:940

      Согласно официальному гайду PipeWire по решению проблем, для решения проблемы при использовании pipewire-media-session измените следующие настройки:

      /etc/pipewire/media-session.d/alsa-monitor.conf (или ~/.config/pipewire/media-session.d/alsa-monitor.conf
      api.alsa.headroom = 1024
      /etc/wireplumber/main.lua.d/50-alsa-config.lua (или ~/.config/wireplumber/main.lua.d/50-alsa-config.lua)
      apply_properties = < ["api.alsa.headroom"] = 1024, >,

      Если звук заикается из-за блокировки страниц в ядре или создаваемых планировщиком задержек, смотрите Gaming#Tweaking kernel parameters for response time consistency.

      Искажённый звук
      • Для микрофонов, найдите проблемную звуковую карту в alsamixer и уменьшите уровень "Mic Boost" или "Internal Mic Boost".
      • Попробуйте уменьшить частоту дискретизации до 44100 (44.1 кГц), как описано в разделе #Изменение частоты дискретизации.
      Различные проблемы после простоя

      Если звук пропал или исказился после пробуждения системы после сна, возможно потребуется реинициализировать ALSA:

      # alsactl init
      Большая задержка при использовании USB ЦАП (например, ЦАП Schiit)

      Изменение частоты дискретизации или формата может помочь уменьшить задержку с некоторыми ЦАП, такими как Schiit Hel 2.[8] Используя правила соответствия в pipewire-media-session, мы можем установить свойства для устройств.[9]

      Скопируйте стандартный файл настроек /usr/share/pipewire/media-session.d/alsa-monitor.conf в /etc/pipewire/media-session.d/ или ~/.config/pipewire/media-session.d/ . Затем добавьте примерно такой блок правил:

      /etc/pipewire/media-session.d/alsa-monitor.conf (или ~/.config/pipewire/media-session.d/alsa-monitor.conf)
      . rules = < . < matches = [ < node.name >] actions = < update-props = < audio.format = "S24_3LE" audio.rate = 96000 # Удваивайте это значение, пока не возникнут проблемы api.alsa.period-size = 128 .

      Узнать alsa_output.имя-узла можно с помощью pw-top .

      Ваш ЦАП может поддерживать другой формат или частоту дискретизации. Можно проверить, что поддерживает ЦАП, через ALSA:

      Сначала узнайте номер карты вашего ЦАП:

      $ aplay -l
      . card 3: S2 [Schiit Hel 2], device 0: USB Audio [USB Audio] Subdevices: 0/1 Subdevice #0: subdevice #0 .

      В данном примере это карта 3. Получите все поддерживаемые частоты дискретизации и форматы:

      $ cat /proc/asound/cardX/streamX
      . Playback: . Interface 1 Altset 1 Format: S16_LE Channels: 2 Endpoint: 0x05 (5 OUT) (ASYNC) Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000 Data packet interval: 125 us Bits: 16 . Interface 1 Altset 2 Format: S24_3LE Channels: 2 Endpoint: 0x05 (5 OUT) (ASYNC) Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000 Data packet interval: 125 us Bits: 24 . Interface 1 Altset 3 Format: S32_LE Channels: 2 Endpoint: 0x05 (5 OUT) (ASYNC) Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000 Data packet interval: 125 us Bits: 32 . .

      В данном случае случае S16_LE, S24_3LE, S32_LE — это поддерживаемые форматы, а 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000 — поддерживаемые частоты дискретизации для всех форматов.

      Нет звука от USB ЦАП до 30% громкости

      Некоторые USB ЦАП не выдают звук, если громкость ниже определённой [10]. Обычно это около 25-30%, что приводит к некомфортному начальному уровню громкости и невозможности поддерживать низкий уровень громкости. Решением является игнорирование аппаратного управления громкостью путём установки ["api.alsa.soft-mixer"] в true .

      Если используется wireplumber , можно обновить конфигурацию /usr/share/wireplumber/main.lua.d/50-alsa-config.lua , добавив туда фрагмент с помощью table.insert :

      ~/.config/wireplumber/main.lua.d/51-volume-fix.lua
      table.insert (alsa_monitor.rules, < matches = < < -- Это правило охватывает все карты. < "device.name", "matches", "alsa_card.*" >, >, >, -- Применение свойств в найденным объектам. apply_properties = < -- Не использовать аппаратный микшер для управления громкостью. -- Использовать только программную громкость. Микшер по-прежнему -- используется для отключения неиспользуемых путей в зависимости -- от выбранного порта. ["api.alsa.soft-mixer"] = true, >>)

      Затем перезапустите pipewire. Установите мастер-громкость в alsamixer , а затем сохраните настройки с помощью # alsactl store . Теперь микшер громкости должен работать без проблем.

      Аудио в режиме реального времени не работает

      Если в статусе пользовательского юнита pipewire.service есть ошибка RTKit error: org.freedesktop.DBus.Error.AccessDenied , это означает, что демон pipewire не получил приоритет реального времени. Смотрите [11] для более подробной информации.

      Одновременный вывод на несколько выходов на одной звуковой карте

      Создайте копию файла /usr/share/alsa-card-profile/mixer/profile-sets/default.conf , чтобы изменения были постоянными. В нём мы определим профиль, объединяющий два стандартных отображения для аналогового и HDMI выводов.

      /usr/share/alsa-card-profile/mixer/profile-sets/multiple.conf
      [General] auto-profiles = no [Mapping analog-stereo] device-strings = front:%f channel-map = left,right paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2 paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic priority = 15 [Mapping hdmi-stereo] description = Digital Stereo (HDMI) device-strings = hdmi:%f paths-output = hdmi-output-0 channel-map = left,right priority = 9 direction = output [Profile multiple] description = Analog Stereo Duplex + Digital Stereo (HDMI) Output output-mappings = analog-stereo hdmi-stereo input-mappings = analog-stereo

      Теперь настроим pipewire-media-session на использование нового профиля карты для нужных устройств. Идентификаторы можно узнать с помощью $ pw-cli dump device .

      /etc/pipewire/media-session.d/alsa-monitor.conf
      rules = [ < matches = [ < alsa.card_name = "HDA Intel PCH" >] actions = < update-props = < api.alsa.use-acp = true device.profile-set = "multiple.conf" device.profile = "multiple" api.acp.auto-profile = false api.acp.auto-port = false >> > ]
      Нет звуков уведомлений в Discord

      Это может быть вызвано слишком низким значением min.quantum, попробуйте установить его на более чем 700. Можно сделать переопределение специально для Discord, добавив следующее правило в раздел pulse.rules в pipewire-pulse.conf.

      /etc/pipewire/pipewire-pulse.conf (или ~/.config/pipewire/pipewire-pulse.conf)
      . pulse.rules = [ . < # Discord notification sounds fix matches = [ < application.process.binary = "Discord" >] actions = < update-props = < pulse.min.quantum = 1024/48000 # 21ms >> > .

      Видео

      OBS ничего не показывает, даже если спрашивает окно/экран

      Если вы уверены, что у вас установлен xdg-desktop-portal , а также xdg-desktop-portal-gtk или xdg-desktop-portal-kde , проверьте статус этих демонов.

      В OBS, если всё работает, в стандартном выводе должно быть что-то такое:

      . info: [pipewire] desktop selected, setting up screencast info: [pipewire] created stream 0x5632d7456850 info: [pipewire] playing stream…

      Для многомониторных установок пакет slurp позволит захватить все экраны.

      Смотрите также

      • Wiki — PipeWire вики на Freedesktop GitLab
      • Pipewire Update Blog Post — Пост в блоге от января 2018 с описанием состояния разработки на тот момент
      • PipeWire Late Summer Update 2020 — Пост в блоге от сентября 2020

      Retrieved from "https://wiki.archlinux.org/index.php?title=PipeWire_(Русский)&oldid=751424"

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *