2013-08-01 07:17:57 +0000 2013-08-01 07:17:57 +0000
37
37

Jak sprawić, aby Alsa automatycznie wybierała preferowane urządzenie dźwiękowe?

Kupiłem kartę dźwiękową USB. Chciałbym skonfigurować mój pulpit z Linuxem tak, aby preferował urządzenie USB, jeśli jest podłączone i automatycznie przełączał się, gdy urządzenie jest (od)podłączane. Czy jest to możliwe, i jak?

Odpowiedzi (6)

37
37
37
2013-08-09 17:47:31 +0000

Znajdź swoją kartę za pomocą

$ cat /proc/asound/cards

Aby uzyskać prawidłowe nazwy kart ALSA, użyj aplay:

$ aplay -l

a następnie utwórz /etc/asound.conf o następującej treści:

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw           
    card 1
}

Zastąp “card 1” numerem lub nazwą swojej karty ustaloną powyżej.

Alternatywnie, możesz zmienić kolejność kart tak, że twoja karta USB będzie kartą 0 i będzie działać bez edycji asound.conf.

16
16
16
2013-08-10 17:54:57 +0000

jest to metoda wyboru domyślnej karty dźwiękowej w Alsa. Możesz chcieć zainstalować Alsę, aby ta metoda zadziałała, jeśli używasz Pulse Audio.

cat /proc/asound/modules

wyświetli listę twoich modułów dźwiękowych. Wyjście polecenia będzie wyglądało następująco (np.):

0 snd_hda_intel

1 snd_usb_intel

Z powyższego możesz dość łatwo zrozumieć, który z nich jest twoją kartą dźwiękową usb.

nano /etc/modprobe.d/alsa-base.conf

edytuj ten alsa-base.conf w taki sposób, aby preferowana karta miała indeks =-2 / 0, a druga karta indeks =-1 / 1 (trzymaj się -2 i -1 )

options snd_hda_intel index=-1

options snd_usb_intel index=-2

w tym przypadku urządzenie usb jest preferowanym urządzeniem.

jeśli masz dwie różne karty o tej samej nazwie na wyjściu, jak poniżej:

4
4
4
2016-05-28 03:47:19 +0000

Odpowiedź Matiji Nalis tylko w połowie zadziałała dla mnie (alsamixer zmienił domyślne ustawienia, ale inne rzeczy, takie jak aplay i firefox, uparcie trzymały się niewłaściwych ustawień domyślnych). Ten przykład z debian wiki zadziałał dla mnie (na laptopie CentOS-6):

defaults.pcm.!card Generic_1
defaults.ctl.!card Generic_1
defaults.pcm.!device 0
defaults.ctl.!device 0

Dla przypomnienia: ALSA jest słabo udokumentowana, a zwłaszcza te bardzo proste rzeczy, takie jak wybór, której karty użyć, są o wiele za trudne. Co gorsza, wydaje się to zmieniać pomiędzy systemami. Ponadto, dostałem ten tag “Generic_1” z aplay -l, gdzie pojawia się jako “karta 1” na liście. Inni ludzie zdawali się go używać, więc zrobiłem to samo… co to oznacza, nie mogę powiedzieć.

4
4
4
2015-12-14 23:55:48 +0000

Nie mogłem również uzyskać danych wyjściowych z mojego urządzenia USB. Moje wyjście cat /proc/asound/modules było:

0 snd_hda_intel

1 snd_hda_intel

2 snd_usb_audio

Próbowałem obu opisanych tutaj odpowiedzi, które nie pomogły (z wieloma kombinacjami indeksów i wieloma restartami). Myślę, że problemem była inicjalizacja mojego urządzenia USB po uruchomieniu. Nieważne, więc moim rozwiązaniem jest wpisanie na czarną listę pozostałych dwóch urządzeń dźwiękowych poprzez aktualizację /etc/modprobe.d/blacklist.conf jako:

blacklist snd_hda_intel
```.
1
1
1
2016-01-07 23:45:17 +0000

Podczas gdy można zmienić domyślną kartę alsa poprzez edycję .asoundrc lub systemowego asound.conf, istnieje kilka istotnych problemów z tym podejściem.

Jest ono kruche i wymaga restartu aplikacji, aby było honorowane.

Jeśli chcesz przełączać karty w locie, to naprawdę musisz użyć serwera dźwięku, który abstrahuje aplikacje od karty dźwiękowej, takiego jak pulseaudio.

-1
-1
-1
2016-06-24 16:47:20 +0000

Oto wariant odpowiedzi Matija Nalis i Tel. To jest to, co zadziałało dla mnie:

~/.asoundrc

defaults.pcm.!card 1
defaults.ctl.!card 1

(Odroid C0, Debian Jessie, HDMI audio jako karta 0 i karta dźwiękowa USB jako karta 1 zgodnie z aplay -l)

Uwaga: inne metody nie działały dla mnie, ponieważ /proc/asound/modules nie istnieje i nie ma modułu hdmi audio, aby umieścić go na czarnej liście lub umieścić na niskim priorytecie, jest on wbudowany w jądro. Wygląda na to, że musiałbym przekompilować kernel bez wsparcia dla dźwięku hdmi, aby wyłączyć go całkowicie.