Installieren Sie asoundconf-gtk, aber achten Sie auf https://bugs.launchpad.net/ubuntu/+source/asoundconf-gtk/+bug/575058
Alsa USB-Audio-Hotplug
Mein neuer USB-Audio-Lautsprecher erschien als zweites Gerät in Alsa. Ich habe es geschafft, es zur primären zu machen:
$ cat /proc/asound/modules 0 snd_usb_audio 1 snd_hda_intel $ cat /proc/asound/cards 0 [Speaker ]: USB-Audio - uBoom Q Speaker uBoom Q Speaker at usb-0000:00:1d.1-1, full speed 1 [Intel ]: HDA-Intel - HDA Intel HDA Intel at 0x80000000 irq 16
indem Sie diese Zeilen hinzufügen /etc/modprobe.d/alsa-base.conf
:
options snd_hda_intel index=1 options snd_usb_audio index=0
Wenn ich jetzt boote, funktioniert USB-Audio standardmäßig überall. Das Problem ist - wenn ich die Verbindung trenne (oder boote ohne), sehe ich
$ cat /proc/asound/modules 1 snd_hda_intel
und nichts funktioniert, weil es kein 0
-th Gerät gibt:
$ aplay ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
Was ich möchte, ist eine Möglichkeit, Geräteindizes neu zuzuweisen. Wenn die Lösung ein Skript ist, werde ich damit eine udev-Regel erstellen.
Momentan ändere ich 'index =?' zurück auf die Standardeinstellung '0,1', aufrufen alsa force-reload
und es hilft. Besserer Weg?
Hinweis: Es gibt keine asoundconf
in meiner Distribution (KUbuntu Lucid) :(
4 Antworten auf die Frage
- Beliebte
- Neu
- Mit Kommentaren
- Aktiv
Lassen Sie uns zunächst auf die Indizes von Alsa-Geräten eingehen. Schließen Sie Ihren USB-Lautsprecher an und rufen Sie ihn auf, sudo alsa force-reload
damit Alsa ihn findet.
Listet Kartenindizes und ihre Treiber auf:
$ cat /proc/asound/modules 0 snd_hda_intel 1 snd_usb_audio
Detaillierte Informationen anzeigen:
$ cat /proc/asound/cards 0 [Intel ]: HDA-Intel - HDA Intel HDA Intel at 0x80000000 irq 16 1 [Speaker ]: USB-Audio - uBoom Q Speaker uBoom Q Speaker at usb-0000:00:1d.0-1, full speed
Wir möchten 'Speaker' mit Index = 0 haben.
Fügen Sie diese Zeilen hinzu, /etc/modprobe.d/alsa-base.conf
um den USB-Lautsprecher (falls vorhanden) zum Standardgerät zu machen:
options snd_hda_intel index=-2 options snd_usb_audio index=-1
Dies macht USB-Lautsprecher vorzuziehen gegenüber der Builtin-Karte. Ausgabe sudo alsa force-reload
, voila! Jetzt können Sie sehen, cat /proc/asound/cards
wie Karten angezeigt werden und verschwinden, wenn Sie Ihren USB-Lautsprecher ein- oder ausschalten.
Hier ist eine weitere Quittung, wie Sie auswählen können, welche der 2 verfügbaren Karten die nächste gestartete Anwendung verwenden wird.
Fügen Sie diese Zeilen zu /etc/asound.conf hinzu:
$ cat /etc/asound.conf.switch # CARD DEFINITIONS #=== CARD 'card0' pcm.card0-hw { type hw ; card 0 ; } ctl.card0-hw { type hw ; card 0 ; } pcm.card0 { type dmix ; ipc_key 4109 ; ipc_perm 0660 ; slave { pcm "hw:0,0" channels 2 ; period_size 1024 ; buffer_size 4096 ; rate 44100 ; period_time 0 ; } bindings { 0 0 ; 1 1 ; } } #=== CARD 'card1' pcm.card1-hw { type hw ; card 1 ; } ctl.card1-hw { type hw ; card 1 ; } pcm.card1 { type dmix ; ipc_key 1949 ; ipc_perm 0660 ; slave { pcm "hw:1,0" channels 2 ; period_size 1024 ; buffer_size 4096 ; rate 44100 ; period_time 0 ; } bindings { 0 0 ; 1 1 ; } }
Dadurch werden zwei 'dmix'-Wiedergabegeräte erstellt:' card0 'und' card1 '. Sie können problemlos zwischen ihnen wechseln.
Nun füge das in ~ / .asoundrc ein:
# Define new virtual devices pcm.this { type plug ; slave.pcm "card1" ; } ctl.this ctl.card1-hw # Set default device pcm.!default pcm.this ctl.!default ctl.this
auf die zweite Karte wechseln. Ersetzen Sie alle '1' durch '0', um zurückzuschalten. Ein kleines Skript wird hilfreich sein :)
HINWEIS: In diesem Handbuch wurden mehrere neue Alsa-Geräte erstellt: 'this', 'card0-hw', 'card0', 'card1-hw', 'card1'. Sie können sich auf sie beziehen:
$ amixer -D 'this' scontrols Simple mixer control 'PCM',0
PS Ich bin nicht damit einverstanden, wie Alsa wirklich funktioniert und vielleicht schreckliche Fehler gemacht hat :) Bitte korrigieren Sie mich, wenn es einen besseren Weg gibt. Aber das funktioniert trotzdem :)
Ich habe die einfache Bearbeitung der alsa-base.conf ausprobiert, die Onboard auf -2 und die USB auf -1 gesetzt hat, aber das hat nicht funktioniert.
Wenn ich jedoch BEIDE auf -1 setze (wobei das Onboard zuerst aufgeführt wird), könnte ich hin und her wechseln.
Ich muss jedoch bei jeder Änderung ein alsa-Force-Reload durchführen.
Ich versuche, das gleiche Problem zu lösen: Automatisches Umleiten des Audiostreams, wenn eine USB-Soundkarte an das System angeschlossen ist. Daher habe ich beschlossen, eine neue Regel für udev zu schreiben:
/etc/udev/rules.d/50-alsa.rules:
SUBSYSTEMS=="usb", ATTRS=="****", ATTRS=="****", RUN+="/usr/local/bin/alsa-switch.sh"
natürlich müssen Sie die '*' durch Nummern entsprechend Ihrem Gerät ersetzen (verwenden Sie lsusb, um zu wissen, welche)
Das alsa-switch.sh
Skript ist sehr einfach:
#!/bin/sh ln -sf /path/to/custom/asoundrc /home/<user>/.asoundrc
Eine andere Regel kann hinzugefügt werden, um die Konfiguration wiederherzustellen, wenn das Gerät entfernt wird (sorry, ich arbeite noch daran)
Verwandte Probleme
-
9
Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
4
Was sind die Unterschiede zwischen den großen Linux-Distributionen? Werde ich es merken
-
2
Begrenzung der CPU-Auslastung für Flash in Firefox?
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
2
Conky-Setups - Beispiele / Ideen?
-
3
Was sind die Unterschiede zwischen Linux Window Managern?
-
2
ThunderBird / Lichtsynchronisation mit SE k770i
-
4
Linux-Dateisystem
-
6
Vollbild-Flash langsam in KDE 4