Я купил звуковую карту USB. Я хотел бы настроить свой рабочий стол Linux так, чтобы он предпочитал USB-устройство, если оно подключено и автоматически переключается, когда устройство (не) подключено. Возможно ли это и как?
Я купил звуковую карту USB. Я хотел бы настроить свой рабочий стол Linux так, чтобы он предпочитал USB-устройство, если оно подключено и автоматически переключается, когда устройство (не) подключено. Возможно ли это и как?
Ответы:
Найдите свою карточку с
$ cat /proc/asound/cards
Чтобы получить действительные имена карт ALSA, используйте aplay
:
$ aplay -l
и затем создайте /etc/asound.conf
со следующим:
pcm.!default {
type hw
card 1
}
ctl.!default {
type hw
card 1
}
Замените «карточка 1» номером или названием вашей карточки, указанным выше.
Кроме того, вы можете изменить порядок своих карт, чтобы ваша карта USB была картой 0 и работала без редактирования asound.conf
.
defaults.pcm.card 1 defaults.ctl.card 1
конфиг
Это метод выбора звуковой карты по умолчанию в Alsa. Возможно, вы захотите установить Alsa, чтобы этот метод работал, если вы используете Pulse Audio.
cat / proc / asound / modules
выведет список ваших звуковых модулей. Вывод команды будет таким (например):
0 snd_hda_intel
1 snd_usb_intel
Вы можете довольно легко понять, какая из них является вашей звуковой картой USB сверху.
nano /etc/modprobe.d/alsa-base.conf
отредактируйте этот alsa-base.conf таким образом, чтобы ваша предпочтительная карта имела индекс = -2 / 0, а другая карта имела индекс = -1 / 1 (придерживайтесь -2 и -1)
параметры индекса snd_hda_intel = -1
параметры индекса snd_usb_intel = -2
в этом случае USB-устройство является предпочтительным устройством.
если у вас есть две разные карты с одинаковым именем из выходных данных, например:
параметры snd_hda_intel
параметры snd_hda_intel
выполните эту команду, чтобы узнать, что есть что:
cat / proc / asound / cards
затем отредактируйте модули следующим образом:
параметры snd_hda_intel enable = 1 index = 0
параметры snd_hda_intel enable = 0 index = 1
может потребоваться перезагрузка. поэтому вам, возможно, придется вручную переключать звуковые карты.
Я также не смог получить вывод с моего USB-устройства. Мой cat /proc/asound/modules
вывод был:
0 snd_hda_intel
1 snd_hda_intel
2 snd_usb_audio
Я попробовал оба ответа, описанные здесь, которые не помогли (со многими комбинациями индекса и большим количеством перезапуска). Я думаю, проблема была в том, что мое USB-устройство инициализировалось после загрузки. Как бы то ни было, поэтому мое рабочее решение - занести в черный список другие 2 звуковых устройства, обновив их /etc/modprobe.d/blacklist.conf
как
blacklist snd_hda_intel
Ответ от Matija Nalis только для меня сработал (alsamixer изменил значение по умолчанию, но другие вещи, такие как aplay и firefox, упрямо застряли с неправильным значением по умолчанию) Этот пример из вики Debian работал для меня (на ноутбуке CentOS-6):
defaults.pcm.!card Generic_1
defaults.ctl.!card Generic_1
defaults.pcm.!device 0
defaults.ctl.!device 0
Для справки: ALSA плохо документирована, и особенно это очень простые вещи, такие как выбор карты для использования слишком сложен. Хуже того, кажется, что между системами происходит изменение. Кроме того, я получил этот тег «Generic_1» от aplay -l, где он появляется в списке как «карточка 1». Другие люди, казалось, использовали его, поэтому я сделал то же самое ... что это значит, я не могу сказать.
Хотя вы можете изменить карту alsa по умолчанию, отредактировав .asoundrc или системный asound.conf, у этого подхода есть пара существенных проблем.
Это хрупкий и требует перезапусков приложений, чтобы соблюдать.
Если вы хотите переключать карты на лету, тогда вам действительно нужно использовать звуковой сервер, который правильно абстрагирует приложения от звуковой карты, например pulseaudio.
Вот вариант ответов Matija Nalis и Tel. Вот что сработало для меня:
~ / .Asoundrc
defaults.pcm.!card 1
defaults.ctl.!card 1
(Odroid C0, Debian Jessie, аудио HDMI как карта 0 и звуковая карта USB как карта 1 согласно aplay -l)
Примечание: другие методы не работали для меня, так как / proc / asound / modules не существует, и нет звукового модуля hdmi для черного списка или с низким приоритетом, он встроен в ядро. Кажется, мне пришлось бы перекомпилировать ядро без поддержки аудио hdmi, чтобы полностью отключить его.