Alvorens te beginnen is het van belang te weten welk model een geluidskaart is, welke chip erop wordt gebruikt en of het een PCI of ISA kaart is. FreeBSD ondersteunt vele PCI en ISA kaarten. De ondersteunde audio-apparaten staan in een lijst in de Hardware Notes. In de Hardware Notes staat ook beschreven welk stuurprogramma uw kaart ondersteunt.
Om een geluidsapparaat te gebruiken dient het juiste apparaatstuurprogramma geladen te worden. Dit kan op twee manieren. De meest eenvoudige manier is simpelweg een kernelmodule te laden voor de gewenste geluidskaart met kldload(8). Dit kan vanaf de commandoregel:
#
kldload snd_emu10k1
Of door als volgt de juiste regel toe te voegen aan
/boot/loader.conf
:
De bovenstaande voorbeelden zijn voor een Creative
SoundBlaster® Live! geluidskaart. De overige beschikbare
laadbare geluidsmodules staan beschreven in
/boot/defaults/loader.conf
. Als niet
compleet duidelijk is welk stuurprogramma gebruikt dient te
worden, dan kan het met de module
snd_driver
geprobeerd worden:
#
kldload snd_driver
Dit is een metastuurprogramma, dat in één
keer de meest voorkomende apparaatstuurprogramma's laadt.
Hiermee kan het zoeken naar het juiste stuurprogramma versneld
worden. Het is ook mogelijk om alle geluidsstuurprogramma's te
laden via de optie
/boot/loader.conf
.
Om uit te vinden welk stuurprogramma na het laden van het
metastuurprogramma snd_driver
wordt
geladen kan de inhoud van het bestand
/dev/sndstat
nagekeken worden met
cat /dev/sndstat
.
Een tweede mogelijkheid is ondersteuning voor een geluidskaart statisch in de kernel te compileren. In de onderstaande paragrafen staat meer informatie over hoe op die manier ondersteuning voor hardware toegevoegd kan worden. Meer informatie over het hercompileren van een kernel staat in Hoofdstuk 9, De FreeBSD-kernel instellen.
Eerst moet het stuurprogramma voor het audioraamwerk sound(4) aan de kernel toegevoegd worden. Daarvoor dient het volgende te worden opgenomen in het bestand met kernelinstellingen:
Daarna kan ondersteuning voor de specifieke geluidskaart toegevoegd worden. Daarvoor moet bekend zijn welk stuurprogramma de kaart ondersteunt. Dit kan opgezocht worden in de lijst met ondersteunde audio-apparaten in de Hardware Notes, waar de correcte stuurprogramma's voor geluidskaarten beschreven staan. Zo wordt een Creative SoundBlaster® Live! geluidskaart bijvoorbeeld ondersteund door het stuurprogramma snd_emu10k1(4). Ondersteuning voor deze kaart kan als volgt worden toegevoegd:
In de hulppagina voor een stuurprogramma staat welke
syntaxis gebruikt kan worden. De expliciete syntaxis voor de
kernelinstellingen voor elk ondersteund geluidsstuurprogramma
staat ook in /usr/src/sys/conf/NOTES
.
Voor niet-PnP ISA-geluidskaarten kan het nodig zijn dat de
kernel informatie gegeven moet worden over de instellingen
van de kaart (IRQ, I/O poort, enzovoort), zoals dat geldt voor
alle niet-PnP ISA-kaarten. Dit kan via het bestand
/boot/device.hints
. Bij het starten van
een systeem leest de loader(8) dat bestand uit en geeft
de instellingen door aan de kernel. Zo gebruikt een oude
Creative SoundBlaster® 16 ISA niet-PnP-kaart het
stuurprogramma snd_sbc(4) samen met
snd_sb16
en dient de volgende regel
toegevoegd te worden aan het kernelinstellingenbestand:
Daarnaast moet het volgende worden toegevoegd aan
/boot/device.hints
:
In dit geval gebruikt de kaart I/O poort
0x220
en IRQ 5
.
De gebruikte syntaxis voor
/boot/device.hints
staat beschreven in
de hulppagina sound(4) en de hulppagina voor het
gevraagde stuurprogramma.
De bovenstaande instellingen zijn de standaardinstellingen. In sommige gevallen moeten IRQ of andere instellingen gewijzigd worden om een apparaat juist te laten werken. In snd_sbc(4) staat meer informatie over deze kaart.
Na het herstarten met de aangepaste kernel of na het laden van de benodigde module, hoort de geluidskaart ongeveer als volgt te verschijnen in de systeemberichtbuffer (dmesg(8)):
De status van de geluidskaart kan gecontroleerd worden via
het bestand /dev/sndstat
:
#
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)De uitvoer kan per systeem wat verschillen. Als er geen
apparaten pcm
genoemd worden, dienen
eerdere stappen herzien te worden. Bekijk nogmaals de
instellingen van de kernel en bevestig dat het juiste
apparaatstuurprogramma was gekozen. Veel voorkomende problemen
staan beschreven in Paragraaf 8.2.2.1, “Bekende problemen”.
Als het goed is werkt de geluidskaart nu. Als pinnen voor audio-out van de CD-ROM- of DVD-ROM-drive juist zijn aangesloten op de geluidskaart, dan kan er een CD in de drive gestopt worden en kan deze met cdcontrol(1) afgespeeld worden:
%
cdcontrol -f /dev/acd0 play 1
Applicaties als audio/workman
kunnen een
vriendelijker interface bieden. Wellicht is het handig om een
applicatie als audio/mpg123
te installeren om naar MP3 audiobestanden te luisteren.
Een snelle manier om de kaart te testen is het als volgt
sturen van gegevens naar /dev/dsp
:
%
cat bestandsnaam
> /dev/dsp
kan ieder bestand zijn. Deze commandoregel hoort wat ruis te
maken, waardoor wordt bevestigd dat de geluidskaart echt werkt.bestandsnaam
De appparaat nodes /dev/dsp*
worden
automatisch aangemaakt wanneer dat nodig is. Als deze niet
worden gebruikt, bestaan ze niet en zullen ze niet terugkomen
in de terugkoppeling van ls(1).
Niveaus voor de geluidskaartmixer kunnen aangepast worden met het commando mixer(8). Er staan meer details in mixer(8).
Fout | Oplossing |
---|---|
sb_dspwr(XX) timed out | De I/O poort is niet correct ingesteld. |
bad irq XX | Het IRQ is niet correct ingesteld. Zorg dat het ingestelde IRQ en het IRQ voor het geluid hetzelfde zijn. |
xxx: gus pcm not attached, out of memory | Er is niet genoeg geheugen beschikbaar om het apparaat te gebruiken. |
xxx: can't open /dev/dsp! | Controleer fstat | grep dsp
of een ander programma het apparaat geopend heeft.
Bekende probleemgevallen zijn
esound en
KDE's
geluidsondersteuning. |
Een ander euvel is dat moderne grafische kaarten voor het gebruik
van HDMI en dergelijken vaak zijn uitgerust met hun
eigen geluidsstuurprogramma. Dit geluidsapparaat wordt soms opgesomd
voor het eigenlijke geluidskaart en daardoor wordt deze niet gebruikt
als het standaard afspeelapparaat. Om te zien of dit het geval is,
kan dmesg worden gedraaid en gezocht worden
naar pcm
. De uitvoer ziet er ongeveer als volgt
uit:
Hier is de grafische kaart (NVidia
) opgesomd
voor de geluidskaart (Realtek ALC889
). Om de
geluidskaart als standaard afspeelapparaat te gebruiken, dient
hw.snd.default_unit
veranderd te worden in de
eenheid dat voor afspelen gebruikt moet worden:
#
sysctl hw.snd.default_unit=n
Hier is n
het nummer van het geluidsapparaat
wat gebruikt dient te worden, in dit voorbeeld 4
.
U kunt deze verandering permanent maken door de volgende regel aan
/etc/sysctl.conf
toe te voegen:
4
Het is vaak wenselijk om meerdere geluidsbronnen tegelijkertijd af te kunnen spelen, zoals wanneer esound of artsd het delen van een geluidsapparaat met een andere applicatie niet ondersteunen.
Met FreeBSD kan dit met Virtuele Geluidskanalen, die aangezet kunnen worden met de faciliteit sysctl(8). Met virtuele kanalen kunnen het afspelen van een geluidskaart gemultiplext worden door het geluid in de kernel te mixen.
Het aantal virtuele kanalen kan met drie sysctl knoppen
als root
als volgt ingesteld
worden:
#
sysctl dev.pcm.0.play.vchans=4
#
sysctl dev.pcm.0.rec.vchans=4
#
sysctl hw.snd.maxautovchans=4
In het bovenstaande voorbeeld worden vier virtuele kanalen
toegewezen, wat in het dagelijks gebruik voldoende is. Zowel
dev.pcm.0.play.vchans=4
als
dev.pcm.0.rec.vchans=4
zijn het aantal
virtuele kanalen dat pcm0
heeft voor
afspelen en opnemen, en zijn instelbaar als een apparaat is aangesloten.
In hw.snd.maxautovchans
staat het aantal
virtuele kanalen dat aan een nieuw audio-apparaat wordt gegeven
als het wordt aangesloten met kldload(8). Omdat de module
pcm
onafhankelijk van de hardware
stuurprogramma's geladen kan worden, kan in
hw.snd.maxautovchans
opgeslagen worden
hoeveel virtuele kanalen apparaten die later worden aangesloten
krijgen. Voor meer informatie wordt naar pcm(4) verwezen.
Het aantal virtuele kanalen voor een apparaat kan niet gewijzigd worden als het in gebruik is. Sluit eerst alle programma's die het apparaat gebruiken, zoals muziekspelers of geluidsdaemons.
Het juiste pcm
apparaat zal
automatisch en transparant gealloceerd worden voor
programma's die /dev/dsp0
aanroepen.
De standaardwaarden voor de mixerkanalen zijn ingesteld in
de broncode van het stuurprogramma pcm(4). Er zijn vele
applicaties en daemons waarmee waarden voor de mixer ingesteld
en onthouden kunnen worden en iedere keer bij het starten
weer kunnen worden ingesteld, maar dit is geen nette
oplossing. Het is mogelijk om de standaardwaarden in te
stellen op het niveau van het stuurprogramma — dit wordt
bereikt door de gewenste waarden in te stellen in
/boot/device.hints
, bijvoorbeeld:
Met de bovenstaande instelling wordt het volume van een kanaal standaard op 50 ingesteld bij het laden van de module pcm(4).