ALSA, kártya sorrend, hogyan?

Fórumok

Egy Thinkpad Edge 335 + Ubuntu Precise gépen kínlódok a hanggal;


 cat /proc/asound/cards
 0 [Generic        ]: HDA-Intel - HD-Audio Generic
                      HD-Audio Generic at 0xf0344000 irq 49
 1 [Generic_1      ]: HDA-Intel - HD-Audio Generic
                      HD-Audio Generic at 0xf0340000 irq 16
29 [ThinkPadEC     ]: ThinkPad EC - ThinkPad Console Audio Control
                      ThinkPad Console Audio Control at EC reg 0x30, fw unknown

Az alsamixer a 0-ás hangkártyánál csak egy S/PDIF kontrollt mutat. Az 1-es hangkártyára volna szükség, ennek vannak rendes kontrolljai. (Megjegyzés: Nem értem, hogy miért van 3 hangkártya, mire jó. Ha esetleg valaki elmagyarázná. Kutattam a biosban le lehet-e esetleg tiltani belőlük ezt-azt, nem találtam.)

Namost alapállapotban a programok a 0-ás hangkártyával próbálnak dolgozni, természetesen sikertelenül. Be tudom állítani, hogy az 1-es legyen a default, ehhez csinálok egy .asoundrc-t a homeban a következő tartalommal:


defaults.ctl.card 1
defaults.pcm.card 1
defaults.timer.card 1

Ezzel működik a lejátszás.

A baj, hogy továbbra sem működik a hangfelvétel (vagyis mikrofon), pl. skypeban a másik oldal nem hallja, amit mondok. Az audacityben az látszik, hogy a mikrofon nem teljesen döglött, de nincs érzékenysége. Ha tapsolok neki, akkor egy négyszögjelet rögzít.

Azt gondolom, továbbra is az a baj, hogy a hangkártyák sorrendje nem jó. A neten olyan megoldásokat találtam, amik a kártya driverhez rendelnek indexet. Itt azonban az a helyzet, hogy a 0-ás és 1-es kártyához ugyanaz a driver tartozik:


cat /proc/asound/modules
 0 snd_hda_intel
 1 snd_hda_intel
29 thinkpad_acpi

Vagyis a kártyához tartozó modul felől nem lehet őket megkülönböztetni. Ugyanezért nem lehet valamelyik kártya driverét blacklistre tenni.

Hasonló (bár kevésbé lényeges) hiba keletkezik az xfce mixerben. Az első listában látszott, hogy a két kártyának ugyanaz a neve (HD-Audio Generic). Emiatt nem lehet a mixernek megmagyarázni, hogy az 1-es kártyával kell foglalkoznia, mert a neve alapján jegyzi meg az aktív kártyát, és legközelebb megint a 0-ás kártyát találja meg.

Tehát, hogyan lehetne megfordítani a kártyák sorrendjét?

Hozzászólások

A mondatot meg nagy kezdőbetűvel írjuk, a tibyke (sic!) helyesen leírva pedig Tibike. Nem lenne rossz néha érdemi szakmai hozzászólás is, engem legalábbis irritál :-\.

A nyitónak: nem vagyok benne biztos, hogy sorrend baj, egy hangkártya is okozott már nálam hasonlót (PulseAudio okozott már gondot vele).

Teszteléshez javaslom az Audacity használatát, azzal könnyen választhatsz bemenetet.

Sajnos nem tudok jó választ adni. Az előző gépemnél fordult elő ez a probléma; az alaplapi hangkártya mellé beledugtam egy régebbről maradt SB Live-ot is. Az egyetlen megoldás, ami megbízhatóan működött, az volt, hogy az alsa config-ot békénhagytam (mind a rendszerszintűt, mind a felhasználóét), és egyedileg állítottam be a programokat a második kártya használatára. Nagy gáz volt.

Például az mplayer-nek lehet olyat mondani, hogy

-ao alsa:device=hw=0.3

, first card, fourth device. Úgy látom, a

/proc/asound/devices

egy teljes listát tartalmaz (minden kártya, minden device); innen kellene egy capture device-t kiválasztani, és beállítani az adott alkalmazásban.

Nálam így működik: /etc/modprobe.d/alsa.conf

...
options snd-emu10k1 index=0
options saa7134-alsa index=1
options snd-hda-intel index=2
...

Ezt persze láttam, az a baj vele, hogy nálam az első két kártya drivere ugyanaz. Mégis megvan az ötlet: Beírom az alsa.conf-ba


options snd-hda-intel index=1

Akkor az első ilyen kártyát (amit megtalál) felveszi 1-esnek, a 0 index üresen marad, a második (ugyanilyen) kártyát beteszi az üres 0-s helyre. Mindjárt kipróbálom.
--
ulysses.co.hu

És tényleg. Persze vissza kell venni a deafult 1-re állítását. Köszönet a segítségért.

próbáld meg azt, hogy létrehozol egy fájlt a /etc/modprobe.d könyvtárban:

# sudo touch /etc/modprobe.d/alsa-local.conf

majd editálod, és beleírod/bemásolod hogyaszogya:

# alsa lokális beállítások
options snd-hda-intel index=1,0
alias snd-card-0 snd-hda-intel
alias snd-card-1 snd-hda-intel
alias snd-card-2 thinkpad_acpi
# alias snd-card-3 snd-usb-audio

hátha:)

azért kell neki külön fájl, hogy frissítésnél ne írja felül a rendszer.

fel a polcra!

--
"Nem akkor van baj amikor nincs baj, hanem amikor van!"
Népi bölcsesség

Hát most meg van fordítva a kártyák sorrendeje, a helyzet jobb mint volt, de a kínok nem szűntek meg. Az audacity mikrofon bemenet szint jelzője a capture kontroll beállításával arányos értéken álldigál (csendben a nullán kéne álljon), és erre rakódik rá egy viszonylag kis kitérés, ha valami tényleg szól. A mic boost kontrollok befolyásolják még a bemeneti szintet, de a mic kontroll nem. Nem teljesen döglött, halkan hallható, amit felvesz, de ezzel még nem lehet skypeolni.
--
ulysses.co.hu

Én ezt használtam két különböző kártya sorrendjének beállítására:

http://alsa.opensrc.org/MultipleCards

Az "Ordering multiple cards of the same type" nézd meg, hátha segít rajtad.

Szerk: juuzer kollégának igaza van, itt is azt írja hogy két azonos modult használó PCI-os kártya esetén Udev szabályt kell írni a megkülönböztetésre.

Nézd meg itt:
http://alsa.opensrc.org/Udev
az "Identify two identical audio devices" részt.

--
http://csuhai.hu

Köszönöm szépen, a sorrend meg van fordítva. Nem udev szabállyal, hanem indirekten. Az elsőnek megtalált kártyát 1-esre veszem, a második magától 0-s lesz. Nem valami szakszerű, de pillanatnyilag megfelelne..., ha nem volna egyéb baj, amint fent leírtam: nem megfelelő a jelerősség. Látom, hogy vannak bugreportok a témában.
--
ulysses.co.hu

1. ötlet:
https://bbs.archlinux.org/viewtopic.php?id=137653
2. nem pulseaudiot használsz?
Mert akkor alsamixer helyett pavucontrol-lal kéne babrálni...

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."