Avanti Indietro Indice

4. Installazione

Configurare Linux per supportare il suono prevede i seguenti passaggi:

  1. Installare la scheda sonora.
  2. Configurare il Plug and Play (se disponibile)
  3. Configurare e compilare il kernel con il supporto sonoro.
  4. Creare i file dispositivo.
  5. Effettuare il boot del kernel di Linux e testare l'installazione.

Se avete Red Hat Linux avete anche una utility 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.

4.1 Installare la scheda audio

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 (come schede Ethernet, SCSI, porte seriali e 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.

4.2 Configurare il Plug and Play

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:

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.

4.3 Configurare il kernel

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.

4.4 Creazione dei file dispositivo

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.

4.5 Boot di Linux e test dell'installazione

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 installata 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) 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 (per 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. 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 -- A/D e il software funzionano. Al contrario se avete riscontrato problemi controllate la sezione successiva di questo documento.

4.6 Risoluzione dei problemi

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, risolvete il problema prima di passare al controllo successivo.

Passo 1: controllate che il kernel sia quello che avete compilato.

Potete controllare la data del kernel per vedere se state usando quello compilato con il supporto per il suono. Si può farlo usando 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 avete compilato il kernel, allora state usando un vecchio kernel. Avete eseguito il reboot? Se usate LILO, lo avete reinstallato (normalmente eseguendo lilo)? Se eseguite il boot da un floppy, ne avete creato uno nuovo di boot e lo avete utilizzato per il boot?

Passo 2: assicuratevi che nel kernel sia incluso il supporto del driver sonoro.

Il modo più facile per fare questo controllo è quello di dare un'occhiata all'output di dev/sndstat come detto precedentemente. 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.

Passo 3: il kernel ha rilevato la vostra scheda al momento del boot?

Assicuratevi che il kernel abbia rilevato la scheda al momento del boot. Dovreste avere visto un messaggio in fase di boot. Se il messaggio è passato troppo velocemente potete richiamarlo con il comando dmesg :

% dmesg

oppure

% tail /var/log/messages

Se la scheda non è stata trovata qualcosa è andato storto. Assicuratevi che sia realmente installata. Se funziona sotto DOS potete ragionevolmente sperare che l'hardware funzioni, probabilmente è solo un problema di configurazione del kernel. Forse avete configurato la scheda del tipo sbagliato o assegnato parametri inesatti, o la scheda non è compatibile con nessuno dei driver sonori del kernel di Linux.

Una possibilità è quella che la scheda sia una delle compatibili che richiedono l'inizializzazione dal driver del DOS. Provate a fare il boot da DOS e ad installare il driver fornito dal produttore della scheda. Poi eseguite un boot a caldo di Linux usando Control-Alt-Canc. Assicuratevi che gli indirizzi di I/O, DMA e le impostazioni degli IRQ della scheda siano gli stessi sia per Linux che per DOS. Consultate il file Readme.cards nei sorgenti della distribuzione del sound driver per eventuali consigli sulla configurazione della scheda.

Se la scheda non compare nel documento, è possibile che il Linux sound driver non la supporti. Controllate i riferimenti alla fine di questo documento.

Passo 4: potete leggere dati dal dispositivo dsp?

Provate 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. Provate a eseguire un test da DOS, se possibile, per vedere se è questa la causa.

Se tutto questo non funziona

Se ci sono ancora problemi, quelli che seguono sono gli ultimi consigli su tentativi eventuali:


Avanti Indietro Indice