Автоматически выбирать правильный звуковой выход при подключении HDMI.

Вопрос или проблема

Я использую Fedora 40. Я попеременно подключаю к единственному HDMI-порту моего ноутбука монитор (без динамиков) и свою домашнюю кинотеатрную систему. Я хотел бы автоматически направлять звуковой вывод на систему домашнего кинотеатра, если она подключена, а в противном случае использовать внутренние динамики. В настоящее время звуковой вывод автоматически переключается на HDMI, если это было ранее настроено, независимо от того, какое устройство подключено.

Есть ли что-то, что я могу настроить, чтобы запоминать желаемый звуковой вывод для каждого подключенного устройства, вместо того чтобы одинаково обрабатывать все устройства, подключенные через HDMI?

Ответ или решение

Теория:

При использовании современных операционных систем, таких как Fedora 40, управление аудио устройствами становится более интеллектуальным, но всё ещё может требовать ручной настройки для удовлетворения специфических условий пользователя. Проблема, указанная вами, связана с необходимостью автоматического выбора правильного аудиовыхода при подключении различных HDMI-устройств к ноутбуку. Главная задача состоит в том, чтобы система сама различала, к какому устройству подключён HDMI кабель — к монитору без динамиков или к домашней аудиосистеме с динамиками — и соответственно переключала аудиовыход на нужное устройство.

Пример:

Рассмотрим типичную ситуацию: у вас есть ноутбук с одинарным HDMI портом. Каждый раз, когда вы подключаете HDMI кабель, Fedora автоматически переключает аудиовыход на HDMI, не различая, к какому устройству вы его подключили. Это неудобно, когда ваше намерение использовать домашнюю аудиосистему только в случае, когда она подключена.

Почему это происходит? Операционная система, по умолчанию, переключает аудиовыход на HDMI, так как предполагает, что новым подключением мы добавляем устройства с собственной аудио поддержкой. Однако не имеется встроенной функциональности, которая могла бы идентифицировать конкретное подключённое устройство и переключить выход в зависимости от него.

Применение:

  1. Использование udev для распознавания подключённых HDMI устройств:

    Во-первых, нужно пользоваться udevadm, чтобы идентифицировать различия между устройствами. Используйте команду:

    udevadm monitor --environment --udev

    Подключите устройства поочерёдно и зафиксируйте отличия в параметрах, которые могут быть использованы для идентификации (например, ID_VENDOR_ID, ID_MODEL_ID).

  2. Создание скрипта для переключения звука:

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

    #!/bin/bash
    
    HOME_THEATER_ID="<введите ID вашей аудиосистемы>"
    
    CURRENT_DEVICE_ID=$(udevadm info -q property --name=hdmi --attribute-walk | grep "ID_MODEL_ID" | cut -d "=" -f2)
    
    if [ "$CURRENT_DEVICE_ID" == "$HOME_THEATER_ID" ]; then
      pactl set-default-sink alsa_output.pci-<YOUR-HARDWARE-ID>.hdmi-stereo
    else 
      pactl set-default-sink alsa_output.pci-<YOUR-HARDWARE-ID>.analog-stereo
    fi

    Проверьте идентификаторы на соответствие вашему устройству.

  3. Настройка автозапуска скрипта через udev:

    Добавьте правило в /etc/udev/rules.d/99-hdmi-sound-switch.rules:

    ACTION=="change", SUBSYSTEM=="drm", RUN+="/path/to/your/script.sh"

    Не забудьте сделать ваш скрипт исполняемым:

    chmod +x /path/to/your/script.sh
  4. Проверка и отладка:

    После установки правил и прав, перезапустите службу udev:

    sudo udevadm control --reload-rules
    sudo systemctl restart udev

    Проверьте функциональность, подключая устройства и проверяя, корректно ли система переключает аудио устройства.

Заключение:

Эти шаги позволяют персонализировать настройку аудиовыхода в зависимости от подключения разных HDMI устройств. Несмотря на то, что Fedora сама по себе автоматизирует многие аспекты управления устройствами, пользователям остаётся возможность детализации настроек через udev и scripts, делая операционную систему более адаптивной к их конкретным требованиям.

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

Капча загружается...