it-swarm.com.de

Wie kann Alsa automatisch ein bevorzugtes Audiogerät auswählen?

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

33
Petr Pudlák

Finden Sie Ihre Karte mit

$ cat /proc/asound/cards

Verwenden Sie aplay, um gültige ALSA-Kartennamen zu erhalten:

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

und erstelle dann /etc/asound.conf mit:

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw           
    card 1
}

Ersetzen Sie "Karte 1" durch die oben angegebene Nummer oder den Namen Ihrer Karte.

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

29
Matija Nalis

dies ist die Methode zur Auswahl der Standard-Soundkarte in Alsa. Sie können 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 (zB):

0 snd_hda_intel

1 snd_usb_intel

von oben kannst du ziemlich leicht verstehen, welche deine usb soundkarte ist.

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

bearbeiten Sie diese alsa-base.conf so, dass Ihre bevorzugte Karte einen Index von -2/0 und die andere Karte einen Index von -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 dem gleichen Namen aus der Ausgabe haben, wie folgt:

options snd_hda_intel

options snd_hda_intel

setzen Sie diesen Befehl ab, um herauszufinden, welches welches ist:

katze/proc/asound/Karten

dann bearbeiten Sie die Module wie folgt:

options snd_hda_intel enable = 1 index = 0

options snd_hda_intel enable = 0 index = 1

möglicherweise ist ein Neustart erforderlich. Möglicherweise müssen Sie Ihre Soundkarten manuell umschalten.

15
Ashildr

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, was nicht geholfen hat (mit vielen Indexkombinationen und viel Neustart). Ich denke, das Problem war, dass mein USB-Gerät nach dem Booten initialisiert wurde. Wie auch immer, meine funktionierende Lösung ist es, andere 2 Audiogeräte auf die schwarze Liste zu setzen, indem ich /etc/modprobe.d/blacklist.conf aktualisiere als:

blacklist snd_hda_intel
3
user533723

Die Antwort von Matija Nalis hat bei mir nur zur Hälfte geklappt (alsamixer hat die Voreinstellung geändert, aber andere Dinge wie aplay und firefox haben sich hartnäckig an die falsche Voreinstellung gehalten). Dieses Beispiel aus dem Debian-Wiki funktionierte für mich (auf CentOS-6-Laptops):

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

Um es festzuhalten: ALSA ist schlecht dokumentiert, und besonders diese sehr einfachen Dinge wie die Auswahl der zu verwendenden Karte sind viel zu schwierig. Schlimmer noch, es scheint sich zwischen den Systemen zu ändern. Außerdem habe ich das Tag "Generic_1" von aplay -l erhalten, wo es als "Karte 1" in der Liste erscheint. Andere Leute schienen es zu benutzen, also habe ich dasselbe getan ... was es bedeutet, kann ich nicht sagen.

2
Tel

Während Sie die Standard-Alsa-Karte ändern können, indem Sie .asoundrc oder die asound.conf des Systems bearbeiten, gibt es bei diesem Ansatz einige wichtige Probleme.

Es ist zerbrechlich und erfordert einen Neustart der Anwendung.

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

1
Grant Diffey

Die Tools pavucontrol und paprefs helfen vielleicht auch beim Einrichten, aber vielleicht ist das zu einfach :) oder es bringt einfach alles durcheinander, was Sie bereits getan haben.

0
k9dog