This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.

Configurazione della Scheda Audio

7.2 Configurazione della Scheda Audio

Contributo di Moses Moore. Arricchito per FreeBSD 5.X da Marc Forvieille.

7.2.1 Configurare il Sistema

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.

Nota: Con FreeBSD 4.X, per caricare tutti i driver audio, devi caricare il modulo snd invece di snd_driver.

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.

7.2.1.1 Configurare un Kernel Custom con il Supporto Audio

La prima cosa da fare è aggiungere al kernel il driver audio generico sound(4), e per fare ciò devi aggiungere la seguente riga al tuo file di configurazione del kernel:

device sound

Con FreeBSD 4.X la riga da aggiungere è questa:

device pcm

Ora dobbiamo aggiungere il supporto per la nostra scheda audio. Di conseguenza abbiamo la necessità di conoscere quale driver supporta la nostra 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. Inoltre, nel file /usr/src/sys/conf/NOTES (/usr/src/sys/i386/conf/LINT per FreeBSD 4.X) puoi trovare informazioni riguardanti la sintassi dei driver audio da usare nel file di configurazione del kernel.

Schede ISA non-PnP possono obbligarti a fornire al kernel informazioni su alcuni settaggi della scheda audio (IRQ, porta di I/O, etc). 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), con la seguente riga nel file di configurazione del kernel:

device snd_sbc

e in aggiunta 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 del driver audio. Con FreeBSD 4.X, questi settaggi sono inseriti direttamente nel file di configurazione del kernel. Nel caso della nostra scheda ISA presa in esame, dovremo usare questa riga:

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

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.

Nota: Con FreeBSD 4.X, alcuni sistemi con dispositivi audio incorporati nella scheda madre potrebbero richiedere le seguenti opzioni nel file di configurazione del kernel:

options PNPBIOS

7.2.2 Collaudo della Scheda Audio

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.

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/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. Ecco un modo veloce per controllare se la scheda trasmette dati al nodo /dev/dsp:

% cat filename > /dev/dsp

dove filename può essere qualsiasi file. Questo comando dovrebbe produrre del rumore, confermando che la scheda sonora sta lavorando.

Nota: Gli utenti di FreeBSD 4.X hanno bisogno di creare un nodo del dispositivo per la scheda audio prima di poterlo usare. Se la scheda mostrata nel buffer dei messaggi è pcm0, devi eseguire il seguente comando da root:

# cd /dev
# sh MAKEDEV snd0

Se il rilevamento della scheda ha ritornato pcm1, segui le stesse fasi come indicato qui sopra, rimpiazzando snd0 con snd1.

MAKEDEV creerà un gruppo di nodi dei dispositivi che saranno usati dalle varie applicazioni audio.

I livelli del mixer della scheda possono essere modificati attraverso il comando mixer(8). Maggiori dettagli possono essere trovati nella pagina man mixer(8).

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

Nota: 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 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: Solamente supportato da FreeBSD 5.3-RELEASE 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>.