32

Я купил звуковую карту USB. Я хотел бы настроить свой рабочий стол Linux так, чтобы он предпочитал USB-устройство, если оно подключено и автоматически переключается, когда устройство (не) подключено. Возможно ли это и как?

7 ответов7

27

Найдите свою карточку с

$ cat /proc/asound/cards

Чтобы получить действительные имена карт ALSA, используйте aplay:

$ aplay -l | awk -F \: '/,/{print $2}' | awk '{print $1}' | uniq

и затем создайте /etc/asound.conf со следующим:

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw           
    card 1
}

Замените "карточка 1" номером или названием вашей карточки, указанным выше.

Кроме того, вы можете изменить порядок своих карт, чтобы ваша карта USB была картой 0 и работала без редактирования asound.conf .

15

это метод выбора звуковой карты по умолчанию в 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 index = -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

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

2

Ответ от 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". Другие люди, кажется, использовали его, поэтому я сделал то же самое ... что это значит, я не могу сказать.

2

Я также не смог получить вывод с моего 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
1

Хотя вы можете изменить карту alsa по умолчанию, отредактировав .asoundrc или системный asound.conf, у этого подхода есть пара существенных проблем.

Это хрупкий и требует перезапусков приложений, чтобы соблюдать.

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

0

Инструменты pavucontrol и paprefs также могут помочь в настройке, но, возможно, это слишком просто :) или, может быть, это просто испортит все, что вы уже сделали.

-1

Вот вариант ответов 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, чтобы полностью отключить его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .