OAK Mozart and Linux HOWTO pctips 29 Agosto 2003 Questo documento spiega come configurare una scheda audio OAK Mozart con GNU/Linux. ______________________________________________________________________ Indice Generale 1. Introduzione 1.1 Che cos'è una OAK Mozart? 1.2 A cosa serve questo HOWTO? 1.3 Caratteristiche tecniche 1.4 Configurazione di prova 2. Installazione della scheda 2.1 Configurazione del kernel 2.2 Test di funzionamento 2.3 Il mixer della scheda 2.3.1 Configurazione semplice di aumix 2.3.2 Configurazione avanzata di aumix 2.4 Configurazione di /etc/modules.conf 3. Conclusione 3.1 Licenza 3.2 Contribuire a questo documento ______________________________________________________________________ 11.. IInnttrroodduuzziioonnee 11..11.. CChhee ccooss''èè uunnaa OOAAKK MMoozzaarrtt?? Una OAK Mozart è una scheda audio (ora non più in produzione) molto diffusa su hardware non molto recente, come 486 e primi Pentium. Questa scheda usa il vecchio bus ISA e non è Plug & Play, quindi richiede una configurazione manuale dei parametri di funzionamento. 11..22.. AA ccoossaa sseerrvvee qquueessttoo HHOOWWTTOO?? Lo scopo di questo HOWTO è guidare il lettore nella configurazione di una di queste schede sul proprio sistema GNU/Linux, operazione che per un utente alle prime armi (e non solo) all'apparenza potrebbe risultare piuttosto difficoltosa. 11..33.. CCaarraatttteerriissttiicchhee tteeccnniicchhee Le schede OAK Mozart sono basate sui chip Opti (ora ESS) 82C931, noti anche come MAD16 (OAK-601), e sono supportate da Linux con degli appositi moduli. Esse hanno un Synthesizer Yamaha YM3812/OPL3, basato sulla tecnologia OPL3 e capace di offrire buone prestazioni. Inoltre il mixer della scheda audio non segue gli standard e per questo bisogna configurare con attenzione gli strumenti che lo gestiscono. 11..44.. CCoonnffiigguurraazziioonnee ddii pprroovvaa Per scrivere questo HOWTO mi sono basato sui risultati ottenuti sul mio 486, una macchina con bus PCI e chipset SiS. Vi sono presenti tre slot ISA e quattro PCI. La scheda Mozart è inserita nel secondo slot ISA, mentre due di quelli PCI sono occupati da una scheda di rete Realtek 8139 10/100 Mbps e da una scheda video S3 VIRGE/DX. La distribuzione utilizzata è Debian 3.0 (Woody) con un kernel ricompilato ad hoc. 22.. IInnssttaallllaazziioonnee ddeellllaa sscchheeddaa 22..11.. CCoonnffiigguurraazziioonnee ddeell kkeerrnneell Usando il kernel 2.2.20-idepci di Debian 3.0 Woody non ho trovato il supporto per la mia OAK Mozart e quindi ho deciso di ricompilarne uno appositamente per il mio sistema. La versione del kernel che ho utilizzato è la 2.4.18, ma qualsiasi altra del ramo 2.4 dovrebbe andare bene. Se avete già un kernel con i moduli necessari, potete tralasciare questa sezione e proseguire. Scaricate i sorgenti del kernel da http://www.kernel.org ed estraeteli in /usr/src con: ______________________________________________________________________ cd /usr/src tar xzvf kernel-2.4.x.tar.gz ______________________________________________________________________ Se l'archivio che avete scaricato è compresso con bzip2, sostituite il flag "z" di tar con "j" (tar xjvf). Il simbolo x presente nel nome del tarball va sostituito con la versione del kernel scaricata (Es. 2.4.18 <==> x=18). Entrate nella directory appena creata e date: ______________________________________________________________________ make mrproper make menuconfig ______________________________________________________________________ Tralasceremo i parametri di configurazione generali (se non sapete come compilare il kernel potete leggere il Kernel-HOWTO) e passeremo direttamente alla sezione dedicata al suono. Per una maggiore flessibilità vi consiglio di abilitare le seguenti opzioni come moduli (se non diversamente specificato): · ISA bus Support (CONFIG_ISA) (Y) · EISA Support (CONFIG_EISA) (Y) · Sound Card Support (CONFIG_SOUND) · OSS Sound Modules (CONFIG_SOUND_OSS) · Adlib Cards (CONFIG_SOUND_ADLIB) · Microsoft Sound System Support (CONFIG_SOUND_MSS) · Opti MAD16 and/or Mozart based cards (CONFIG_SOUND_MAD16) · Support MIDI in older MAD16 based cards (requires SB) (CONFIG_MAD16_OLDCARD) (Y) · Yamaha FM synthesizer (YM3812/OPL-3) support (CONFIG_SOUND_YM3812) Ora salvate la configurazione e date i seguenti comandi per compilare il kernel: ______________________________________________________________________ make dep make bzImage make modules && make modules_install ______________________________________________________________________ Se qualcosa non va, rivedete la configurazione ed individuate la causa dei problemi aiutandovi con i messaggi di errore! Infine, configurate il vostro boot loader e copiate System.map in /boot. Se non ci avete mai provato, leggete il manuale di LILO ed il Kernel- HOWTO. 22..22.. TTeesstt ddii ffuunnzziioonnaammeennttoo Dopo aver compilato ed installato il nuovo kernel, bisogna individuare gli indirizzi che usa la nostra scheda. Dato che essa non è Plug & Play, dovremo determinarli manualmente. Esistono tuttavia alcuni trucchetti che ci permettono di scoprirli facilmente. Se avete altre schede ISA Plug & Play potete usare il programma pnpdump per vedere quali risorse utilizzano, in modo tale da potervi regolare su quelle che usa la scheda audio andando per esclusione. Per quanto riguarda gli IRQ, nel mio sistema la scheda di rete usa quello numero 9 mentre la scheda video quello numero 11. Andate in /lib/modules/2.4.x/kernel/drivers/sound e cominciate a caricare i moduli necessari per il sistema audio di base con: ______________________________________________________________________ insmod sound.o insmod uart401.o insmod sb_lib.o insmod sb.o insmod ad1848.o insmod mad16 irq=7 dma=1 dma16=1 io=0x530 joystick=1 cdtype=0 mpu_io=816 mpu_irq=5 ______________________________________________________________________ L'ultimo comando è quello strettamente legato alla vostra scheda audio: con le varie opzioni elencate, infatti, si specificano le risorse utilizzate da essa. Le opzioni mpu_io e mpu_irq servono nel caso in cui abbiate una scheda audio con una MPU integrata (come la OAK Mozart). Le possibili impostazioni sono: iirrqq IRQ della scheda. Generalmente è quello numero 7 ma talvolta anche il 5. ddmmaa DMA della scheda. Potete scegliere tra 0 e 1. ddmmaa1166 DMA16 della scheda. Potete scegliere tra 0 e 1. iioo Indirizzo di I/O. Generalmente è quello 0x530 ma talvolta anche 0x534. jjooyyssttiicckk Abilitazione della porta Joystick. Potete scegliere tra 0 e 1. ccddttyyppee Porta per lettore CD-ROM. Il valore 0 disabilita la porta CD-ROM integrata; 0x02 abilita il supporto per lettori SONY CDU31A; 0x04 per lettori Mitsumi; 0x06 per lettori Panasonic; 0x08 abilita una porta secondaria IDE; 0x0a abilita una porta primaria IDE. ccddiirrqq IRQ del lettore CD-ROM. Potete scegliere tra 0, 3, 5, 7, 9, 10 e 11. ccddddmmaa DMA del lettore CD-ROM. Potete scegliere tra 0, 5, 6 e 7 per lettori Mitsumi o IDE; tra 0, 1, 2 e 3 per lettori Panasonic o Sony. ooppll44 Versione di OPL. Potete scegliere tra 0 (OPL3) e 1 (OPL4). È preferibile adottare la prima opzione. Infine, abilitiamo il supporto per il Synthesizer Yamaha YM8132/OPL-3 con questo comando: ______________________________________________________________________ insmod opl3.o io=0x388 ______________________________________________________________________ Se non avete ricevuto messaggi di errore, la scheda dovrebbe funzionare correttamente! In caso contrario aiutatevi con i messaggi di errore e cambiate le impostazioni del modulo. Per controllare il corretto funzionamento della scheda avviate esd (Enlightenment Sound Daemon): se sentite la musichetta iniziale tutte le operazioni sono state eseguite alla perfezione. Se non l'avete ancora installato, su Debian potete farlo con: ______________________________________________________________________ apt-get install esd ______________________________________________________________________ 22..33.. IIll mmiixxeerr ddeellllaa sscchheeddaa Come ho accennato in precedenza, questa scheda usa un sistema di indirizzamento per il mixer che necessita di una configurazione particolare. Per farlo ci sono due possibili alternative, le analizzeremo entrambe. 22..33..11.. CCoonnffiigguurraazziioonnee sseemmpplliiccee ddii aauummiixx Nel primo caso è possibile configurare il programma aumix in modo molto semplice eseguendo: ______________________________________________________________________ aumix -w 15 -p 20 -m 0 -1 0 -2 0 -3 0 -i 0 ______________________________________________________________________ Se ottenete degli errori, provate con il secondo metodo. Nel caso in cui non abbiate aumix nel sistema, potete installarlo su Debian eseguendo: ______________________________________________________________________ apt-get install aumix ______________________________________________________________________ 22..33..22.. CCoonnffiigguurraazziioonnee aavvaannzzaattaa ddii aauummiixx Il secondo metodo consiste nel compilare questo sorgente tratto dalla documentazione del kernel (Documentation/sound/Opti): ______________________________________________________________________ #include #include #include static char *mixer_names[SOUND_MIXER_NRDEVICES] = SOUND_DEVICE_LABELS; int main(int argc, char **argv) { int val, from, to; int i, fd; fd = open("/dev/mixer", O_RDWR); if(fd < 0) { perror("/dev/mixer"); return 1; } for(i = 2; i < argc; i += 2) { from = atoi(argv[i-1]); to = atoi(argv[i]); if(to == SOUND_MIXER_NONE) fprintf(stderr, "%s: turning off mixer %s\n", argv[0], mixer_names[to]); else fprintf(stderr, "%s: rerouting mixer %s to %s\n", argv[0], mixer_names[from], mixer_names[to]); val = from << 8 | to; if(ioctl(fd, SOUND_MIXER_PRIVATE2, &val)) { perror("AD1848 mixer reroute"); return 1; } } return 0; } ______________________________________________________________________ Salvate il sorgente come ad1848_mixer_reroute.c e compilatelo con: ______________________________________________________________________ gcc -o /sbin/ad1848_mixer_reroute ad1848_mixer_reroute.c ______________________________________________________________________ Una volta generato l'eseguibile, date: ______________________________________________________________________ ad1848_mixer_reroute 14 8 15 3 16 6 ______________________________________________________________________ Se il programma non dà errori, il vostro mixer è stato configurato correttamente! 22..44.. CCoonnffiigguurraazziioonnee ddii //eettcc//mmoodduulleess..ccoonnff Il file /etc/modules.conf contiene diverse informazioni usate dal programma modprobe per caricare i moduli. Utilizzando questo programma basterà dare un solo comando per configurare la vostra scheda audio. Aprite con il vostro editor di testo preferito il file /etc/modules.conf ed aggiungete alla fine del file queste righe: ______________________________________________________________________ ### Inizio sezione audio ### alias char-major-14 mad16 alias mixer0 mad16 alias audio0 mad16 alias synth0 mad16 options adlib_card io=0x388 options sb mad16=1 options mad16 irq=7 dma=1 dma16=1 io=0x530 joystick=1 cdtype=0 mpu_io=816 mpu_irq=5 && /usr/bin/aumix -w 15 -p 20 -m 0 -1 0 -2 0 -3 0 -i 0 options opl3 io=0x388 ### Fine sezione audio ### ______________________________________________________________________ Sostituite eventualmente i parametri originali con quelli del vostro sistema. Nel caso in cui abbiate optato per la configurazione avanzata di aumix, eliminate il contenuto della penultima riga a partire da && e scrivete in una nuova riga: ______________________________________________________________________ post-install mad16 /sbin/ad1848_mixer_reroute 14 8 15 3 16 6 ______________________________________________________________________ In questo caso, il vostro /etc/modules.conf dovrebbe essere simile all'esempio di codice riportato qui di seguito. ______________________________________________________________________ ### Inizio sezione audio ### alias char-major-14 mad16 alias mixer0 mad16 alias audio0 mad16 alias synth0 mad16 options adlib_card io=0x388 options sb mad16=1 options mad16 irq=7 dma=1 dma16=1 io=0x530 joystick=1 cdtype=0 mpu_io=816 mpu_irq=5 post-install mad16 /sbin/ad1848_mixer_reroute 14 8 15 3 16 6 options opl3 io=0x388 ### Fine sezione audio ### ______________________________________________________________________ Ora salvate il file ed uscite dall'editor di testo, quindi riavviate il sistema. Una volta fatto il login come root, date: ______________________________________________________________________ modprobe mad16 modprobe opl3 ______________________________________________________________________ Ora la scheda audio dovrebbe funzionare correttamente. Potete automatizzare il caricamento dei moduli all'avvio del sistema eseguendo: ______________________________________________________________________ echo "modprobe mad16 && modprobe opl3" >> /etc/rc.d/rc.local ______________________________________________________________________ 33.. CCoonncclluussiioonnee 33..11.. LLiicceennzzaa Copyright (C) 2003 pctips This manual is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. A copy of the GNU General Public License is available on the World Wide Web at http://www.fsf.org/copyleft/gpl.html. You can also obtain it by writing to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. _Q_u_e_s_t_a _è _l_a _t_r_a_d_u_z_i_o_n_e _i_t_a_l_i_a_n_a _d_e_l_l_a _l_i_c_e_n_z_a_: _e_s_s_a _è _p_r_e_s_e_n_t_e _s_o_l_o _a _s_c_o_p_o _d_i_m_o_s_t_r_a_t_i_v_o _p_o_i_c_h_é _l_a _v_e_r_s_i_o_n_e _i_n_g_l_e_s_e _è _l_'_u_n_i_c_a _a_v_e_n_t_e _v_a_l_o_r_e _l_e_g_a_l_e_. Questo manuale è software libero; è lecito redistribuirlo o modificarlo secondo i termini della Licenza Pubblica Generica GNU come è pubblicata dalla Free Software Foundation; o la versione 2 della licenza o (a propria scelta) una versione successiva. È distribuito nella speranza che che sia utile, ma SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di COMMERCIABILITÀ o APPLICABILITÀ PER UN PARTICOLARE SCOPO. Si veda la GNU General Public License per avere maggiori dettagli. Una copia della Licenza Pubblica Generica GNU è disponibile sul World Wide Web su http://www.fsf.org/copyleft/gpl.html. La si può ottenere anche scrivendo alla Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 33..22.. CCoonnttrriibbuuiirree aa qquueessttoo ddooccuummeennttoo Chiunque può contribuire alla stesura ed al mantenimento di questo documento. Per suggerimenti, commenti o critiche potete scrivermi all'indirizzo di posta elettronica pctips@hardwaretips.com.