7.2 Configurazione della Scheda Audio

Contributo di Moses Moore.

7.2.1 Riconoscimento del Proprio Dispositivo

Prima di iniziare, dovresti conoscere il modello della scheda che possiedi, il chip che utilizza, e se è una scheda PCI o ISA. FreeBSD supporta una grande varietà di schede sia PCI che ISA. Se non vedi la tua scheda nella lista seguente, controlla la pagina man di pcm(4). Questa non è una lista completa; tuttavia, comprende le schede più comuni.

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

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 snd_driver, un metadriver che carica i driver più comuni in una sola volta, velocizzando la ricerca per il driver corretto.

Alternativamente, puoi compilare staticamente il supporto per la tua scheda audio nel kernel. Le sezioni seguenti forniscono le informazioni di cui hai bisogno per aggiungere il supporto al tuo hardware con questo metodo. Per informazioni aggiuntive su come ricompilare il kernel, guarda il Capitolo 8.

7.2.1.1 Schede Audio Creative, Advance, e ESS

Se hai una delle suddette schede, dovrai aggiungere:

device pcm

al file di configurazione del kernel. Se hai una scheda ISA PnP, dovrai aggiungere inoltre:

device sbc

Per una scheda ISA non PnP, aggiungi:

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

al file di configurazione del kernel. Le impostazioni appena viste sono quelle di default. Potresti aver bisogno di cambiare IRQ o altre impostazioni per identificare la tua scheda. Guarda la pagina man di sbc(4) per ulteriori informazioni.

Nota: La Sound Blaster Live non è supportata sotto FreeBSD 4.0 senza l'uso di una patch, di cui questa sezione non si occuperà. È consigliato l'aggiornamento all'ultima -STABLE prima di provare ad usare questa scheda.

7.2.1.2 Schede Gravis UltraSound

Per una scheda ISA PnP, dovrai aggiungere:

device pcm
device gusc

al file di configurazione del kernel. Se hai una scheda ISA non PnP, dovrai aggiungere:

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

al file di configurazione del kernel. Potresti aver bisogno di cambiare IRQ o altre impostazioni per identificare la tua scheda. Guarda la pagina man di gusc(4) per ulteriori informazioni.

7.2.1.3 Schede Crystal Sound

Per le schede Crystal, dovrai aggiungere:

device pcm
device csa

al file di configurazione del kernel.

7.2.1.4 Supporto Generico

Per schede ISA o PCI PnP, dovrai aggiungere:

device pcm

al file di configurazione del kernel. Se hai una scheda audio ISA non PnP che non ha un driver bridge, dovrai aggiungere:

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

al file di configurazione del kernel. Potresti aver bisogno di cambiare IRQ o altre impostazioni per identificare la tua scheda.

7.2.1.5 Sonoro Integrato

Qualche sistema con dispositivi audio integrati nella scheda madre può richiedere l'opzione seguente nella configurazione del kernel:

options PNPBIOS

Nota: Se stai usando FreeBSD 5.0 o successivi l'opzione PNPBIOS non è necessaria. L'opzione è stata rimossa e la funzionalità è ora sempre abilitata.

7.2.2 Creazione e Test dei Dispositivi

Dopo aver riavviato, loggati e cerca il dispositivo nel file /var/run/dmesg.boot, come mostrato qui sotto:

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

L'output del tuo sistema può essere differente. Se non appare nessun dispositivo pcm, qualcosa è andato storto in precedenza. Se questo accade, riguarda il file di configurazione del kernel e assicurati di aver scelto il dispositivo corretto. I problemi più comuni sono elencati nella Sezione 7.2.2.1.

Nota: Se stai usando FreeBSD 5.0 o seguenti, puoi tranquillamente saltare il resto di questa sezione. Queste versioni usano devfs(5) per creare automaticamente i dispositivi.

Se il precedente comando ha restituito pcm0, dovrai eseguire il seguente come root:

# cd /dev
# sh MAKEDEV snd0

Se il comando ha restituito pcm1, segui gli stessi passi mostrati qui sopra, sostituendo snd0 con snd1.

Nota: I suddetti comandi non creeranno un dispositivo /dev/snd!

MAKEDEV creerà un gruppo di dispositivi, comprendente:

Dispositivo Descrizione
/dev/audio Dispositivo audio compatibile Sparc®
/dev/dsp Dispositivo per la voce digitalizzata
/dev/dspW Come /dev/dsp, ma con 16 bit per canale
/dev/midi Dispositivo per l'accesso midi in modalità diretta
/dev/mixer Dispositivo per il controllo del mixer
/dev/music Interfaccia di secondo livello al sequenziatore
/dev/sequencer Sequenziatore
/dev/pss Interfaccia di dispositivo programmabile

Se tutto va bene, ora dovresti avere una scheda audio funzionante. Se il tuo drive CD-ROM o DVD-ROM è collegato correttamente alla scheda audio, puoi inserire un CD nel drive e riprodurlo con cdcontrol(1):

% cdcontrol -f /dev/acd0c play 1

Varie applicazioni, come audio/workman offrono una migliore interfaccia. Potresti voler installare una applicazione come audio/mpg123 per ascoltare i file audio MP3.

7.2.2.1 Problemi Comuni

Errore Soluzione
unsupported subdevice XX

Non è stato creato correttamente qualche dispositivo. Ripeti i precedenti passi.

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 fstat | grep dsp se un'altra applicazione sta usando il dispositivo. Esound e il supporto audio di KDE sono famosi per creare problemi.

7.2.3 Utilizzo di Sorgenti Audio Multiple

Contributo di Munish Chopra.

È 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 impostati 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 viruali, 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.

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 l'utente.

7.2.4 Settare i Valori di Default per i Canali del Mixer

Contributo di Josef El-Rayes.

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 permettono in automatico di settare il mixer a valori prestabili, ma questa non è una soluzione pulita, noi vogliamo avere dei valori di default a livello del driver. Questo è realizzabile definendo i valori desiderati nel file /boot/device.hints. Ad esempio:

hint.pcm.0.vol="100"

Questo imposterà il canale volume a un valore di default di 100, non appena il modulo pcm(4) sarà caricato.

Nota: Supportato solo da FreeBSD 5.3 e superiori.

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