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

Wie kann man Alsa dazu bringen, automatisch ein bevorzugtes Soundgerät auszuwählen?

Ich habe eine USB-Soundkarte gekauft. Ich möchte meinen Linux-Desktop so einrichten, dass er das USB-Gerät bevorzugt, wenn es eingesteckt ist, und automatisch umschaltet, wenn das Gerät (nicht) eingesteckt ist. Ist das möglich, und wie?

Antworten (6)

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

Finden Sie Ihre Karte mit

$ cat /proc/asound/cards

Um gültige ALSA-Kartennamen zu erhalten, verwenden Sie aplay:

$ aplay -l

und erstellen Sie dann /etc/asound.conf mit folgendem:

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw           
    card 1
}

Ersetzen Sie “Karte 1” durch die oben ermittelte Nummer oder den Namen Ihrer Karte.

Alternativ können Sie die Reihenfolge Ihrer Karten ändern , so dass Ihre USB-Karte die Karte 0 ist und es ohne Bearbeitung von asound.conf funktioniert.

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

Dies ist die Methode zur Auswahl der Standard-Soundkarte in Alsa. Möglicherweise müssen Sie Alsa installieren, damit diese Methode funktioniert, wenn Sie Pulse Audio verwenden.

cat /proc/asound/modules

listet Ihre Soundmodule auf, die Ausgabe des Befehls sieht wie folgt aus (z. B.):

0 snd_hda_intel

1 snd_usb_intel

Sie können aus dem obigen Beispiel ziemlich leicht erkennen, welches Ihre USB-Soundkarte ist.

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

editieren Sie diese alsa-base.conf so, dass Ihre bevorzugte Karte einen Index =-2 / 0 und die andere Karte einen Index =-1 / 1 hat (bleiben Sie bei -2 und -1 )

options snd_hda_intel index=-1

options snd_usb_intel index=-2

in diesem Fall ist das usb Gerät das bevorzugte Gerät.

wenn Sie zwei verschiedene Karten mit gleichem Namen in der Ausgabe haben, wie hier:

options snd_hda_intel

options snd_hda_intel

geben Sie diesen Befehl ein, um herauszufinden, welche die richtige ist:

cat /proc/asound/cards

dann editieren Sie die Module auf diese Weise:

options snd_hda_intel enable=1 index=0

options snd_hda_intel enable=0 index=1

Ein Neustart kann notwendig sein.also müssen Sie möglicherweise Ihre Soundkarten manuell umschalten.

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

Die Antwort von Matija Nalis hat bei mir nur halb funktioniert (alsamixer änderte den Standard, aber andere Dinge wie aplay und firefox blieben hartnäckig beim falschen Standard). Dieses Beispiel aus dem Debian-Wiki funktionierte bei mir (auf einem CentOS-6-Laptop):

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

Für das Protokoll: ALSA ist schlecht dokumentiert, und besonders diese sehr einfachen Dinge wie die Auswahl der zu verwendenden Karte sind viel zu schwer. Schlimmer noch, es scheint sich zwischen den Systemen zu ändern. Außerdem habe ich dieses “Generic_1”-Tag von aplay -l, wo es als “Karte 1” in der Liste auftaucht. Andere Leute schienen es zu benutzen, also habe ich das gleiche getan… was es bedeutet, kann ich nicht sagen.

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

Ich konnte auch keine Ausgabe von meinem USB-Gerät erhalten. Meine cat /proc/asound/modules Ausgabe war:

0 snd_hda_intel

1 snd_hda_intel

2 snd_usb_audio

Ich habe beide hier beschriebenen Antworten ausprobiert, die nicht geholfen haben (mit vielen Indexkombinationen und vielen Neustarts). Ich denke, das Problem war mein USB-Gerät, das nach dem Hochfahren initialisiert wurde. Wie auch immer, meine funktionierende Lösung ist, die anderen 2 Soundgeräte auf die schwarze Liste zu setzen, indem ich /etc/modprobe.d/blacklist.conf als aktualisiere:

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

Während Sie die Standard-alsa-Karte durch Bearbeiten von .asoundrc oder der System-asound.conf ändern können, gibt es ein paar erhebliche Probleme mit diesem Ansatz.

Es ist anfällig und erfordert einen Neustart der Anwendung, um beachtet zu werden.

Wenn Sie die Karten im laufenden Betrieb wechseln wollen, müssen Sie einen Soundserver verwenden, der die Anwendungen korrekt von der Soundkarte abstrahiert, wie z. B. pulseaudio.

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

Hier ist eine Variante der Antworten von Matija Nalis und Tel. Das hat bei mir funktioniert:

~/.asoundrc

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

(Odroid C0, Debian Jessie, HDMI-Audio als Karte 0 und USB-Soundkarte als Karte 1 laut aplay -l)

Hinweis: andere Methoden haben bei mir nicht funktioniert, da /proc/asound/modules nicht existiert und es kein hdmi-Audiomodul gibt, das man auf die schwarze Liste setzen oder auf niedrige Priorität setzen könnte, es ist in den Kernel eingebettet. Es scheint, als hätte ich den Kernel ohne hdmi-Audio-Unterstützung neu kompilieren müssen, um ihn vollständig zu deaktivieren.