Alsa'nın otomatik olarak tercih edilen bir ses cihazını seçmesi nasıl sağlanır?


36

Bir USB ses kartı aldım. Linux masaüstümü, takılı olması durumunda USB aygıtını tercih edeceği ve aygıt takılı olduğu zaman otomatik olarak değiştirileceği şekilde ayarlamak istiyorum. Mümkün mü ve nasıl?


Debian bunun yerine pulseaudio kullanıyor.
Braiam

Yanıtlar:


36

Kartınızı bulun

$ cat /proc/asound/cards

Geçerli ALSA kart isimleri almak için aşağıdakileri kullanın aplay:

$ aplay -l

ve ardından /etc/asound.confaşağıdakileri oluşturun :

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw           
    card 1
}

"Kart 1" i yukarıda belirtilen kartınızın numarası ya da adıyla değiştirin.

Alternatif olarak, kartlarınızın sırasını değiştirebilir, böylece USB kartınız kart 0 olacak ve düzenleme yapmadan çalışacaktır asound.conf.


2
Önerinizi denedim, ancak USB kartı çıkarıldığında, dahili karta geçmek yerine ses tamamen çalışmıyor.
Petr Pudlák

2
Bir RPI2 kullanarak, bu çözüm benim için çalıştı. Gerisini denedim, ama ben bunu yapana kadar hiçbir şey işe yaramadı. (Benim "kart 0" kullanmak zorunda kaldı).
Rob Gibbons,

2
Benim için palemoon Youtube'da iş Yukarıdaki yapılandırmayı, ses vermedi kullanarak, bu yapılandırma çalıştı: defaults.pcm.card 1 defaults.ctl.card 1 forum.palemoon.org/viewtopic.php?t=9661#p66016
aaditya1234

bir gün bunun için sıkışmış! ve sen az önce kıçımı kurtardın!
alamin

2
Normal insanlara cevap olarak ezoterik parti işleme hackery kullanmayın. Çıktıdan sütunlar çıkaran tek bir liner yazmak yerine, istenen çıktıyı tam çıktıda nasıl bulacağınızı kelimelerle açıklayın.
Szczepan Hołyszewski

16

Alsa'da varsayılan ses kartını seçme yöntemi budur. Pulse Audio kullanıyorsanız, bu yöntemin çalışması için Alsa'yı kurmak isteyebilirsiniz.

cat / proc / asound / modüller

Ses modüllerini listeleyecektir. Komutun çıktısı şöyle olacaktır (örneğin):

0 snd_hda_intel

1 snd_usb_intel

hangisinin yukarıdan usb ses kartınızın olduğunu kolayca kolayca anlayabilirsiniz.

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

Bu alsa-base.conf komutunu, tercih ettiğiniz kartın bir indeks = -2 / 0 ve diğer kartın endeks = -1 / 1 olacak şekilde düzenleyin (-2 ve -1 ile sopa)

seçenekler snd_hda_intel index = -1

seçenekler snd_usb_intel index = -2

Bu durumda usb aygıtı tercih edilir.

Çıkışta aynı ada sahip iki farklı kartınız varsa, bunun gibi:

seçenekler snd_hda_intel

seçenekler snd_hda_intel

hangisinin hangisi olduğunu bulmak için bu komutu verin:

kedi / proc / asound / kartlar

daha sonra modülleri şu şekilde düzenleyin:

seçenekler snd_hda_intel enable = 1 index = 0

seçenekler snd_hda_intel enable = 0 index = 1

Bir yeniden başlatma gerekli olabilir, bu nedenle ses kartlarınızı el ile değiştirmeniz gerekebilir.


"Çıktıyı değiştirmek" derken ne demek istiyorsun? Çıktıyı nasıl değiştirebilirim?
Petr Pudlák

Cevapta gerekli değişiklikleri yaptım. Bu sürümü deneyin. Bu yardımı bekleyin. Yöntemler kullandığınız linux lezzetine göre değişebilir.
Ashildr

Teşekkür ederim. Kurulumu nasıl doğrulayabilirim? Kartları belirledim, uygun seçenekleri ekledim, yeniden başlattım, ancak herhangi bir değişiklik görmüyorum - hala dahili (intel) kart tercih ediliyor.
Petr Pudlák

deneyin> seçenekler snd-usb-intel enable = 1 index = 0 (etkinleştirmek için)> seçenekler snd-hda-intel enable = 0 index = 1 (devre dışı bırakmak için) veya> seçenekler snd-hda-intel enable = 0 index = 0> seçenekleri snd-usb-intel enable = 1 index = 1 ve yeniden
başlat

yani u yor sorunu çözmek tersi also.i'm emin you.reboot için çalışacak olan bu mengene yapmak necessary.i dileğim, 0 veya 1 = etkinleştirmek kullanarak devre dışı diğerini usb etkinleştirmek
Ashildr

4

Ayrıca USB aygıtımdan da çıkış alamadım. Benim cat /proc/asound/modulesçıkış oldu:

0 snd_hda_intel

1 snd_hda_intel

2 snd_usb_audio

Burada tarif edilen her iki cevabı da yardım etmedim (ki birçok indeks kombinasyonu ve yeniden başlatma ile). Sanırım sorun USB aygıtımın açılıştan sonra başlatılmasıydı. Her neyse, bu yüzden çalışma çözümüm şu şekilde güncellenerek diğer 2 ses cihazını kara listeye alıyor /etc/modprobe.d/blacklist.conf:

blacklist snd_hda_intel

3

Matija Nalis'in cevabı sadece yarısı benim için işe yaradı (alsamixer varsayılan olarak değişti, ama aplay ve firefox gibi diğer şeyler inatla yanlış varsayılan ile sıkışıp kaldı). Debian wiki'den bu örnek benim için çalıştı (CentOS-6 laptopunda):

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

Kayıt için: ALSA belgelenmemiş ve özellikle hangi kartın kullanılacağını seçmek gibi bu çok basit şeyler çok zor. Daha kötüsü, sistemler arasında değişmiş gibi görünüyor. Ayrıca, bu "Generic_1" etiketini aplay-l'den aldığım listede "kart 1" olarak geliyor. Diğer insanlar onu kullanıyor gibiydi, ben de aynısını yaptım ... ne demek istediğimi.


1

Varsayılan alsa kartını .asoundrc veya system asound.conf dosyasını düzenleyerek değiştirebilseniz de, bu yaklaşımla ilgili birkaç önemli sorun vardır.

Kırılgandır ve uygulamanın yeniden başlatılmasının onurlandırılmasını gerektirir.

Anında kart değiştirmek istiyorsanız, o zaman pulseaudio gibi uygulamaları ses kartından doğru şekilde soyutlayan bir ses sunucusu kullanmanız gerekir.


Skype beta gibi bazı uygulamalar olsa da bunu görmezden gelir ve varsayılan ALSA kartına bağlanır. HDMI, HDA yerine ilk cihaz olduğunda Skype için ses çıkarmaz.
Max N

-1

İşte Matija Nalis ve Tel'in cevaplarının bir çeşididir. Bu benim için çalıştı.

~ / .Asoundrc

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

(Odroid C0, Debian Jessie, kart 0 olarak HDMI ses ve aplay'e göre kart 1 olarak USB Ses Kartı)

Not: / proc / asound / modülleri olmadığı ve kara listeye alınacak hdmi ses modülü olmadığı veya düşük önceliğe sahip olduğu için diğer yöntemler benim için işe yaramadı, çekirdeğe gömülü. Tamamen etkisiz hale getirmek için çekirdeği hdmi ses desteği olmadan yeniden derlemek zorunda kalacakmışım gibi görünüyor.


sudo modprobe $ soundcard_driver / proc / asound / modülleri için ne istersen yapar
linuxdev2013

@ linuxdev2013 nasıl modprobe-mümkün olmayan bir sürücüyü modprobe olabilir? Yukarıda açıklandığı gibi, bir modül değildir, çekirdeğe gömülüdür.
astooooooo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.