A művelet megkezdése előtt ki kell derítenünk, milyen típusú hangkártyánk van, milyen chip van rajta, PCI vagy ISA buszon csatlakozik-e. A FreeBSD rengeteg PCI és ISA buszos kártyát ismer egyaránt. A sajátunk beazonosításához a támogatott hangeszközök listáját a Hardware Notes (Hardverjegyzék) oldalán találhatjuk meg. Ebből a jegyzékből mellesleg azt is megtudhatjuk, hogy melyik meghajtó kezeli a kártyánkat.
A hangeszközünk használatához be kell töltenünk a neki megfelelő meghajtót. Ez két módon is megtehető. Ezek közül az a legkönnyebb, ha a kldload(8) paranccsal egyszerűen betöltjük a rendszermag hangkártyánkhoz tartozó modulját. Ezt megtehetjük közvetlenül parancssorból:
#
kldload snd_emu10k1
vagy a /boot/loader.conf
állományból az alábbihoz
hasonló sor hozzáadásával:
A fenti példák a Creative SoundBlaster® Live!
hangkártyára vonatkoznak. A többi
betölthető hangkártya-modul felsorolása
a /boot/defaults/loader.conf
állományban található. Ha nem
vagyunk benne biztosak, hogy melyik meghajtót is akarjuk
pontosan használni, akkor próbálkozzunk az
snd_driver
modul
betöltésével:
#
kldload snd_driver
Ez egy olyan metameghajtó, ami egyszerre betölti
az összes érintett eszközmeghajtót,
és segítségével
felgyorsíthatjuk a megfelelő meghajtó
megtalálását. A
/boot/loader.conf
használatával is be tudjuk ugyanígy
tölteni az összes meghajtót.
Az snd_driver
metameghajtó
betöltése után úgy kereshetjük
meg a ténylegesen használatban levő
meghajtót, ha megnézzük a
/dev/sndstat
állományt a
cat /dev/sndstat
paranccsal.
A második módszer szerint a hangkártyánk támogatását statikusan beépítjük a rendszermagba. A lentebb található szakaszban olvashatjuk mindazok az információkat, amelyekre szükségünk lehet ennek elvégzése közben. A rendszermag újrafordításával kapcsolatban forduljunk a 8. fejezet - A FreeBSD rendszermag testreszabásahez.
Elsőként hozzá kell adnunk a rendszermaghoz a hangeszközök alapmeghajtóját, a sound(4) eszközt. Ezt a rendszermag beállításait tartalmazó állományban az alábbi sor felvételével tehetjük meg:
Ezután tegyük még hozzá a hangkártyánkhoz kapcsolódó támogatást is. Ehhez viszont pontosan tudunk kell, melyik meghajtó képes működtetni a kártyát. A hangkártyához tartozó meghajtót a Hardware Notes (Hardverjegyzék)-ben található eszközök listájából deríthetjük ki. Például a Creative SoundBlaster® Live! hangkártyát a snd_emu10k1(4) meghajtó kezeli. Ennek a hangkártyának a támogatását az alábbi sorral állíthatjuk be:
Az itt használatos formátumot a
meghajtó man oldalának
átolvasásából tudhatjuk meg.
Azonban az összes támogatott hangkártya
meghajtó megadásának pontos
formátuma megtalálható a
/usr/src/sys/conf/NOTES
állományban is.
A PnP (Plug n Play)-t nem ismerő ISA
kártyák esetén az összes többi
nem PnP-s ISA kártyához hasonlóan
szükséges lehet a rendszermag
számára megadnunk a kártya hardveres
beállításait (IRQ, I/O port stb). Ezt a
/boot/device.hints
állományon keresztül tehetjük meg. A
rendszerindítási folyamat során a
loader(8) beolvassa ezt az állományt, majd
átadja a benne szereplő
információkat a rendszermagnak.
Például a Creative SoundBlaster® 16, nem PnP-s
ISA kártya az snd_sb16
meghajtóval együtt az snd_sbc(4)
meghajtót használja. A kártya
használatához a rendszermag
beállításait tartalmazó
állományba ezeket a sorokat kell megadni:
valamint a /boot/device.hints
állományba ezeket:
Ekkor a kártya a 0x220
I/O
portot és 5
IRQ-t
használja.
A /boot/device.hints
állományban alkalmazott felírási
módról bővebben a sound(4), valamint a
kérdéses meghajtó man oldalán
tájékozódhatunk.
A fentiekben bemutatott beállítások alapértelmezettek, néhány esetben azonban a kártyánknak megfelelően meg kell változtatnunk az IRQ és egyéb értékeket. Erről a kártyáról konkrétan a snd_sbc(4) man oldalon olvashatunk részletesebben.
Miután újraindítottuk a számítógépünket a módosított rendszermaggal, vagy miután betöltöttük a szükséges modult, a hangkártyának valahogy így kell megjelennie a rendszerünk üzenetpufferében (dmesg(8)):
A hangkártyánk állapota a
/dev/sndstat
állományon
keresztül ellenőrizhető:
#
cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
kld snd_ich (1p/2r/0v channels duplex default)Ez a kiírás rendszerenként
eltérhet. Ha nem látunk semmilyen
pcm0
eszközt, akkor menjünk
vissza és nézzük át újra,
pontosan mit is csináltunk. Vizsgáljuk át
a rendszermagunk beállításait
tartalmazó állományt és
győződjünk meg róla, hogy a megfelelő
meghajtót adtuk meg. Az itt felmerülő gyakori
gondokkal a 7.2.2.1. szakasz - Gyakori problémák foglalkozik.
Ha azonban minden remekül haladt, akkor most már van egy működő hangkártyánk. Ha rendesen összekapcsoltuk hangkártyánkat a CD- vagy DVD-meghajtónk audio csatlakozásával, akkor tegyünk egy CD-t a meghajtóba és kezdjük el játszani a cdcontrol(1) paranccsal:
%
cdcontrol -f /dev/acd0 play 1
Az olyan alkalmazások, mint például az
audio/workman
, ehhez egy
sokkal barátságosabb felületet
nyújtanak. Az MP3 formátumú
állományok meghallgatásához pedig
minden bizonnyal jól fog jönni egy olyan
alkalmazás is, mint például az audio/mpg123
.
A kártyát úgy is tesztelhetjük, ha
az alábbihoz hasonló módon adatokat
küldünk a /dev/dsp
állományba:
%
cat állománynév
> /dev/dsp
ahol az
állománynév
tetszőleges állomány neve lehet. A parancs
hatására valamilyen zajt kell hallanunk, és
ez egyben meg is erősíti, hogy a
hangkártyánk működik.
A hangkártyánk csatornáinak jellemzőit a mixer(8) paranccsal állíthatjuk. Erről további részleteket a mixer(8) man oldalon olvashatunk.
Hiba | Megoldás |
---|---|
sb_dspwr(XX) timed out | Nem állítottuk be jól az I/O portot. |
bad irq XX | Nem állítottuk be jól az IRQ értékét. Gondoskodjunk róla, hogy a beállított érték megegyezik a hangkártyánkéval. |
xxx: gus pcm not attached, out of memory | Nincs elég memória az eszköz használatához. |
xxx: can't open /dev/dsp! | A fstat | grep dsp parancs
kiadásával ellenőrizzük, hogy
valamelyik alkalmazás használja-e
már az eszközt. Gyakori bajkeverő az
esound és a
KDE
hangtámogatása. |
Gyakran szükségünk lehet több hangforrás egyidejű használatára, főleg olyankor, amikor az esound vagy az artsd bizonyos alkalmazásokkal nem hajlandó megosztani a hangeszközt.
A FreeBSD ezt a virtuális hangcsatornák használatával oldja meg, amit a sysctl(8) eszközön keresztül tudunk engedélyezni. Amikor a rendszermagban virtuális csatornák használatával keverünk, akkor lényegében képesek vagyunk a hangkártyánk által egyszerre játszható hangok számát megtöbbszörözni.
A virtuális csatornák számának
beállításához a sysctl három
változóját kell módosítanunk,
amelyet root
felhasználóként így tehetünk
meg:
#
sysctl dev.pcm.0.play.vchans=4
#
sysctl dev.pcm.0.rec.vchans=4
#
sysctl hw.snd.maxautovchans=4
A fenti példa négy virtuális
csatornát hoz létre, ami egészen
jellemző a mindennapi használatban. A
dev.pcm.0.play.vchans
és
dev.pcm.0.rec.vchans
a
pcm0
eszköz
lejátszásra és felvételre
használt virtuális csatornáinak
számát adja meg, amelyet az eszköz
csatlakoztatása után tudunk
beállítani. A
hw.snd.maxautovchans
az új
eszközhöz tartozó virtuális
csatornákat adja meg, ami akkor
állítódik be, amikor a kldload(8)
paranccsal csatlakoztatjuk. Mivel a
pcm
modul a többi
eszközmeghajtótól függetlenül
töltődik be, ezért a
hw.snd.maxautovchans
azt tárolja, hogy
a később hozzá csatlakozó
eszközök mennyi virtuális csatornát
fognak majd kapni. Erről részletesebben a
pcm(4) man oldalon olvashatunk.
A használatban levő eszközöknél nem tudjuk megváltoztatni a virtuális csatornák számát. Ehhez először le kell állítanunk az eszközt használó összes programot, tehát a zenelejátszókat és hangdémonokat.
Amennyiben nem használjuk ki a devfs(5)
által nyújtott lehetőségeket, az
összes alkalmazásnak a
/dev/dsp0.
eszközre kell mutatnia, ahol az
x
x
értéke 0-tól
3-ig terjedhet attól függően, hogy a
dev.pcm.0.rec.vchans
értékét a fenti példához
hasonlóan 4-re állítottuk-e. A
devfs(5) megoldását használó
rendszerek esetén ez a folyamat automatikusan lezajlik,
tehát az összes /dev/dsp
eszközre irányuló kérés
magától
átirányítódik.
A keverőben megjelenő
különböző csatornák
alapértékei a pcm(4) meghajtó
forráskódjában huzalozottan
találhatóak meg. Számos alkalmazás
és démon segít két
hívás közt megőrizni a keverőben
beállított értékeket, azonban ez nem
teljesen tiszta megoldás. A meghajtó
szintjén is be tudjuk állítani a
keverő alapértékeit — ezt a
/boot/device.hints
állomány
megfelelő módosításával
érhetjük el, például:
Ezzel a pcm(4) modul betöltése során a hangerő (volume) csatorna alapértelmezett értéket 50-re állítjuk.
Ha kérdése van a FreeBSD-vel kapcsolatban, a
következő címre írhat (angolul):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.