USB-микрофон через USB-переключатель не работает с TeamSpeak

Я запускаю USB-микрофон через USB-переключатель (вместе с мышью и клавиатурой) на нескольких компьютерах.

Когда я переключаюсь с другого компьютера, мой микрофон повторно активируется Linux, но TeamSpeak не может активировать его или все еще думает, что он неисправен / недоступен. Мне нужно изменить конфигурацию "Устройство захвата" в Teamspeak с "По умолчанию" на мой USB-микрофон или наоборот, чтобы он снова заработал.

В более старой установке Ubuntu я каким-то образом решил эту проблему с помощью Google, чтобы USB-микрофон всегда казался активным (даже если он был отключен), но я не могу найти это исправление снова.

1 ответ

Решение

Итак, после потоотделения и слез, прочитав тонны документации и попробовав несколько дней подряд, у меня есть решение. не очень хороший, но у меня есть.

сначала добавьте в конец свой конфиг pulseaudio (в моем случае sudo nano /etc/pulse/default.pa) следующий конфиг:

# create virtual sink named Mic and loopback USB Microphone to virtual sink
load-module module-null-sink sink_name=Mic
load-module module-loopback source=alsa_input.usb-Thomann_SC450USB-00.iec958-stereo sink=Mic source_dont_move=true sink_dont_move=true
set-default-source Mic.monitor

это создает "нулевой приемник", который не исчезает, когда какое-либо устройство отсоединяется, поскольку оно не принадлежит ни одному устройству, которое также имеет соответствующий источник монитора, который TS3 может использовать в качестве постоянного источника. затем создается петля от микрофона до нулевого приемника. Теперь перезапустите pulseaudio:

pulseaudio -k

Теперь вам нужно убедиться, что TS3 постоянно использует микрофонный монитор в качестве источника, открыв pavucontrol и убедитесь, что на вкладке "Запись" "TeamSpeak3" связан с "Монитор нулевого выхода" в раскрывающемся списке.

обычно этого было бы достаточно, но pulseaudio не подключает петлю после повторного подключения микрофона. Для этого нам нужен Udev.

сначала создайте скрипт, который может быть вызван udev:

sudo nano /usr/local/bin/udev_sound

и добавьте следующий скрипт:

#!/bin/bash

# check if microphone is mounted already
while ! $(pactl list sources|grep -q 'alsa_input.usb-Thomann_SC450USB-00.iec958-stereo')
do
  let "n += 1"
  sleep 1
  if [ "$n" -eq 10 ]
    then break
  fi
  echo "running"
done

# loopback microphone to null sink
export PULSE_RUNTIME_PATH="/run/user/$(id -u)/pulse/"
pactl load-module module-loopback source=alsa_input.usb-Thomann_SC450USB-00.iec958-stereo sink=Mic source_dont_move=true sink_dont_move=true

Теперь сделайте скрипт исполняемым:

sudo chmod +x /usr/local/bin/udev_sound

в течение 10 секунд будет проверяться, подключен ли микрофон, и если да, снова создайте петлю Pulseaudio, которая была удалена при отсоединении микрофона.

Теперь давайте создадим правило udev, запускающее скрипт, когда устройство повторно подключается:

sudo nano /lib/udev/rules.d/91-someNameYouWillRecogniseAsYours.rules

со следующим содержанием:

ACTION=="add", SUBSYSTEM=="sound", ATTR{id}=="SC450USB", RUN+="/bin/su YOURuSERnAME -c 'screen -d -m /usr/local/bin/udev_sound'"

Теперь перезапустите Udev:

sudo /etc/init.d/udev restart

это проверяет, добавлено ли (подключено) ли устройство с определенным идентификатором, и запускает сценарий, который мы только что создали под вашим именем пользователя (не забудьте изменить его). это важно, поскольку в большинстве систем pulseaudio запускается в пользовательском пространстве. screen -d -m важно, чтобы скрипт выполнялся неблокирующим, иначе микрофон не был бы подключен, пока скрипт не закончил работу.

Ваша специфичная для устройства команда, скорее всего, будет выглядеть по-другому, то, какой "ATTR" и другие идентификаторы будут использоваться, зависит от вашего устройства, как узнать, как это описано миллион раз онлайн.

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

во всех этих шагах замените "alsa_input.usb-Thomann_SC450USB-00.iec958-стерео" на любое имя вашего устройства!

В целом, я могу сказать, что ненавижу Udev. у него есть миллион специальных вещей, которые он обрабатывает не так, как обычная система Linux, и его практически невозможно отладить. Я никогда не хочу видеть это снова.

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