Le 08/09/1997 par Jean-Michel Claude
Bonjour Linuxien(ne),
Il y a quelques temps, j'avais remplacé ma petite carte Sound Blaster 16 contre une carte Sound Blaster 32 AWE -PnP-.
Bonjour Linuxien(ne),
Il y a quelques temps, j'avais remplacé ma petite carte Sound Blaster 16 contre une carte Sound Blaster 32 AWE -PnP-. Erreur ! En tous les cas, à l'époque le Plug and Pray m'en avait fait voir de toutes les couleurs. Même sous défenestration 95. Mais comme je voulais absolument bénéficier des caractéristiques sonores de cette carte tout de même pas si mal (bon d'accord, y'a mieux :°) je vous avais sollicité sur ce même niouze groupe pour me donner quelques tuyaux. Avec l'aide de plusieurs d'entres vous, et après plusieurs heures de prise de tête, je suis arrivé au résultat tant attendu. Je parviens maintenant à :
écouter mes CD audio préférés ;
jouer des fichiers .au et autres .wav ;
jouer des fichiers MIDI avec la Wave Table.
L'objectif de cette nouvelle est de vous faire bénéficier de mon expérience. Je n'ai pas la prétention de récupérer la paternité des solutions proposées ici. Celles-ci m'ont été fournis par des Linuxiens avisés (j'en profite pour remercier publiquement Kevin L. McWhirter, Jacques Janville, Frédéric Maumy, Grégory Borysiak, Marc De Preter, Jason Ahrens, François Rouaix, Bernard Perrot, Fabrice Bellet, Matt Kirsch, Philippe Caillaud, Philippe Adam --- l'ordre des linuxiens sus-cités n'a évidemment aucune espèce d'importance). Je demande pardon à ceux que j'aurais oublié :-)
Si certains n'ont pas encore lu les nouvelles parues sur le sujet, j'espère que celui-ci vous sera utile. C'est d'ailleurs mon seul objectif : vous aidez à configurer ce qui, il y a quelques temps, a été pour moi une véritable galère.
Attachez vos ceintures... c'est parti !
Et bien, je ne vous apprendrais rien sur le sujet. Le PnP n'est pas vraiment au point (sur PC... parce que sur Mac c'est tout de même autre chose --- mais je ne souhaite pas attiser une polémique, là n'est pas le sujet). En tout cas, il n'est pas rare de tomber sur une configuration matériel qui pose problème. Évidemment, je n'ai pas fait exception à la règle :°(
PnP : Plug-n-Plante, Plug-n-Pray, mais sûrement pas plug-n-play sans être obligé de mettre les mains dans le cambouis. Même sous défenestration 95, ma nouvelle acquisition ne voulait pas être reconnue ! Je ne vous ferais pas l'injure de vérifier que vous avez activé le mode PnP dans le setup de votre BIOS. Si, si j'avais regardé !
J'ai fini par trouver des IRQ, DMA et autres joyeusetés à grands coups de configuration manuelle (sous Win95, intêret du PnP ?). J'ai immédiatement noté fébrilement toutes les informations que Fenêtre 95 a bien voulu me communiquer sur la configuration de ma carte sonore.
Pour réussir à entendre quelques sons mélodieux sortir de ses haut-parleurs en sollicitant la Wave Table, plusieurs solutions s'offrent à vous :
soit vous broutez votre machine sous MS-DOS afin d'initialiser votre carte sonore avec les drivers adéquats, puis vous lancez Linux à l'aide de LoadLin ;
soit vous intégrez au noyau un patch pour gérer directement les cartes PnP ;
soit vous utilisez un package qui offre le support des cartes PnP en ajoutant un petit patch au niveau du support sonore.
La première solution, quoique très efficace, n'est pas très élégeante. Surtout pour les pures Linuxiens que nous souhaitons tous devenir ;-). Car elle contraint à brouter sous DOS (loin de moi cette idée --- vade retro satanas ;-)
La seconde est attrayante puisqu'elle permet d'intégrer le PnP au sein du noyau. C'est d'ailleurs cette solution que j'avais choisie dans un premier temps... Malheureusement, et pour des raisons encore inconnues, je ne suis pas parvenu à atteindre mon objectif en exploitant cette solution bien que le noyau une fois patché détecta bien ma carte...
Pour ceux qui veulent s'y frotter voici toutefois une URL intéressante : http://www.lpsg.demon.co.uk/pnp-linux.html.
Je me suis donc replié vers la troisième et dernière solution. Attention : pour ce faire, j'ai dû récupérer une version du noyau sans patch PnP (j'ai pris la version 2.0.30 depuis mon petit site ftp chéri --- ftp://ftp.ibp.fr --- pour ne pas le nommer). En effet, en patchant mon ancien noyau, je n'avais pas l'intention de me palucher à la main les sources qui avaient été affectés par l'installation du patch PnP !
Vous n'étes évidemment pas obligé de prendre la toute dernière version stable du noyau pour réaliser votre mission (Bonjour Mr Phelps). Mais comme je devais avoir un noyau épuré sous la main, tant qu'à faire, avoir le dernier noyau stable ne mange pas de pain. Pour réaliser sereinement cette opération, vous devez tout de même avoir une version du noyau supérieure ou égale à 2.0.0.
À ce titre une petite remarque : la configuration de la partie sonore a changé entre la version 2.0.29 et la 2.0.30. Je vous avertis au cas où, car par inadvertance, j'avais répondu (trop vite) 'Y' à une question du genre: "Would you like to keep your old sound configuration ?". Et évidemment, je n'ai pas tardé à rencontrer quelques soucis supplémentaires. Moralité, répondez 'n' (no/Non) et répondez pas-à-pas aux questions posées ;-)
D'abord, récupérer les packages indispensables pour la bonne marche de l'exercice. Il faut pour cela se rendre sur le site suivant : http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/index.html
Et télécharger :
le driver SB 32 AWE v0.3.3e (awedrv) http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/awedrv-0.3.3e.tar.gz
le player de fichier MIDI (awemidi) http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/awemidi-0.3.3f.tar.gz
le chargeur d'echantillons sonores (awesfx) pour la Wave Table http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/awesfx-0.4.0-pre4.tgz
le driver PnP développé par Tom Lees http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/isapnptools-1.9.tgz
Bien. Il faut maintenant compiler et installer
awedrv
. Cela ne devrait pas poser de problème
particulier. En tous les cas, pour ce qui me concerne, cela s'est
passé comme un anti-spam au postmaster ;-)
Il faut recompiler son noyau avec le sound support en module. C'est indispensable sinon la manip est vouée à l'échec.
Si votre noyau est une version inférieure à la 2.0.30,
vous devez au moins renseigner les champs suivants dans le
fichier .config
se trouvant normalement sous
/usr/src/linux/
.
# # Automatically generated make config: don't edit # # # Loadable module support # CONFIG_MODULES=y # # Sound # CONFIG_SOUND=m # CONFIG_PAS is not set CONFIG_SB=y # CONFIG_ADLIB is not set # CONFIG_GUS is not set # CONFIG_MPU401 is not set # CONFIG_UART6850 is not set # CONFIG_PSS is not set # CONFIG_GUS16 is not set # CONFIG_GUSMAX is not set # CONFIG_MSS is not set # CONFIG_SSCAPE is not set # CONFIG_TRIX is not set # CONFIG_MAD16 is not set # CONFIG_CS4232 is not set # CONFIG_MAUI is not set CONFIG_AUDIO=y CONFIG_MIDI=y CONFIG_YM3812=y SBC_BASE=220 SBC_IRQ=5 SBC_DMA=1 SB_DMA2=5 SB_MPU_BASE=330 SB_MPU_IRQ=-1 DSP_BUFFSIZE=65536 CONFIG_LOWLEVEL_SOUND=y # CONFIG_ACI_MIXER is not set CONFIG_AWE32_SYNTH=y
Il faut maintenant compiler, installer et configurer le driver PnP (isapnptools)
Attention : l'utilisation de ce package est incompatible avec le futur support PnP qui sera intégré dans la future release stable (2.2.0 ?)
Parfait. Si vous en étes déjà arrivé là, je ne serais trop vous recommandez de vous diriger vers votre réfrigérateur. Vous avez bien mérité une boisson fraîche ! ;-)
Un exemple de fichier /etc/isapnp.conf
.
Remarque : ce fichier est initialement généré par
pnpdump. Il ne reste plus qu'à décommenter certaines lignes
en fonction des IRQs, DMAs et entre joyeusetés soutirés à
WinDaube.
# $Id: pnpdump.c,v 1.8 1997/01/14 21:05:35 fox Exp $ # This is free software, see the sources for details. # This software has NO WARRANTY, use at your OWN RISK # # For details of this file format, see isapnp.conf(5) # # Compiler flags: -DREALTIME -DNEEDSETSCHEDULER # # Trying port address 0203 # Board 1 has serial identifier 09 10 0e 57 69 9c 00 8c 0e # (DEBUG) (READPORT 0x0203) (ISOLATE) (IDENTIFY *) # Card 1: (serial identifier 09 10 0e 57 69 9c 00 8c 0e) # CTL009c Serial No 269375337 [checksum 09] # Version 1.0, Vendor version 1.2 # ANSI string -->Creative SB32 PnP<-- # # Logical device id CTL0041 # # Edit the entries below to uncomment out the configuration required. # Note that only the first value of any range is given, this may be changed if required # Don't forget to uncomment the activate (ACT Y) when happy (CONFIGURE CTL009c/269375337 (LD 0 # ANSI string -->Audio<-- # Multiple choice time, choose one only ! # Start dependent functions: priority preferred # IRQ 5. # High true, edge sensitive interrupt (by default) (INT 0 (IRQ 5 (MODE +E))) # First DMA channel 1. # 8 bit DMA only # Logical device is not a bus master # DMA may execute in count by byte mode # DMA may not execute in count by word mode # DMA channel speed in compatible mode (DMA 0 (CHANNEL 1)) # Next DMA channel 5. # 16 bit DMA only # Logical device is not a bus master # DMA may not execute in count by byte mode # DMA may execute in count by word mode # DMA channel speed in compatible mode (DMA 1 (CHANNEL 5)) # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0220 # Maximum IO base address 0x0220 # IO base alignment 1 bytes # Number of IO addresses required: 16 (IO 0 (BASE 0x0220)) # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0330 # Maximum IO base address 0x0330 # IO base alignment 1 bytes # Number of IO addresses required: 2 (IO 1 (BASE 0x0330)) # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0388 # Maximum IO base address 0x0388 # IO base alignment 1 bytes # Number of IO addresses required: 4 (IO 2 (BASE 0x0388)) # End dependent functions (ACT Y) )) # # Logical device id CTL7002 # # Edit the entries below to uncomment out the configuration required. # Note that only the first value of any range is given, this may be changed if required # Don't forget to uncomment the activate (ACT Y) when happy (CONFIGURE CTL009c/269375337 (LD 1 # ANSI string -->Game<-- # Multiple choice time, choose one only ! # End dependent functions (ACT Y) )) # # Logical device id CTL0021 # # Edit the entries below to uncomment out the configuration required. # Note that only the first value of any range is given, this may be changed if required # Don't forget to uncomment the activate (ACT Y) when happy (CONFIGURE CTL009c/269375337 (LD 2 # ANSI string -->WaveTable<-- # Multiple choice time, choose one only ! # Start dependent functions: priority preferred # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0620 # Maximum IO base address 0x0620 # IO base alignment 1 bytes # Number of IO addresses required: 4 (IO 0 (BASE 0x0620)) (IO 1 (BASE 0x0a20)) (IO 2 (BASE 0x0e20)) # End dependent functions (ACT Y) )) # # Logical device id CTL2011 # # Edit the entries below to uncomment out the configuration required. # Note that only the first value of any range is given, this may be changed if required # Don't forget to uncomment the activate (ACT Y) when happy (CONFIGURE CTL009c/269375337 (LD 3 # Compatible device id PNP0600 # ANSI string -->IDE<-- # Multiple choice time, choose one only ! # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x0168 # Maximum IO base address 0x0168 # IO base alignment 1 bytes # Number of IO addresses required: 8 (IO 0 (BASE 0x0168)) # Logical device decodes 16 bit IO address lines # Minimum IO base address 0x036e # Maximum IO base address 0x036e # IO base alignment 1 bytes # Number of IO addresses required: 2 (IO 1 (BASE 0x036e)) (ACT Y) )) # End tag... Checksum 0x00 (OK)
J'ai enfin modifié mon rc.local
pour lancer l'ensemble dans l'ordre au moment du
boot :
# initialize PnP devices if [ -x /sbin/isapnp ]; then echo "Configuring PnP devices" /sbin/isapnp /etc/isapnp.conf fi echo "Loading sound module" /sbin/modprobe -a sound echo "Loading Sound Bank" /usr/local/bin/sfxload -i /dos1/windows/system/synthgm.sbk
Après avoir rebrouter la machine avec toutes ces manips effectuées, il ne vous reste plus qu'à vérifier si tout est en ordre. Pour cela, lancer la commande :
$ cat /dev/sndstat Sound Driver:3.5.4-960630 (Wed Mar 19 22:20:07 MET 1997 root, Linux tartanpion 2.0.29 #8 Tue Mar 18 22:38:10 MET 1997 i486) Kernel: Linux tartanpion 2.0.29 #10 Wed Mar 19 22:44:04 MET 1997 i486 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 7 drq 1,5 SB MPU-401 at 0x330 irq 7 drq 0 OPL-2/OPL-3 FM at 0x388 drq 0 Audio devices: 0: Sound Blaster 16 (4.12) Synth devices: 0: Yamaha OPL-3 1: AWE32 Driver v0.3.3e (DRAM 512k) Midi devices: 0: Sound Blaster 16 Timers: 0: System clock Mixers: 0: Sound Blaster 1: AWE32 Equalizer
Ça roule ma poule !
Enfin, pour conclure quelques softs sympa pour tirer parti de la Wave table :
fXPlayMidi disponible sous http://www.crl.com/~klmcw/soft.html : XPlaymidi avec son interface en Tcl/Tk magnifique ;
le mixer : xmmix ;
le Wav player : wavplay/wavrec
Voilà. J'espère que ces quelques conseils en aideront quelques uns.
Pour le guide, à votre bon coeur m'sieur dame !