Prima di iniziare, dovresti conoscere il modello della scheda che possiedi, il chip che utilizza, e se è una scheda PCI o ISA. FreeBSD supporta diverse schede PCI e ISA. Verifica la lista dei dispositivi audio supportati nell' Hardware Notes per vedere se la tua scheda è supportata. Inoltre tale documento ti indicherà quale driver supporta la tua scheda.
Per usare il tuo dispositivo audio, dovrai caricare i driver corretti. Il caricamento del driver del dispositivo può essere fatto in due modi. Il metodo più semplice consiste semplicemente nel caricare un modulo nel kernel per la tua scheda audio con kldload(8) che può essere fatto sia da linea di comando:
#
kldload snd_emu10k1
sia aggiungendo la riga appropriata al file
/boot/defaults/loader.conf
come questa:
snd_emu10k1_load="YES"
Questi esempi sono per la scheda audio Creative SoundBlaster®
Live!. Altri moduli sonori disponibili sono elencati in
/boot/loader.conf
. Se hai dei dubbi su quale
driver usare, potresti provare a caricare il modulo
snd_driver
:
#
kldload snd_driver
Questo è un metadriver che carica i driver dei dispositivi
audio più comuni in un solo colpo. Ciò permette di
trovare velocemente il driver corretto. È anche possibile
caricare tutti i driver audio attraverso il file
/boot/loader.conf
.
Se desideri scoprire il driver selezionato per la tua scheda audio
dopo aver caricato il metadriver snd_driver
,
puoi verificare il file /dev/sndstat
con il
comando cat /dev/sndstat
.
Un altro metodo è quello di compilare staticamente il supporto per la tua scheda audio nel kernel. La sezione seguente fornisce le informazioni di cui hai bisogno per aggiungere il supporto al tuo hardware in questo metodo. Per informazioni aggiuntive su come ricompilare il kernel, guarda il Capitolo 8, Configurazione del Kernel di FreeBSD.
La prima cosa da fare è aggiungere al kernel il driver di framework audio sound(4); per fare ciò devi aggiungere la seguente riga al tuo file di configurazione del kernel:
device sound
Poi, devi aggiungere il supporto per la tua scheda audio. Di conseguenza, devi conoscere quale driver supporta la scheda. Controlla la lista dei dispositivi audio supportati nell'Hardware Notes, per determinare il driver corretto per la tua scheda sonora. Per esempio, la scheda SoundBlaster® Live! della Creative è supportata dal driver snd_emu10k1(4). Per aggiungere il supporto per questa scheda, usiamo la seguente riga:
device snd_emu10k1
Per conoscere la corretta sintassi da usare assicurati di
leggere la pagina man del driver. La sintassi corretta per la
configurazione del kernel di ogni driver audio supportato può
essere trovata nel file
/usr/src/sys/conf/NOTES
.
Schede ISA non-PnP possono obbligarti a fornire al kernel
informazioni su alcuni settaggi della scheda audio (IRQ, porta di I/O,
etc), tipico di tutte le scheda ISA non-PnP. Questo può
essere realizzato attraverso il file
/boot/device.hints
. All'avvio del sistema,
il loader(8) leggerà questo file e passerà
i settaggi al kernel. Per esempio, una vecchia scheda audio
SoundBlaster® 16 ISA non-PnP della Creative userà il driver
snd_sbc(4) in congiunzione con snd_sb16
.
Per questa scheda le seguenti linee devono essere aggiunte al file
di configurazione del kernel:
device snd_sbc device snd_sb16
e queste nel /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 questo caso, la scheda usa la porta di I/O
0x220
e l'IRQ 5
.
La sintassi usata nel file /boot/device.hints
è spiegata nella pagina man di sound(4) e nella pagina man
del driver in questione.
Il settaggi qui sopra sono quelli di default. In alcuni casi, potresti avere la necesità di modificare l'IRQ o altri parametri per far funzionare la tua scheda audio. Guarda la pagina man di snd_sbc(4) per maggiori dettagli su questo driver.
Dopo aver riavviato con il nuovo kernel, o dopo aver caricato il modulo richiesto, la scheda audio dovrebbe apparire nel tuo buffer dei messaggi (dmesg(8)) in modo simile a quanto segue:
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>
Lo stato della scheda audio può essere verificato leggendo
il file /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)
L'output del tuo sistema potrebbe essere diverso. Se nessun
dispositivo pcm
viene visualizzato, rivedi
ciò che è stato fatto di recente. Ricontrolla ancora
una volta il tuo file di configurazione del kernel e assicurati di
aver scelto il driver corretto. Alcuni problemi comuni sono elencati
nella Sezione 7.2.2.1, «Problemi Comuni».
Se tutto va bene, ora dovresti avere una scheda audio funzionante. Se i pin di audio-out del tuo drive CD-ROM o DVD-ROM sono collegati correttamente alla scheda audio, puoi inserire un CD nel drive e riprodurlo con cdcontrol(1):
%
cdcontrol -f /dev/acd0 play 1
Varie applicazioni, come audio/workman possono offrire una migliore interfaccia. Potresti voler installare una applicazione come audio/mpg123 per ascoltare i file audio MP3.
Un altro modo veloce per controllare se la scheda trasmette
dati al nodo /dev/dsp
è questo:
%
cat filename > /dev/dsp
dove filename
può essere
qualsiasi file. Questo comando dovrebbe produrre del rumore, confermando
che la scheda sonora sta lavorando.
I livelli del mixer della scheda possono essere modificati attraverso il comando mixer(8). Maggiori dettagli possono essere trovati nella pagina man mixer(8).
Errore | Soluzione |
---|---|
sb_dspwr(XX) timed out | Non è stata impostata correttamente la porta di I/O. |
bad irq XX | È stato configurato erroneamente l'IRQ. Assicurati che l'IRQ impostato e quello della scheda siano gli stessi. |
xxx: gus pcm not attached, out of memory | Non c'è abbastanza memoria disponibile per usare il dispositivo. |
xxx: can't open /dev/dsp! | Controlla con |
È spesso desiderabile avere più sorgenti di audio che siano in grado di suonare contemporaneamente, per esempio quando esound o artsd non supportano la condivisione del dispositivo audio con una certa applicazione.
FreeBSD ti permette di fare questo attraverso i Virtual Sound Channels, che possono essere abilitati con sysctl(8). I canali virtuali permettono di multiplexare i canali di riproduzione della tua scheda audio mixando l'audio nel kernel.
Per impostare il numero dei canali virtuali, ci sono due variabili
sysctl che, se sei l'utente root
, possono essere
impostate così:
#
sysctl hw.snd.pcm0.vchans=4
#
sysctl hw.snd.maxautovchans=4
L'esempio qui sopra alloca quattro canali virtuali, che è un
numero adatto all'uso di ogni giorno.
hw.snd.pcm0.vchans
è il numero dei canali
virtuali che ha pcm0
, ed è configurabile
una volta che il dispositivo è collegato.
hw.snd.maxautovchans
è il numero dei canali
virtuali che vengono dati a un nuovo dispositivo audio quando viene
collegato tramite kldload(8). Visto che il modulo
pcm
può essere caricato
indipendentemente dai driver dell'hardware,
hw.snd.maxautovchans
può contenere tanti
canali virtuali quanti ne verranno allocati successivamente ad ogni
dispositivo collegato.
Non puoi cambiare il numero di canali virtuali per un dispositivo mentre questo è in uso. Chiudi tutti i programmi che stanno usando quel dispositivo, come player di musica o demoni del suono.
Se non stai usando devfs(5), dovrai indirizzare la tua
applicazione su
/dev/dsp0
.x
, dove
x
va da 0 a 3 se
hw.snd.pcm.0.vchans
è impostato a 4 come nel
precedente esempio. Su un sistema che usa devfs(5), questo
verrà fatto automaticamente in modo trasparente per
un programma che richiede /dev/dsp0
.
I valori di default per i diversi canali del mixer sono rigidamente
codificati nel codice sorgente del driver pcm(4). Ci sono svariate
applicazioni e demoni che ti permettono di settare i valori del mixer
memorizzandoli per le successive invocazioni, ma questa non
è una soluzione pulita. È possibile settare valori di
default del mixer a livello del driver - questo
è realizzabile definendo i valori desiderati nel file
/boot/device.hints
, per esempio:
hint.pcm.0.vol="50"
Questo imposterà il canale volume a un valore di default di 50 non appena il modulo pcm(4) sarà caricato.
Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Per domande su FreeBSD, leggi la
documentazione prima di contattare
<questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a
<doc@FreeBSD.org>.