Как мне автоматически переключить вход PulseAudio на гарнитуру при подключении?

Используя Xubuntu 18.04, у меня есть подключаемая гарнитура с собственным входом для микрофона. Каждый раз, когда я его подключаю, мне нужно запускать pavucontrol , щелкать вкладку «Устройства ввода», затем выбирать «Микрофон гарнитуры» (вместо «Внутренний микрофон») в раскрывающемся списке «Порт».

Каждый раз, когда я отсоединяю гарнитуру, «Порт» снова переключается на «Внутренний микрофон», поэтому мне придется повторить процесс в следующий раз, когда я подключу гарнитуру.

Есть ли способ сделать это автоматически или с минимальными усилиями с моей стороны?

Я поискал в Интернете и увидел совет по обеспечению PulseAudio module-switch-on-connect загружен, но я проверил pactl list short modules , и кажется, что он уже загружен.

0
задан 17 August 2020 в 23:15

2 ответа

Я почти исправил это на своем ноутбуке с Debian 10 следующим образом:

  1. Отключите гарнитуру.
  2. Отредактируйте /etc/pulse/daemon.conf - установите log-level = отладка
  3. Перезапустите pulseaudio: pulseaudio -k
  4. Запустите journalctl --follow в отдельном окне терминала / tmux
  5. Подключите гарнитуру и посмотрите, что произойдет. module-alsa-card.c: Разъем «Разъем микрофона для наушников» теперь подключен. указывает, какой разъем обнаружен.
  6. Изменить / usr / share / pulseaudio / alsa-Mixer / paths / analog -input-headset-mic.conf , найдите раздел [Jack Headphone Mic] и измените состояние .
0
ответ дан 21 August 2020 в 07:57

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

Итак, вот сценарий, который я создал, который вы можете добавить при запуске сеанса (к сожалению, не для всего компьютера, потому что PulseAudio — это служба, которая работает независимо для каждого пользователя).

#!/bin/bash
index=$(pacmd list-sources | egrep 'index|ports|analog-input-headset-mic' | egrep '\*\sindex:\s+[0-9]'  | cut -d':' -f2);

acpi_listen | while IFS= read -r line;
do
    if [ "$line" = "jack/headphone HEADPHONE plug" ]
    then
       pacmd set-source-port $index analog-input-headset-mic;
    elif [ "$line" = "jack/headphone HEADPHONE unplug" ]
    then
       pacmd set-source-port $index analog-input-internal-mic;
    fi
done

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

1
ответ дан 19 October 2020 в 06:58

Другие вопросы по тегам:

Похожие вопросы: