Configurare Linux per supportare il suono prevede i seguenti passaggi:
Se avete Red Hat Linux avete anche una utilità chiamata sndconfig
che in molti casi rileverà la vostra scheda audio e imposterà tutti i
necessari file di configurazione per caricare i giusti driver audio per
la vostra scheda. Se avete una Red Hat vi suggerisco di provarla. Se
vi funziona allora potete saltare il resto delle istruzioni in questa
sezione.
Se sndconfig
non riesce nel suo intento, state usando un'altra
distribuzione o volete seguire il metodo manuale per poter meglio
comprendere quello che state facendo, le prossime sezioni descriveranno
dettagliatamente tutti i passi da compiere.
Seguite le istruzioni del produttore per l'installazione dell'hardware o, meglio, richiedete al vostro rivenditore l'installazione della scheda al momento dell'acquisto.
Le vecchie schede sonore usano switch o jumper per l'impostazione di IRQ, canali DMA, ecc; trascrivete su un foglio i valori assegnati. Se non siete sicuri, usate i parametri predefiniti. Nel limite del possibile cercate di evitare conflitti con altro hardware installato sul sistema (e.g. ethernet, SCSI, seriali e porte parallele) .
Usualmente si dovrebbero usare la stessa porta di I/O, IRQ e impostazioni di DMA che si usano sotto DOS. In qualche caso (particolarmente con schede PnP) si devono usare impostazioni diverse per far funzionare le cose sotto Linux. Serve qualche prova.
Attualmente diverse schede audio utilizzano il protocollo Plug and Play per configurare le impostazioni degli indirizzi di I/O, irq e canali DMA. Se avete una vecchia scheda che ha delle impostazioni fisse o dei jumper (ponticelli) potete saltare alla prossima sezione.
Alla versione 2.2 del kernel non vi è ancora un completo supporto per il Plug and Play. La soluzione preferita è quella che prevede l'utilizzo dei tool isapnp che sono presenti in molte distribuzioni di Linux (o che potete scaricare dal sito web della Red Hat http://www.redhat.com/).
Date per prima cosa un'occhiata alla documentazione della vostra distribuzione di Linux. Il supporto Plug and Play potrebbe essere già configurato o potrebbe funzionare in maniera differente da come viene qui descritto. Se dovete configurarvelo da soli potete trovare altri dettagli nelle pagine di manuale del tool isapnp. In breve, la procedura che dovrete seguire è la seguente:
pnpdump
per scoprire tutte le possibili
impostazioni dei vostri dispositivi Plug and Play, salvando il risultato
nel file /etc/isapnp.conf.
(ACT Y)
che si trova verso la fine.
isapnp
venga eseguito all'avvio del sistema,
cosa normalmente fatta da uno script di avvio. Fate il reboot del vostro
sistema o eseguite manualmente isapnp
.
Se per qualche motivo non potete o non volete usare il tool isapnp, vi sono altre soluzioni. Se utilizzate la scheda audio sotto Microsoft Windows 95 o 98, potete usare il device manager per configurare la scheda audio e quindi effettuare un soft boot di Linux usando il programma LOADLIN. Assicuratevi che Windows e Linux utilizzino le stesse impostazioni di configurazione della scheda.
Se utilizzate la scheda dal DOS potete usare l'utilità icu
che viene distribuita assieme alla SoundBlaster16 PnP per configurarla da
DOS, quindi effettuare un soft boot di Linux utilizzando LOADLIN. Ancora una
volta assicuratevi che sia DOS che Linux utilizzino le stesse impostazioni
della scheda.
Qualche driver per schede audio include il software necessario ad inizializzare il Plug and Play per la scheda. Date un'occhiata alla documentazione del driver per maggiori informazioni.
Al momento della prima installazione normalmente si usa un kernel precompilato. Questo kernel normalmente non supporta il suono. La cosa migliore è, senza dubbio, la ricompilazione del kernel con l'aggiunta dei driver che vi servono. Dovreste comunque ricompilare il kernel perlomeno per aggiornare la versione e minimizzare la grandezza del file stesso (vmlinuz) onde evitare di occupare troppo spazio in memoria
Il Linux Kernel HOWTO dovrebbe essere consultato per i dettagli su come compilare un nuovo kernel. Qui procederò solamente a riportare alcuni passaggi riguardanti il supporto sonoro.
Se, prima d'ora, non avete mai configurato il kernel per il supporto sonoro sarebbe una buona idea leggere tutti i Readme file inclusi con il kernel sound driver ed in particolar modo le informazioni specifiche riguardanti la vostra scheda sonora. La seguente documentazione si trova normalmente nella directory del kernel sound driver, che viene installata di default in /usr/src/linux/drivers/sound. Se questa directory non è presente è molto probabile che abbiate una versione molto vecchia o non abbiate installato il codice sorgente.
Seguite la normale procedura per compilare il kernel. Attualmente vi sono
tre interfacce per il processo di configurazione. Un'interfaccia utente grafica
che gira sotto X11 e può essere lanciata con make xconfig
. Una basata
su menu che richiede sono un display testuale è disponibile con make
menuconfig
. Il metodo originale, usando make config
, offre una
semplice interfaccia di testo.
Durante la configurazione del kernel vi saranno molte scelte da effettuare per configurare correttamente il driver per la scheda che possedete. L'help in linea di cui il programma di configurazione dispone dovrebbe fornire un adeguato supporto a questa fase della procedura. Scegliete meglio che potete.
Dopo aver configurato il kernel dovrete compilarlo ed installare il nuovo kernel come descritto nel Kernel HOWTO.
Per un corretto funzionamento devono essere creati dei file dispositivo per i dispositivi audio. Essi vengono creati di norma durante l'installazione del vostro sistema Linux. Può essere fatto un controllo veloce utilizzando il comando di cui si parla qui di seguito. Se l'output è quello mostrato (la data può variare) allora i file dispositivi sono quasi sicuramente a posto.
% ls -l /dev/sndstat
crw-rw-rw- 1 root root 14, 6 Apr 25 1995 /dev/sndstat
Si noti che il fatto che i file dispositivo siano a posto di per sé non garantisce nulla. Anche il driver del kernel deve essere stato caricato o compilato prima che le periferiche funzionino (se ne parlerà più avanti).
In qualche raro caso, se si crede che i dispositivi siano errati, essi
possono essere ricreati. Diverse distribuzioni di Linux hanno
lo script /dev/MAKEDEV
che può essere utilizzato a tale scopo.
Dovreste essere pronti per eseguire il boot e testare il sound driver. Seguite le normali procedure per installare e fare il boot del nuovo kernel (non cancellate il vecchio kernel, può servire nel caso in cui si incontrino problemi).
Durante il boot, controllate l'esistenza di un messaggio tipo questo alla
partenza (se passano troppo velocemente, li potete rileggere con il
comando dmesg
):
Sound initialization started
<Sound Blaster 16 (4.13)> at 0x220 irq 5 dma 1,5
<Sound Blaster 16> at 0x330 irq 5 dma 0
<Yamaha OPL3 FM> at 0x388
Sound initialization complete
Deve corrispondere al tipo di scheda installato e al settaggio di IRQ e jumper (se ci sono).
Si noti che i messaggi di cui sopra non vengono mostrati se si è
preferito utilizzare il driver come modulo caricabile del kernel (a meno
che non venga abilitato, ad esempio con insmod sound trace_init=1
).
Quando il driver sonoro viene compilato nel kernel i messaggi
Sound initialization started
e Sound initialization complete
devono apparire. Se ciò non accadesse significa che non è presente un
driver sonoro nel kernel. In questo caso si avrà cura di controllare che
il kernel installato sia quello che è stato compilato con l'abilitazione
del driver sonoro.
Se non viene visualizzato nulla tra le righe Sound initialization
started
e Sound initialization complete
significa che non sono
stati rilevati dispositivi audio. Molto probabilmente significa che non è stato
abilitato il driver giusto, la scheda non è supportata, la porta
di I/O è sbagliata o che si ha una scheda PnP che non è stata
configurata.
Il driver può anche mostrare dei messaggi di errore e altre avvertenze durante il boot. Si stia attenti a tali messaggi la prima volta che viene effettuato il boot dopo aver configurato il driver sonoro.
Si dovrà successivamente controllare il file dispositivo /dev/sndstat. Leggendo il file sullo stato del driver sonoro (/dev/sndstat ndt.) vengono presentate informazioni aggiuntive sulla eventuale corretta inizializzazione del driver sonoro. Ecco un esempio di output:
% cat /dev/sndstat
Sound Driver:3.5.4-960630 (Sat Jan 4 23:56:57 EST 1997 root,
Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586)
Kernel: Linux fizzbin 2.0.27 #48 Thu Dec 5 18:24:45 EST 1996 i586
Config options: 0
Installed drivers:
Type 1: OPL-2/OPL-3 FM
Type 2: Sound Blaster
Type 7: SB MPU-401
Card config:
Sound Blaster at 0x220 irq 5 drq 1,5
SB MPU-401 at 0x330 irq 5 drq 0
OPL-2/OPL-3 FM at 0x388 drq 0
Audio devices:
0: Sound Blaster 16 (4.13)
Synth devices:
0: Yamaha OPL-3
Midi devices:
0: Sound Blaster 16
Timers:
0: System clock
Mixers:
0: Sound Blaster
Il comando precedente può restituire alcuni messaggi di errore. "No such file or directory" indica che si devono creare i file dispositivo (vedi sezione 4.3). "No such device" significa che il driver sonoro non è stato caricato o linkato nel kernel. Si ritorni alla sezione 4.2 per rimediare a questo errore.
Se le linee della sezione "Card config:" di /dev/sndstat
sono
visualizzate tra parentesi (tipo "(SoundBlaster at 0x220 irq5 drq 1,5)"),
significa che quel dispositivo è stato configurato ma non rilevato.
Adesso siete pronti per eseguire un semplice file sonoro. Prendete un qualsiasi file sonoro e reindirizzatelo sul dispositivo sonoro per testarne il risultato, ad esempio:
% cat endoftheworld >/dev/dsp
% cat crash.au >/dev/audio
(State attenti a non dimenticare il ">" nel comando di cui sopra).
Si noti che, in generale, l'uso di cat
non è la maniera più
adatta per riprodurre file audio, serve solo come piccolo controllo.
Avrete bisogno di un vero e proprio programma di riproduzione
(se ne parla più avanti) che farà un lavoro migliore.
Questo comando funzionerà se vi è almeno un dispositivo nella sezione "audio devices" di /dev/sndstat. Se la sezione "audio devices" è vuota ci si dovrà accertare del perché il dispositivo non è stato rilevato.
Se il comando precedente restituisce un "I/O error", dovreste dare un'occhiata alla parte finale dei messaggi del kernel usando il comando "dmesg". È probabile che vi si trovi un messaggio di errore. Molto spesso il messaggio è "Sound: DMA (output) timed out - IRQ/DRQ config error?". Questo messaggio significa che il driver non ha utilizzato con successo l'interrupt impostato per comunicare con la scheda audio. In molti casi significa che l'IRQ o il canale DMA configurato nel driver non sono corretti. La maniera migliore di farlo funzionare è quella di tentare con tutte le possibili combinazione di DMA e IRQ supportati dal dispositivo audio.
Un'altra possibile ragione è costituita dall'incompatibilità del dispositivo rilevato con il driver che si è scelto di installare. È questo il caso delle schede che si dicono "SoundBlaster (Pro/16) compatibili" ma che non funzionano con il driver per SoundBlaster. In questo caso si dovrà scoprire con quale scheda audio è compatibilie la propria (ad esempio scrivendo un messaggio sul newsgroup comp.os.linux.hardware).
Alcuni esempi di file sonori sono reperibili presso : ftp://tsx-11.mit.edu/pub/linux/packages/sound/snd-data-0.1.tar.Z
Adesso verificate la registrazione. Se avete la possibilità di usare un dispositivo di input potete fare un test veloce in questo modo :
# registra 4 secondi di audio dal microfono
EDT% dd bs=8k count=4 </dev/audio >sample.au
4+0 records in
4+0 records out
# esegue il suono registrato
% cat sample.au >/dev/audio
Ovviamente per far funzionare tutto ciò si dovrà aver connesso un microfono alla scheda audio e vi si dovrà parlare (se non lo avevate capito... ndt). Forse avrete anche bisogno di installare un programma mixer per impostare il microfono come dispositivo di input e regolare il guadagno.
Se il test non dà problemi, potete ragionevolmente confidare nel fatto che la scheda D/A and A/D e il software funzionano. Al contrario se avete riscontrato problemi controllate la sezione successiva di questo documento.
Se comunque, dopo avere seguito le istruzioni dell'HOWTO, incontrate problemi qui propongo alcune cose da controllare. I controlli sono proposti in ordine progressivo di difficoltà. Se un controllo non funzionasse, risolvi il problema prima di passare al controllo successivo.
Puoi controllare la data del kernel per vedere se stai usando quello
compilato con il supporto per il suono. Puoi farlo con il comando
uname
:
% uname -a
Linux fizzbin 2.2.4 #1 Tue Mar 23 11:23:21 EST 1999 i586 unknown
o visualizzando il file /proc/version:
% cat /proc/version
Linux version 2.2.4 (root@fizzbin) (gcc version 2.7.2.3) #1 Tue Mar 23 11:23:21 EST 1999
Se la data non corrisponde al giorno in cui hai compilato il kernel, allora stai usando un vecchio kernel. Hai eseguito il reboot? Se usi LILO, lo hai reinstallato (normalmente eseguendo lilo)? Se esegui il boot da un floppy, ne hai creato uno nuovo di boot e lo hai usato per il boot?
Il modo più facile per fare questo controllo è quello di dare un'occhiata
all'output di dev/sndstat
come prima detto. Se l'output non è quello
che ci si attendeva allora qualche cosa è andata storta durante la
configurazione o la compilazione del kernel. Fate ripartire il processo
di installazione, ricominciando dalla configurazione e compilazione del
kernel.
Assicurati che il kernel abbia rilevato la scheda al momento del boot.
Dovresti avere visto un messaggio in fase di boot. Se il messaggio è passato
troppo velocemente puoi richiamarlo con il comando dmesg
:
% dmesg
oppure
% tail /var/log/messages
Se la scheda non è stata trovata qualcosa è andato storto. Assicurati che sia realmente installata. Se funziona sotto DOS puoi ragionevolmente sperare che l'hardware funzioni, probabilmente è solo un problema di configurazione del kernel. Forse hai configurato la scheda del tipo sbagliato o hai assegnato parametri inesatti, o la tua scheda non è compatibile con nessuno dei driver sonori del kernel di Linux.
Una possibilità è quella che la tua scheda sia una delle compatibili
che richiedono l'inizializzazione dal driver del DOS . Prova a fare il boot da
DOS e ad installare il driver fornito dal produttore della scheda. Poi esegui
un boot a caldo di Linux usando Control-Alt-Delete
(Control-Alt-Canc
nelle tastiere italiane. ndt). Assicurati che gli indirizzi di I/O,
DMA e le impostazioni degli IRQ della scheda siano gli stessi sia per Linux che per DOS.
Consulta il file Readme.cards nei sorgenti della distribuzione del
sound driver per eventuali consigli sulla configurazione della tua scheda.
Se la tua scheda non compare nel documento, è possibile che il Linux sound driver non la supporti. Controlla i riferimenti alla fine di questo documento.
Prova a leggere dal dispositivo /dev/audio usando il comando
dd
visto prima all'interno di questo documento. Il comando deve
funzionare senza errori.
Se non funziona probabilmente dipende da un conflitto di IRQ o DMA o da qualche tipo di incompatibilità hardware (il dispositivo non è supportato da Linux o il driver è stato configurato per un dispositivo errato).
Una remota possibilità potrebbe essere un hardware non funzionante. Prova ad eseguire un test da DOS, se possibile, per vedere se è questa la causa.
Se hai ancora problemi, qui ci sono gli ultimi consigli su eventuali cose da provare:
comp.os.linux
o su
altri gruppi Usenet (comp.os.linux.hardware è una buona scelta; a causa
dell'altro livello di traffico su questi gruppi aiuta mettere la parola "sound"
nel subject del messaggio, in modo tale che i giusti esperti lo notino)Esc-x doctor
:-)