FreeBSD handboek
Terug | Hoofdstuk 7. Multimedia | Volgende

# 7.2. Geluidskaart installeren

Geschreven door Moses Moore. Aangepast voor FreeBSD 5.X door Marc Fonvieille.

## 7.2.1. Systeem instellen

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

    snd_emu10k1_load="YES"

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 8.

### 7.2.1.1. Aangepaste kernel maken met geluidsondersteuning

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:

    device sound

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:

    device snd_emu10k1

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:

    device snd_sbc
    device snd_sb16

Daarnaast moet het volgende worden toegevoegd aan `/boot/device.hints`:

    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"

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.

## 7.2.2. Geluidskaart testen

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

    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>

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 7.2.2.1.

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

``bestandsnaam`` kan ieder bestand zijn. Deze commandoregel hoort wat ruis te maken, waardoor wordt bevestigd dat de geluidskaart echt werkt.

Niveaus voor de geluidskaartmixer kunnen aangepast worden met het commando mixer(8). Er staan meer details in mixer(8).

### 7.2.2.1. Bekende problemen

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.

## 7.2.3. Meerdere geluidsbronnen gebruiken

Geschreven door Munish Chopra.

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.

> Opmerking: 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.

Als er geen gebruik wordt gemaakt van devfs(5), dan moeten applicaties wijzen naar `/dev/dsp0`.`x`, waar `x` tussen 0 en 3 ligt als `dev.pcm.0.rec.vchans` is ingesteld op 4, zoals in het bovenstaande voorbeeld. Op een systeem waar devfs(5) wordt gebruikt, wordt het voorgaande voor een programma dat om `/dev/dsp0` vraagt automatisch transparant gealloceerd.

## 7.2.4. Standaardwaarden voor mixerkanalen instellen

Geschreven door Josef El-Rayes.

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:

    hint.pcm.0.vol="50"

Met de bovenstaande instelling wordt het volume van een kanaal standaard op 50 ingesteld bij het laden van de module pcm(4).

Terug | Begin | Volgende
Multimedia | Omhoog | MP3 audio

Deze en andere documenten kunnen worden gedownload van ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Lees voor vragen over FreeBSD de documentatie alvorens contact te zoeken <questions@FreeBSD.org>.
Vragen over deze documentatie kunnen per e-mail naar <doc@FreeBSD.org>.