FreeBSD kézikönyv
Előző | Fejezet 7. Multimédia | Következő

# 7.2. A hangkártya beállítása

Írta: Moses Moore. A FreeBSD 5.X verziójához igazította: Marc Fonvieille.

## 7.2.1. A rendszer beállítása

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:

    snd_emu10k1_load="YES"

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, amikre szükségünk lehet ennek elvégzése közben. A rendszermag újrafordításával kapcsolatban forduljunk a 8 fejezethez.

### 7.2.1.1. A hangkártya támogatásával rendelkező saját rendszermag összeállítása

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:

    device sound

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:

    device snd_emu10k1

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:

    device snd_sbc
    device snd_sb16

valamint a `/boot/device.hints` állományba ezeket:

    hint.sbc.0.at="isa"
    hint.sbc.0.port="0x220"
    hint.sbc.0.irq="5"
    hint.sbc.0.drq="1"
    hint.sbc.0.flags="0x15"

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.

## 7.2.2. A hangkártya kipróbálása

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)):

    pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
    pcm0: [GIANT-LOCKED]
    pcm0: <Cirrus Logic CS4205 AC97 Codec>

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 rendszerünké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 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.

### 7.2.2.1. Gyakori problémák

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.

## 7.2.3. Több hangforrás kihasználása

Írta: Munish Chopra.

Gyakoran 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 két 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.

> Megjegyzés: 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.`x`` eszközre kell mutatnia, ahol az `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.

## 7.2.4. A keverő alapértelmezett értékeinek beállítása

Írta: Josef El-Rayes.

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 egy 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:

    hint.pcm.0.vol="50"

Ezzel a pcm(4) modul betöltése során a hangerő (volume) csatorna alapértelmezett értéket 50-re állítjuk.

Előző | Tartalom | Következő
Multimédia | Fel | MP3

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.