[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]


230. Introduzione alla gestione dell'audio e uso del lettore CD

Negli ultimi tempi, l'elaboratore viene visto sempre più spesso come una macchina multimediale tuttofare. In questo documento non c'è ancora una parte dedicata ai vari aspetti della «multimedialità» con GNU/Linux. Per il momento, qui si raccolgono solo alcune notizie utili per la gestione delle funzionalità audio con il sistema GNU/Linux.

In generale, per gestire l'«audio» in qualche modo non è strettamente necessario disporre di componenti speciali. Per esempio, il lettore CD-ROM può essere gestito in modo indipendente per ascoltare i CD musicali, eventualmente anche per estrarre le tracce audio (anche se poi mancherebbe la possibilità di ascoltare quanto estratto senza una scheda audio).

È bene non farsi illusioni sulle possibilità di un sistema GNU/Linux nei confronti della gestione dell'audio. Il comportamento può cambiare notevolmente da una scheda audio all'altra, e non è detto che le cose migliorino quando la qualità dell'hardware è eccezionale. In generale è più probabile ottenere i risultati più buoni con una scheda a 16 bit di quelle gestite dai driver «OSS» (esiste una classificazione apposita nei sorgenti del kernel con questa sigla).

230.1 Kernel per le funzionalità audio

Per includere le funzionalità audio, attraverso dell'hardware apposito, è molto probabile che il kernel debba essere ricompilato. Tuttavia, il vero problema sta nel fatto che esiste una grande quantità di schede audio, per cui si deve scegliere attentamente l'hardware, e per ogni situazione si possono presentare degli imprevisti. *1*

La maggior parte del codice scritto per la gestione delle schede audio è fatto per componenti un po' vecchi, realizzati per il bus ISA, e in generale non prevede le funzionalità Plug & Play. Questo comporta il problema di dover provvedere alla configurazione di tali schede attraverso altri sistemi operativi, oppure per mezzo dei programmi del pacchetto Isapnptools, a cui si accenna nel capitolo 24.

La parte principale del kernel ha un limite nella sua dimensione massima. Dal momento che di solito la gestione dell'audio non dovrebbe essere una funzionalità vitale, è consigliabile utilizzare i moduli per queste cose.

Per prima cosa si deve abilitare la gestione dell'audio, in modo da permettere l'accesso alle altre voci di configurazione del kernel relative a questa gestione.

Nella maggior parte dei casi, la gestione della propria scheda audio rientra nel gruppo OSS (Open Sound System), di conseguenza dovrebbe essere necessario attivare la voce relativa. Successivamente si dovrà selezionare precisamente il tipo di scheda.

Se si intende realizzare un kernel modulare, come viene suggerito qui, occorre poi fare in modo che i moduli relativi vengano caricati opportunamente, soprattutto specificando i parametri necessari a raggiungere correttamente la scheda. A titolo di esempio, supponendo di disporre di una vecchia scheda SoundBlaster a 8 bit, predisposta per utilizzare l'indirizzo di I/O 0x220, il livello di IRQ 5 e il canale DMA 1, si può caricare il modulo relativo con il comando seguente:

modprobe sb irq=5 io=0x220 dma=1

In questo modo vengono caricati automaticamente anche i moduli da cui dipende `sb.o'. Lo si può verificare con `lsmod':

lsmod

Per verificare che la scheda sia stata riconosciuta correttamente, si può «interpellare» il file di dispositivo `/dev/sndstat', ovvero il file virtuale `/proc/sound':

cat /dev/sndstat

cat /proc/sound

OSS/Free:3.8s2++-971130
Load type: Driver loaded as a module
Kernel: Linux dinkel.brot.dg 2.2.5 #4 SMP lun mag 10 15:02:40 CEST 1999 i586
    ...

In seguito, si potrà sistemare meglio la cosa inserendo nel file `/etc/conf.modules' le righe seguenti:

alias sound sb
options sb irq=5 io=0x220 dma=1

La documentazione più aggiornata riferita alle schede audio è contenuta nel pacchetto dei sorgenti del kernel. Precisamente si tratta dei file contenuti nella directory `/usr/src/linux/Documentation/sound/'. È importante leggere i file riferiti alla propria scheda audio, e in generale i file `Introduction' e `README.*'.

230.1.1 File di dispositivo

I file di dispositivo relativi alle funzionalità audio sono descritti nel file `/usr/src/linux/Documentation/devices.txt', assieme a tutti gli altri. Il documento in questione è precisamente Linux allocated devices, mantenuto da Peter H. Anvin. Quello che segue è l'estratto significativo di questo file.

[...]
 13 char	PC speaker
		  0 = /dev/pcmixer	Emulates /dev/mixer
		  1 = /dev/pcsp		Emulates /dev/dsp (8-bit)
		  4 = /dev/pcaudio	Emulates /dev/audio
		  5 = /dev/pcsp16	Emulates /dev/dsp (16-bit)
[...]
 14 char	Sound card
		  0 = /dev/mixer	Mixer control
		  1 = /dev/sequencer	Audio sequencer
		  2 = /dev/midi00	First MIDI port
		  3 = /dev/dsp		Digital audio
		  4 = /dev/audio	Sun-compatible digital audio
		  6 = /dev/sndstat	Sound card status information
		  8 = /dev/sequencer2	Sequencer -- alternate device
		 16 = /dev/mixer1	Second soundcard mixer control
		 17 = /dev/patmgr0	Sequencer patch manager
		 18 = /dev/midi01	Second MIDI port
		 19 = /dev/dsp1		Second soundcard digital audio
		 20 = /dev/audio1	Second soundcard Sun digital audio
		 33 = /dev/patmgr1	Sequencer patch manager
		 34 = /dev/midi02	Third MIDI port
		 50 = /dev/midi03	Fourth MIDI port
[...]

A titolo di esempio, dovendo creare il dispositivo `/dev/audio', si potrebbe usare il comando seguente:

mknod /dev/audio c 14 4

Sono importanti anche i permessi di questi file. In generale dovrebbero appartenere all'utente `root' e al gruppo `audio', oppure `sys' in sua mancanza. Inoltre, per cominciare potrebbero avere i permessi di lettura e scrittura per tutti gli utenti: 0666. *2*

Volendo utilizzare il lettore CD-ROM per ascoltare dei CD audio normali, occorre regolare anche i permessi del dispositivo corrispondente al lettore stesso. In pratica, occorre prendersi cura del dispositivo a cui punta il collegamento simbolico `/dev/cdrom'. Questo dispositivo, dal momento che è riferito a un'unità in sola lettura, potrebbe essere accessibile in lettura e scrittura a qualunque utente (a meno che si voglia controllare per qualche motivo). Per questo, di solito si attribuiscono i permessi 0666.

chmod 0666 /dev/cdrom

Quando l'elaboratore che dispone di scheda audio è collegato a una rete, potrebbero porsi dei problemi di sicurezza riguardo ai permessi per gli utenti comuni sui file di dispositivo di questa. Infatti, un utente che può accedere all'elaboratore, avrebbe la possibilità di attivare la scheda audio e ascoltare attraverso il microfono, ammesso che questo sia collegato. Nello stesso modo potrebbe attivare il canale della linea in ingresso, e così tutte le altre fonti disponibili. Per questa ragione, generalmente, questi file di dispositivo sono sprovvisti del permesso di lettura per gli utenti diversi dal proprietario e dal gruppo di questi file.

230.1.2 # sndconfig

La distribuzione Red Hat ha preparato un programma che facilita la configurazione dei moduli per la gestione delle funzionalità audio, ed eventualmente provvede anche a sistemare la configurazione Plug & Play delle schede ISA. Il programma è molto utile, soprattutto perché è in grado di predisporre il file `/etc/conf.modules' correttamente, e inoltre, ammesso che la scansione Plug & Play si concluda senza incidenti, si ottiene il file di configurazione `/etc/isapnp.conf' corretto (e completo) per la propria scheda audio ISA Plug & Play. *3*

sndconfig [--noprobe] [--noautoconfig]

Se `sndconfig' viene utilizzato senza opzioni, si prepara immediatamente a eseguire una scansione dell'hardware Plug & Play. Eventualmente, questo può portare anche al blocco del sistema operativo; pertanto conviene utilizzare questa verifica solo quando l'elaboratore non sta svolgendo alcuna attività importante (meglio ancora se il livello di esecuzione è quello singolo). È molto importante che non venga avviata questa scansione se non c'è alcuna scheda ISA di tipo Plug & Play.

L'opzione `--noprobe' serve per evitare che venga eseguita una scansione Plug & Play. In questo modo si potrà selezionare in modo guidato il tipo di scheda audio e gli indirizzi necessari a gestirla.

L'opzione `--noautoconfig' serve per evitare che venga configurata automaticamente una scheda audio Plug & Play. In questo modo si lascia all'utilizzatore la scelta dei parametri di configurazione relativi.

La figura 230.1 mostra la maschera di `sndconfig' con la quale si indicano le caratteristiche di una vecchia scheda audio SoundBlaster (configurata attraverso ponticelli), in modo che venga generato il file `/etc/conf.modules' più adatto (in questo caso, il file `/etc/isapnp.conf' non serve perché non si tratta di una scheda Plug & Play).

+---------------| Card Settings |----------------+
|                                                |
| Please adjust the settings below to match the  |
| dip switch settings on your sound card.        |
|                                                |
|  I/O PORT     IRQ     DMA                      |
|                                                |
|   >0x220<      3      >1<                      |
|    0x240      >5<                              |
|                7                               |
|                9                               |
|                                                |
|        +----+               +--------+         |
|        | Ok |               | Cancel |         |
|        +----+               +--------+         |
|                                                |
|                                                |
+------------------------------------------------+

Figura 230.1: Configurazione manuale di una vecchia scheda di cui si conosce la configurazione hardware.

Per comprendere meglio il funzionamento di questo programma, e soprattutto per capire come ci si deve comportare con la configurazione del file `/etc/isapnp.conf', è opportuno dare un'occhiata al capitolo 24, in particolare per quello che riguarda il pacchetto Isapnptools.

230.2 Riferimenti

---------------------------

Appunti Linux 2000.04.12 --- Copyright © 1997-2000 Daniele Giacomini --  daniele @ pluto.linux.it


1.) Purtroppo, il fatto che una scheda audio sia «compatibile» con una qualche altra scheda più conosciuta, non è sufficiente per determinare che queste siano effettivamente equivalenti. In generale, a meno che si stia utilizzando una scheda audio «originale» che risulta individuata perfettamente nell'elenco proposto dal programma di configurazione del kernel, è indispensabile localizzare l'integrato principale e annotare il nome o la sigla che vi appare. Con questa informazione si dovranno leggere i file di documentazione che accompagnano i sorgenti del kernel alla ricerca di notizie precise al riguardo.

2.) In seguito è il caso di ridurre i permessi, in modo di abilitare l'accesso alle funzionalità audio solo ad alcuni utenti.

3.) `sndconfig' dovrebbe funzionare anche nelle distribuzioni diverse dalla Red Hat.


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]