9.2. Helikaardi seadistamine

Autor: Moses Moore.

9.2.1. Õige seadme leidmine

Enne alustamist peaksid teadma, milline on su helikaardi mudel, millist kiipi kaart kasutab ja kas tegu on PCI või ISA kaardiga. FreeBSD toetab suurt hulka erinevaid PCI ja ISA kaarte. Juhul, kui sa ei leia järgnevast nimekirjast oma kaarti, peaksid lugema man-lehte pcm(4). Siintoodud nimekiri pole täiuslik, kuid sisaldab siiski levinuimaid kaarte.

Selleks, et oma helikaarti kasutama hakata, pead laadima õige draiveri. Draiveri leidmiseks on kaks moodust: Lihtsam neist on lihtsalt oma helikaardile vastav kernelimoodul laadida - seda käsuga kldload(8). Teine võimalus on helikaardi tugi kernelisse staatiliselt sisse kompileerida. Alljärgnevad lõigud selgitavad, kuidas just teisel viisil vajalikku tuge luua. Kerneli uuesti kompileerimise kohta leiad rohkem infot peatükist Chapter 8.

9.2.1.1. Creative, Advance, ja ESS helikaardid

Kui sul on mõni ülalnimetatud kaartidest, tuleb sul kernelisse lisada:

device pcm

PnP ISA kaardi puhul tuleb kernelisse lisada ka:

device sbc

PnP-d mitte toetavate ISA kaartide puhul peab kerneli konfiguratsioonifaili lisama

device pcm      
      device sbc0 at isa? port0x220 irq 5 drq 1 flags 0x15

Tegemist on vaikeväärtustega. Võib juhtuda, et pead muutma IRQ või mõne muu parameetri väärtust, et oma kaarti käima saada. Siinkohal on abiks man-leht sbc(4)

Note: Sound Blaster Live ei tööta FreeBSD 4.0 all ilma, et peaksid süsteemi eelnevalt paikama - seda käesolev dokument ei seleta. Me soovitame nimetatud kaardi kasutamiseks värskendada süsteem viimase -STABLE'i peale.

9.2.1.2. Gravis UltraSound-kaardid

PnP ISA kaardi puhul tuleb kerneli konfiguratsioonifaili lisada:

device pcm
device gusc

PnP'd mitte toetava ISA kaardi puhul lisa:

device pcm
device gus0 at isa? port 0x220 irq 5 drq 1 flags 0x13

Võib juhtuda, et pead ka IRQ või mõne muu parameetri väärtusi muutma. Man-leht man.gusc.4; selgitab teemat lähemalt.

9.2.1.3. Crystal-helikaardid

Crystal-helikaardi puhul tuleb kerneli konfiguratsioonifaili lisada:

device pcm
device csa

9.2.1.4. Üldine tugi

PnP ISA ja PCI kaartide puhul piisab tavaliselt rea

device pcm

lisamisest kerneli seadistusse. PnP-d mittetoetavate ISA helikaartide puhul, millel puudub silla draiver, tuleks kernelisse lisada

device pcm0 at isa? irq 10 drq 1 flags 0x0

Võib juhtuda, et sul tuleb ka IRQ-d ja teisi seadeid muuta.

9.2.1.5. Sisseehitatud heliseadmed

Mõne süsteemi puhul, millel on heliseadmed emaplaati sisse ehitatud, võib olla tarvis kerneli konfiguratsioonifaili kirjutada:

options PNPBIOS

9.2.2. Seadmefailide loomine ja testimine

Peale rebootimist logi sisse ning uuri, milline seade asub failis /var/run/dmesg.boot, seda järgmiselt:

# grep pcm /var/run/dmesg.boot
pcm0: <SB16 DSP 4.11> on sbc0

Sinu süsteem võib anda teistsuguse väljundi. Kui ühtegi pcm-seadet ei tundu olevat, on midagi juba varem viltu läinud. Kui midagi säärast juhtub, uuri veelkord kerneli konfiguratsioonifaili ning tee kindlaks, kas valisid õige seadme. Tüüpilised probleemid ja vead on ära toodud lõigus Section 9.2.2.1.

Note: Kui kasutad FreeBSD  versiooni 5.0 või uuemat, võid ülejäänud peatüki rahumeeli vahele jätta. Uuemad versioonid loovad nimelt seadmefailid automaatselt ise man.devfs.5; abil.

Kui eelmine käsk andis väljundiks pcm0, pead root-õigustes kirjutama käsureale järgmist:

# cd /dev
# sh MAKEDEV snd0

Kui käsk andis väljundiks pcm1, tee sama, mis ülal, asendades seadme snd0 snd1-ga.

Note: Pane tähele, et kumbki eelnevatest käskudest ei loo /dev/snd seadet!

MAKEDEV loob grupi seadmefaile, s.h:

SeadeKirjeldus
/dev/audioSPARC-iga ühilduv audioseade
/dev/dspDigitaalne heliseade
/dev/dspWNagu/dev/dsp, aga 16 bitti sämplingu kohta
/dev/midiMadala tasandi midi-seade
/dev/mixerJuhtpordi mikserseade
/dev/musicTeise tasandi sekventserliides
/dev/sequencerSekventserseade
/dev/pssProgrammeeritav seadmeliides

Kui kõik hästi läheb, peaks sul kõige loetletu tulemusena olema töötav helikaart. Kui su CD-ROMi või DVD-ROMi seade helikaardiga korralikult ühildub, peaksid saama panna plaadi CD-draivi ning teda kuulata käsuga cdcontrol(1):

% cdcontrol -f /dev/acd0c play 1

Mõned programmiga, näiteks audio/workman-iga, on kaasas parem liides. MP3-failide kuulamiseks oleks aga mõistlik paigaldada näiteks programm audio/mpg123.

9.2.2.1. Tavalised probleemid

VigaLahendus
``unsupported subdevice XX''

Üks või mitu seadmefaili on valesti loodud. Korda eelpoolkirjeldatud samme.

``sb_dspwr(XX) timed out''

I/O port ei ole korrektselt seadistatud.

``bad irq XX''

IRQ on valesti määratud. Kontrolli üle, kas kaardi IRQ ja kerneli seadistustes määratud IRQ on samad.

``xxx: gus pcm not attached, out of memory''

Selle seadme kasutamiseks pole piisavalt mälu.

``xxx: can't open /dev/dsp!''

Vaata käsu fstat | grep dsp abil, ega mõni muu programm seda seadet parasjagu käigus ei hoia. Märkimisväärselt tekitavad probleeme esound ja KDE helitugi.

9.2.3. Mitme heliallika samaaegne kasutamine

Autor: Munish Chopra.

Tihti võib tekkida olukord, kus on soovitav, et saaks kasutada mitut heliallikat samaaegselt - näiteks kui esound või artsd ei toeta helikaardi jagamist mõne teise programmiga.

FreeBSD all on seda võimalik teha virtuaalsete helikanalite (Virtual Sound Channels) abil, mida saab seadistada sysctl(8)-ga. Virtuaalkanalite abil saad oma helikaardi taasesituskanalite arvu mitmekordistada, seda võimaldab heli miksimine kernelis.

Selleks, et virtuaalkanalite arvu määrata, on olemas kaks sysctl-nuppu, mida saad kasutada root-õigustes järgmiselt:

# sysctl hw.snd.pcm0.vchans=4
# sysctl hw.snd.maxautovchans=4

Ülaltoodud näide eraldab neli virtuaalkanalit, mis on igapäevaseks kasutamiseks ka sobiv arv. hw.snd.pcm0.vchans näitab, mitut virtuaalkanalit pcm0 sisaldab, ning seda arvu saab konfigureerida hiljem, kui vastav seade juba paigas on. hw.snd.maxautovchans näitab, mitu virtuaalkanalit suvalisele audioseadmele eraldatakse, kui ta paigaldatakse käsu kldload(8) abil. Kuna pcm-moodulit saab laadida riistvaradraiveritest sõltumatult, säilitab hw.snd.maxautovchans infot ka selle kohta, mitu virtuaalkanalit hiljem lisatavatele seadmetele eraldatakse.

Kui sa ei kasuta failisüsteemi devfs(5), pead oma programmid suunama faili /dev/dsp0.x, kus x on number 1-3, kui hw.snd.pcm.0.vchans on 4, nagu ülaltoodud näites. Juhul kui süsteem kasutab devfs(5), eraldatakse see fail kasutajale automaatselt ning nähtamatult.