A 2.6.23.8-as kernel ca0106_main.c file-jában többek között az alábbi igen bíztató rész olvasható:
* FEATURES currently supported: * Front, Rear and Center/LFE. * Surround40 and Surround51. * Capture from MIC an LINE IN input. * SPDIF digital playback of PCM stereo and AC3/DTS works.
Tehát én ügyetlenkedem. Igyekszem kideríteni, hogy mi a megfejtés...
Eh... Végre behatóbban akartam foglalkozni a hanggal, erre az alsa-project.org nem elérhető. Tudja valaki, hogy a legújabb ALSA-ban megoldották-e a Creative Labs SB0410 SBLive! 24-bit CA0106 capture-t? A playback megy, de korábban a capture nem ment, emlékszem, írták is az ALSA honlapján, hogy a Creative Labs nem adta ki a doksit, a visszafejtés meg még nem sikerült. Az a kérdés, hogy a legutóbbi ALSA támogatja-e, vagy sem. Mindenesetre nálam még nem működik a felvétel irány, de nem tudom, hogy a bénázásom ennek az oka, vagy nem is kell neki működnie.
Ügyes, de cseppet sem általános, korrekt megoldás. Olyan kalapáccsal mindent meg lehet javítani szemlélet, bár én is ehhez folyamodok, ha valamit gyorsan kell megcsinálni. :)))
Ezt annakidelyen ugy oldottam meg, - bar eleg barbar dolog:)) - hogy 2 kartyat kidobtam, es az 1lsonek betettem 1 realtech-et masodiknak 1 ibm-et, harmadiknak meg 1 ne 2000 pci-t:)))))
Es megszunt a gond.
Es persze gyorsan Lfelejtettem, es nem szoltam senkinek:)))))))))))))))))))
Igen ám, de ez fontos kérdés, mert amit Te javasoltál, ott feltételezted, hogy a különböző kártyákhoz különböző driver való, tehát a hangkártyák nem azonos típusúak, sőt, még csak nem is rokonok. Rokonság alatt azt értem, hogy különböző típushoz ugyanaz a driver kellene. Mindenesetre ez az index opció biztatónak tűnik.
Mellesleg én is szívtam már azzal, hogy más alkalommal más sorrendben jelentek meg a /proc-ban az eszközök, mozgó célpontra meg ugye nehéz lőni. :)
# modinfo snd_emu10k1 filename: /lib/modules/2.6.18-gentoo/kernel/sound/pci/emu10k1/snd-emu10k1.ko author: Jaroslav Kysela <perex@suse.cz> description: EMU10K1 license: GPL vermagic: 2.6.18-gentoo SMP preempt mod_unload PENTIUM4 gcc-4.1 depends: snd-pcm,snd-util-mem,snd-page-alloc,snd,snd-rawmidi,snd-timer,snd-hwdep,snd-ac97-codec,snd-seq-device alias: pci:v00001102d00000002sv*sd*bc*sc*i* alias: pci:v00001102d00000004sv*sd*bc*sc*i* alias: pci:v00001102d00000008sv*sd*bc*sc*i* parm: subsystem:Force card subsystem model. (array of uint) parm: enable_ir:Enable IR. (array of bool) parm: max_buffer_size:Maximum sample buffer size in MB. (array of int) parm: max_synth_voices:Maximum number of voices for WaveTable. (array of int) parm: seq_ports:Allocated sequencer ports for internal synthesizer. (array of int) parm: extout:Available external outputs for FX8010. Zero=default. (array of int) parm: extin:Available external inputs for FX8010. Zero=default. (array of int) parm: enable:Enable the EMU10K1 soundcard. (array of bool) parm: id:ID string for the EMU10K1 soundcard. (array of charp) parm: index:Index value for the EMU10K1 soundcard. (array of int)
Es akkor van itt mindenfele id meg index, de en sosem hasznaltam:))
En 1* probaltam - ugyan nem hang, hanem halokartyaval - 3 azonos kartyat hasznalni, de mar akkor sem ertettem mitol lessz az 1ik eth0 a masik eth1. Mindenesetre mindig a pci buszon Lfoglalt helyuknek megfeleloen altak sorba, es sehogy nem tudtam ravenni oket, hogy mas sorrendben legyenek.
De hogy ha nem mind1ik a pci buszon van akkor mi van? es/vagy a modulokat hogy lehet ravenni arra hogy milyen sorba rakjon azonos kartyakat? Fogalmam nincs.
Azért ez a sorrend dolog nem egészen világos nekem. Mi van, ha berakok a gépbe három azonos típusú hangkártyát, a negyedik - ez más típusú - az alaplapi. Nem elméleti a felvetés, munkahelyen mérési célzattal csináltam ilyet. Mi garantálja, hogy minden indításkor ugyanaz a device ugyanazt az indexet - ha úgy tetszik, sorszámot - kapja? Ha jól sejtem, a kernel végigmazsolázza a buszt, amit megtudott, azt visszaadja a /sys virtuális directory-ban. Ebből az udev létrehozza a /dev-be az eszközfile-okat. Na de mi garantálja a sorrendet?
A modprobe.conf file-omban a releváns rész, igaz egy alaplapi audio interface esetén:
Hat ezert. Hogy minden inditasnal az elore megadott sorremdben legyenek a hangeszkozok. Es mindig tudd hogy melyek melyik. Es hogy a rendszer is mindig tudja hogy melyik melyik.
Egyebkent ha mast nem talalsz beteheted a /etc/modules.conf fileba a beallitasokat.
Azért véltem érdekesnek mert azt hittem hogy 0,0 valamiféle sorrendiséget jelez a hangeszközök között, és ha a Soundblaster a 0. eszköz akkor az úgy is az az első - minek kell kézzel megadni. ( Na de ez már csak az én tudatlanságom.)
Szóval még mindíg nem jó. - Elöbb bejelentkezés után csak annyi történt hogy elindítottam a synaptic-et rootként - valamit telepítettem. Aztán újraindítottam és az alap hangeszköz megint a TV kártya lett. Ekkor a proc/asound-bam a 'Live' link a card2 re mutatott ami nem a hangkártyájé. Aztán visszaállogattam a keverőt és a master csatornát a kmix-el így ujraindítás után lett hang, így most már az asoundban lévő 'Live' link már a card0 -ra mutat. De meddig - és miért állítódik át ?
Ebben mi az érdekes? A 2,0-t arra az esetre írtam, ha a hangkártyád a 2-es indexű lenne. Ezek szerint a 0-ás indexű. Megnézted a /proc/asound könyvtárban?
Lehet hogy nem kell tovább variálnom, mert locsemege ötlete bejön. Egyébkéne a disztró Simply Mephis 6.0-1 Ilyen mappa pedig nincs benne : /etc/modules.d/- de máshol sem találtam hasonlót.
Pl hogy milyen modulok hajtjak meg ezeket az eszkozoket, es hogy milyen disztrot hasznalsz eppen.
De nagyabol azert lehet errol mondani valamit.
Kell lennie 1 filenek - ez nalam a /etc/modules.d/alsa - amiben a modulok parameterei vannak. Pl /etc/modules.conf
Ebbe a fileba kell megadni -beirni vagy bemasolni - a kovetkezoket: ------------ eleje ------------ alias char-major-116 snd # OSS/Free portion alias char-major-14 soundcore
alias snd-card-0 snd-emu10k1 alias snd-card-0 a_masodik_hangeszkoz_modulja alias snd-card-0 a_harmadik_hangeszkoz_modulja
alias sound-slot-0 snd-card-0 alias sound-slot-1 snd-card-1 alias sound-slot-1 snd-card-1
alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss
## OSS/Free portion - card #2 alias sound-service-1-0 snd-mixer-oss alias sound-service-1-3 snd-pcm-oss alias sound-service-1-12 snd-pcm-oss
## OSS/Free portion - card #3 alias sound-service-2-0 snd-mixer-oss alias sound-service-2-3 snd-pcm-oss alias sound-service-2-12 snd-pcm-oss
alias /dev/mixer snd-mixer-oss alias /dev/dsp snd-pcm-oss alias /dev/midi snd-seq-oss
alias /dev/mixer1 snd-mixer-oss alias /dev/dsp1 snd-pcm-oss alias /dev/midi1 snd-seq-oss
alias /dev/mixer2 snd-mixer-oss alias /dev/dsp2 snd-pcm-oss alias /dev/midi2 snd-seq-oss
# Set this to the correct number of cards. options snd cards_limit=3
------------- vege --------------- Perse a 'a_masodik_hangeszkoz_modulja' helyebe a modul nevet kell irni. Igy az 0-as kartya mindig az Sb Live, az 1-es mindig aminek a moduljat megadod...
Arra figyelni kell, hogy ez esetben mondjuk a tvtime programot a tvtime --mixer=/dev/mixerX - ahol X a hangkartya szama - kell inditani.
Egy erőtlen ötletem van csak. A Control Center -> Sound & Multimedia -> Sound System -> Hardware fülön az Override location-t kipipálnám, s odaírnám azt az eszközt, amit használni szeretnék. A /proc/asound directoryban nézd meg, hogy az Sblive hangkártyához tartozó symlink melyik indexű eszközre mutat, legyen pl. card2. Ekkor a KDE-ben valami ilyesmit adnék meg:
plughw:2,0
A második index a kártyán belüli kimeneteket jelenti, egy 5.1-es kártyának valójában 3 sztereo kimenete van, az indexelés 0 bázisú.
A gépemen 3 eszköz van amit az ALSA hangeszközként azonosít: SB Life 5.1 hangkártya Pinnacle PCTV 110i ( SAA7134) TVtuner kártya Logitec USB-s Webkamera
KDE-t használok ( a probléma minden disztró alatt azonos ) A három hangeszközből ugye, az alapértelmezettnek a hangkártyának kell lenni. Ezt beállítom a Kmix-el - a tálcán a master csatorna és keverő is rendben. Viszont ha olyan programot használok ami más hangeszközt is használ ( vagy keres), ujraindítás után a KDE magától átállítja az alapértelmezett hangeszközt a TV tuner kártyára. Igy aztán a rendszerhangok megszünnek, a Kmixerben kell visszaállítanaom a hangeszközt és ujraindítanom hogy újra legyen hang. Az hogy konkrétan melyik program használata után állítja át nem tudom. Pl. Jellemzően átáll a hangeszköz ha a TV-t nézek a TVtime programmal, de előfordul hogy újraindítás után mégis meghagyja, illetve hogy ha nem használom a TV kártyát akkor is néha átáll.
Ahogy észrevettem a KDE a /home/felhasználó/.kde/share/config/kmixrc fáljban tárolja a hangeszközök adatait. Ujraindításkor ez íródik felül.
[View.input.0.Dev1] Show=true Split=false . . . Ujraindítás után a Mastermixer a TV tunerkártya lesz ( de előfordult már az is hogy a kamera lett az )
Ha a fájl írási jogosult ságát letiltom, akkor működik a dolog ( nem változik meg ), de a KDE indulása után hibaüzenettel kezd ( hogy nem módosítható a fájl ) és ez elég idegesítő, illetve gondolom hogy az a hiba javítás megkerülése.
Megvan a megoldás: vagy felrakom a debian oldalán található csomagot a 2.4.27 -es kernelhez, ami tartalmazza a megfelelő modulokat(snd-als4000, ...) is(gondolom azzal már nem kell szórakozni, egyből berakja magának), vagy újból felrakom a Sarge -ot 2.6 -os kernellel, abban már benne vannak ezek a modulok.
Nekem kb. ugyanaz a problémám. Sarge(2.4.valahányas kernel)-ot használok, és als4000 hangkártyám van. Én is az ALSA oldalán lévő instrukciókat követtem, és nekem is a modprobe snd-als4000 parancsnál van a baj. (can't locate modul) Pedig rendesen lefordul az alsa-driver és az alsa-lib is, a kernel forrása a /usr/src/linux -ban van, és a /etc/modules.conf(vagy valami ilyesmi) -t is átírtam a leírás szerint.