У PulseAudio кожна звукова карта має набір профілів, пов’язаних із нею. Набір профілів містить кілька профілів, і це профілі, які ви бачите при переліку карт (або при перегляді різних графічних інтерфейсів PulseAudio).
Є default
профіль, який в першу чергу містить речі, корисні для аналогового виходу звуку. Існує також extra-hdmi
профіль, який автоматично застосовується до деяких виходів HDMI і надасть варіанти до 5.1. На жаль /usr/share/pulseaudio/alsa-mixer/profile-sets
, обидва ці профілі, на жаль , не вдається, і ви не можете їх редагувати (я подав помилку про налагодження 736708 про це.) Відповідно до документації, ви можете вимкнути автовідкриття на основі udev і налаштувати все вручну - щоб ми вказали повний шлях до профілю. Але виявляється, що, хоча це не задокументовано, udev може також вказати повний шлях.
Встановіть правило udev для призначення набору профілів
Ви призначаєте набір профілів у правилі udev, встановлюючи PULSE_PROFILE_SET
змінну середовища udev. Документовано, що він може приймати файл лише у вищезгаданому /usr
підкаталозі, але також працює повний шлях. У моєму випадку я створив це правило:
# cat /etc/udev/rules.d/95-local-pulseaudio.rules
ATTRS{vendor}=="0x8086", ATTRS{device}=="0x1c20", ENV{PULSE_PROFILE_SET}="/etc/pulse/my-hdmi.conf"
Вам потрібно буде скористатися відповідними номерами постачальників та пристроїв PCI, які ви можете легко отримати lspci -nn
.
Після створення правила udev ви можете застосувати його негайно udevadm trigger -ssound
. Ви, ймовірно, захочете також відновити свої initramfs ( update-initramfs -u
)
Переконайтеся, що правило udev набуло чинності udevadm info --query=all --path /sys/class/sound/card0
(звичайно, використовуйте відповідний номер картки). Ви повинні побачити E: PULSE_PROFILE_SET=/etc/pulse/my-hdmi.conf
у висновку. Якщо ні, не продовжуйте. Це не спрацює. З вашими правилами udev щось не так (або, можливо, ви їх не викликали - ви завжди можете спробувати перезавантажити).
Створіть файл /etc/pulse/my-hdmi.conf
Примітка . Карта каналів, мабуть, специфічна для системи. Вам знадобиться поекспериментувати, щоб підібрати це для вашої системи. Мені пощастило, мій 7.1 макет просто передбачає випадання кінцевих елементів для створення 5.1, 4.0 та ін. Інструкції наведені нижче.
Здебільшого це копіювання та вставлення. Кожен розділ відрізняється (а) назвою, (б) описом, (в) картою каналу, (г) [необов'язково] пріоритетом.
[General]
auto-profiles = yes
[Mapping hdmi-stereo]
device-strings = hdmi:%f
channel-map = front-left,front-right
description = Digital Stereo (HDMI)
priority = 4
direction = output
paths-output = hdmi-output-0
[Mapping hdmi-surround-40]
device-strings = hdmi:%f
channel-map = front-left,front-right,rear-left,rear-right
description = Digital Quadrophonic (HDMI)
priority = 1
direction = output
paths-output = hdmi-output-0
[Mapping hdmi-surround-51]
device-strings = hdmi:%f
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
description = Digital Surround 5.1 (HDMI)
priority = 2
direction = output
paths-output = hdmi-output-0
[Mapping hdmi-surround-71]
description = Digital Surround 7.1 (HDMI)
device-strings = hdmi:%f
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
priority = 3
direction = output
paths-output = hdmi-output-0
Тепер, щоб перевірити це:
- Перезапустіть PulseAudio:
pulseaudio -k
як ваш звичайний користувач, припускаючи, що ви використовуєте демони користувача (за замовчуванням). Почніть його знову, навіть простий aplay -l
буде працювати.
- Переключіться на профіль 7.1. Особисто я раніше
pactl set-card-profile 0 "output:hdmi-surround-71"
це робив, але графічний інтерфейс також буде працювати чудово.
- Біжи
speaker-test -c 8 -t w
. Слід почати оголошувати імена ораторів, сподіваємось, правильне ім’я кожного виступу. Якщо імена не походять від правильного динаміка, вам доведеться змінити карту каналів, щоб їх правильно виправити. Після кожної зміни карти каналу потрібно знову перезапустити PulseAudio.
Бонус! Більше корисних налаштувань
В /etc/pulse/daemon.conf
, є кілька налаштувань ви можете змінити:
enable-remixing
- Якщо це ввімкнено, стереосигнал відіграє лівий канал з усіх трьох ваших лівих колонок, а правий канал - з правого динаміка. Якщо вимкнено, вийдуть лише передні два. Зауважте, що ви також можете змінити профіль на стерео (щоб тільки посилати стереозвук із порту HDMI, і дозволити вашому приймачу вирішувати, як його нанести на колонки).
enable-lfe-remixing
- Аналогічно, але для реміксу на канал LFE (сабвуфер).
default-sample-format
- Якщо ваша настройка HDMI підтримує більше 16-бітового звуку, можливо, ви захочете збільшити це до s32le
(із замовчуванням s16le
).
default-sample-rate
, alternate-sample-rate
- Можливо, ви захочете поміняти їх (і, можливо, навіть повністю відключити 44,1 КГц), якщо ви здебільшого використовуєте матеріал з DVD-джерелом, який зазвичай становить 48 КГц. Або якщо ваш приймач HDMI підтримує його, ви можете пройти весь шлях до 192 КГц. Зауважте, що 176 кГц має приємну властивість бути навіть кратним як 44,1, так і 48 кГц. Нижче див., Як визначити, що підтримує ваш приймач
default-sample-channels
- Це насправді не має значення. Профіль, ймовірно, перекриває його ...
Звичайно, вам доведеться перезапустити PulseAudio після зміни цього файлу.
Знову бонус! Перегляньте, що підтримує ваш приймач
Є eld.*
файли, в /proc/asound
яких ви повідомляєте, що інший кінець посилання HDMI вимагає підтримувати. Наприклад:
# cat /proc/asound/card0/eld#3.0
monitor_present 1
eld_valid 1
monitor_name TX-SR606
connection_type HDMI
eld_version [0x2] CEA-861D or below
edid_version [0x3] CEA-861-B, C or D
manufacture_id 0xcb3d
product_id 0x863
port_id 0x0
support_hdcp 0
support_ai 1
audio_sync_delay 0
speakers [0x4f] FL/FR LFE FC RL/RR RLC/RRC
sad_count 8
sad0_coding_type [0x1] LPCM
sad0_channels 2
sad0_rates [0x1ee0] 32000 44100 48000 88200 96000 176400 192000
sad0_bits [0xe0000] 16 20 24
sad1_coding_type [0x1] LPCM
sad1_channels 8
sad1_rates [0x1ee0] 32000 44100 48000 88200 96000 176400 192000
sad1_bits [0xe0000] 16 20 24
sad2_coding_type [0x2] AC-3
sad2_channels 8
sad2_rates [0xe0] 32000 44100 48000
sad2_max_bitrate 640000
sad3_coding_type [0x7] DTS
sad3_channels 8
sad3_rates [0xc0] 44100 48000
sad3_max_bitrate 1536000
sad4_coding_type [0x9] DSD (One Bit Audio)
sad4_channels 6
sad4_rates [0x40] 44100
sad5_coding_type [0xa] E-AC-3/DD+ (Dolby Digital Plus)
sad5_channels 8
sad5_rates [0xc0] 44100 48000
sad6_coding_type [0xb] DTS-HD
sad6_channels 8
sad6_rates [0x1ec0] 44100 48000 88200 96000 176400 192000
sad7_coding_type [0xc] MLP (Dolby TrueHD)
sad7_channels 8
sad7_rates [0x1480] 48000 96000 192000
Таким чином, ви можете бачити, що мій приймач підтримує LPCM (лінійний PCM, тобто нестиснений аудіо) на 8 каналах, 192 КГц, 24-бітний звук. Він також підтримує AC3, DTS, DSD, DD +, DTS-HD та Dolby TrueHD. Отже, якщо у мене закодовані файли, я можу пропустити ці формати (якщо, звичайно, мій медіаплеєр підтримує це, mpv
мабуть, так і є).