La configuration du support son sous Linux doit se faire selon les étapes suivantes :
Dans la suite sont explicitées toutes ces étapes.
Suivez les instructions du fabriquant pour l'installation matérielle ou confiez-la à votre revendeur.
Les vieilles cartes-son ont souvent des petits interrupteurs appelés cavaliers ("switch" ou "jumper") permettant de configurer les adresses IRQ (Interrupt ReQuest = requête d'interruption ), DMA (Direct Memory Access = bus de transfert direct des données), les canaux, etc. Si vous n'êtes pas certain, utilisez les réglages d'usine. Essayez d'éviter les conflits avec d'autres prériphériques (comme les cartes ethernet, les cartes SCSI, les ports série et parallèle).
Normalement, vous devrez utiliser les mêmes adresses d'E/S, d'IRQ et de DMA que celles fonctionnant sous DOS. Cependant, dans certains cas (en particulier avec les cartes PnP) vous aurez peut-être besoin d'un réglage particulier pour que cela fonctionne avec Linux. Il faudra peut-être faire quelques essais.
Quand vous avez installé Linux, vous avez certainement utilisé un noyau précompilé. Généralement, ces noyaux ne fournissent pas de support son. Il vous faut donc recompiler votre noyau en fonction des périphériques que vous possédez. Vous devez également recompiler le noyau lorsque vous passez à une de ses nouvelles versions ou afin de libérer de la mémoire en réduisant sa taille (ndt : par l'utilisation des modules).
Consultez le Linux Kernel HOWTO pour recompiler le noyau (ndt : c'est très simple à faire). Je ne vais parler ici que des points qui sont spécifiques aux cartes son.
Si vous n'avez jamais configuré le noyau pour le support son, il peut être utile de lire tous les fichiers Readme fournis avec les pilotes son du noyau, et en paticulier les informations spécifiques à votre carte-son. La documentation suivant peut-être trouvée dans le répertoire des pilotes son du noyau Linux. Il se trouve en général dans /usr/src/linux/drivers/sound :
CHANGELOG - description des modifications pour chaque version COPYING - droit et restrictions de duplication Readme - informations récentes et importantes Readme.aedsp16 - à propos de la carte Audio Excel 16 DSP Readme.cards - précisions sur la configuration de cartes spécifiques Readme.linux - précisions sur l'installation de pilotes son non inclus dans le noyau Readme.modules - comment compiler le pilote en un module chargeable Readme.v30 - nouvelles possibilitées dans la version 3.0 du pilote son experimental.txt - à propos des caractéristiques expérimentales
Suivez tout d'abord la procédure habituelle pour compiler le noyau. Il existe actuellement trois interfaces disponibles pour la procédure de configuration. Une interface graphique sous X11 peut être lancée par "make xconfig". Une interface à base de menus texte est disponible en tapant "make menuconfig". Enfin, la méthode originelle, en utilisant "make config" propose une interface uniquement à base de texte.
Il faut faire particulièrement attention en utilisant "make xconfig" ou "make menuconfig". En effet, les choix par défaut sont toujours positionnés sur "No", ce qui n'est pas correct dans tous les cas. En particulier, l'option "/dev/dsp and /dev/audio support" (CONFIG_AUDIO) doit habituellement être validée.
Dans ce document, je suppose que vous utilisez la procédure traditionnelle en mode texte : "make config". Néanmoins, la procédure est identique dans les autres cas.
Il y a également deux autres manières de configurer le son. La première est l'"ancienne" façon (la seule disponible pour les noyaux 2.0.0). Elle utilise un programme de configuration séparé qui fait partie du pilote son. Cette méthode fonctionne pour la plupart des cartes, exceptées quelques unes qui nécessitent des pilotes additionnels "bas niveau" (miroSOUND, AWE32, et AEDSP16).
La seconde méthode (la "nouvelle") est mieux intégrée à la configuration par menus texte utilisée pour le reste du noyau. Elle ne fonctionne pas pour les cartes qui ont besoin d'un fichier constructeur téléchargeable. Ceci concerne les cartes PSS, SM Wave, AudioTrix Pro et TurtleBeach Tropez/Maui. Avec ces cartes, on utilisera la vieille procédure.
La "nouvelle" méthode est toujours utilisée en faisant "make xconfig". Quand on utilise "make menuconfig", on peut choisir entre les deux méthodes. En faisant "make config", vous aurez la vieille méthode par défaut. Mais si vous avez déjà utilisé la nouvelle méthode, ce sera celle utilisée par "make config" ! Vous pouvez resélectionner l'ancienne en lançant "make menuconfig" et en la sélectionnant.
La méthode recommendée est l'utilisation de "make menuconfig" avec l'ancienne méthode de configuration. Beaucoup de problèmes de configuration du son proviennent (au moins en partie) de l'utilisation de la nouvelle méthode.
Il est également possible de compiler le pilote de son en tant que module chargeable. Je vous recommande de le compiler initialement en statique, dans le noyau. Une fois que cela fonctionne et que vous l'aurez testé, vous pourrez essayer de le compiler en module.
Quand vous lancez make config
, validez le support son en
répondant "y" à la question :
Sound card support (CONFIG_SOUND) [M/n/y/?]
A la fin des questions de configuration, un programme sera compilé et exécuté et vous demandera alors quelles sont les options pour votre carte son. Attention en répondant à ces questions, car une réponse erronée pour une option peut empêcher d'autres questions suivantes d'être posées. Par exemple, ne répondez "yes" à la première question (PAS 16) que si vous n'avez réellement pas de carte PAS 16. De même, n'activez pas plus d'options que celles dont vous avez réellement besoin car cela consomme de la mémoire ! Certains pilotes (comme celui du MPU-401) peuvent également entrer en conflit avec votre controleur SCSI et empêcher le noyau de "booter".
Voici une liste de toutes les options de configuration. Répondez "y" (oui) ou "n" (non) à chaque question. La réponse par défaut est affichée en lettre majuscule telle que : "[Y/n/?]" signifie "y" par défaut et vice versa. Pour valider la valeur par défaut, appuyez juste sur Enter, tout en sachant que cette valeur par défaut n'est pas forcément correcte.
Si vous rentrez "?", vous aurez un court message d'explication sur l'option présente.
Notez également que toutes les options ne sont pas demandées. Le programme de configuration désactive certaines questions en fonction des choix précedemment validés. Il peut également sélectionner automatiquement certaines options.
Si vous avez précedemment compilé le noyau pour le support son, la configuration précédente a pu être sauvegardé. Si vous souhaitez utiliser cette ancienne configuration, alors entrez "y". Si vous essayez une configuration différente ou si vous utilisez une nouvelle version du noyau, répondez "n" pour commencer la configuration.
Répondez "y" uniquement si vous possédez une Pro Audio Spectrum 16, une ProAudio Studio 16 ou une Logitech SoundMan 16. Ne répondez pas "y" si vous avez une autre carte de chez Media Vision ou Logitech car elle ne sera pas compatible PAS16.
Répondez "y" si vous avez une carte SoundBlaster de chez Creative Labs, ou une carte compatible à 100% au niveau matériel (comme la Thunderboard ou la SM Games). Si votre carte est dans la liste des cartes supportées, consultez le fichier Readme.cards des cartes spécifiques avant de répondre à cette question. Pour une carte inconnue, essayez "y" si cette carte se dit être compatible SoundBlaster.
Répondez "y" si vous avez une GUS ou une GUS MAX. Répondez "n" si vous n'avez pas de GUS car ce pilote utilise beaucoup de mémoire.
Attention avec cette question. L'interface MPU-401 est supportée par presque toutes les cartes son. Néanmoins, quelques cartes supportées possèdent leur propre pilote MPU-401. Si vous validez l'option dans ce cas là, vous aurez un conflit. La validation de cette option sur un système qui ne possède pas d'interface MPU-401 peut causer des disfonctionnements. Si votre carte est normalement supportée, consultez quand même les instructions spécifiques la concernant dans le fichier Readme.cards. Il est plus sûr d'entrer "y" si vous possédez une véritable carte avec interface MPU-401 MIDI.
Il est sûr de répondre "n" à cette question dans tous les cas. L'interface 6850 UART n'est que très rarement utilisée.
Répondez "y" si vous possédez une carte Orchid SW32, ou Cardinal DSP16 ou encore d'autres cartes basées sur les puces PSS (codec AD1848 + puce DSP ADSP-2115 + puce Echo ESC614 ASIC).
v
Répondez "y" si vous avez installé la carte-fille d'échantillonage 16 bits sur votre GUS. Répondez non si vous avez une GUS MAX. Cette option désactive le support GUS MAX.
Répondez "y" uniquement si vous avez une GUS MAX.
Faite encore attention avant de répondre "y" à cette question. Il est plus sûr de répondre "y" si vous possédez la carte Windows Sound System originelle fabriquée par Petitmou (microsoft) ou l'Aztech SG 16 Pro / NX 16 Pro. Vous pouvez aussi répondre "y" au cas où votre carte n'ait pas été proposée plus haut. Pour les cartes ayant le support natif pour VoxWare, consultez les instructions spécifiques dans le fichier Readme.cards. Certains pilotes possèdent leur propre support MSS et l'activation de cette option dans ce cas causera un conflit.
Répondez "y" si vous avez une carte son basée sur les puces Ensoniq SoundScape. De telles cartes sont fabriquées, au moins chez Ensoniq, Spea et Reveal (ce dernier fabrique également d'autres types de cartes).
Répondez "y" si vous avez une AudioTriX Pro.
Répondez "y" ici si votre carte possède une puce d'interface Mozart (OAK OTI-601) ou MAD16 (OPTi 82C928 ou 82C929). Ces circuits sont assez répandus, il est donc possible qu'un grand nombre de cartes "anonymes" en possèdent. De plus, la puce MAD16 est utilisée dans des cartes fabriquées par des constructeur connus comme Turle Beach (Tropez), Reveal (quelques modèles) et Diamond (les plus récentes).
Répondez "y" si vous avez une carte basée sur les circuits Crystal CS4232.
Répondez "y" ici si vous possédez l'une de ces cartes.
Activez cette option si votre carte est une SoundBlaster Pro ou une SoundBlaster 16. Idem si vous avez une carte clone de SoundBlaster Pro. On peut économiser un peu de mémoire ici en répondant "n" mais l'alternative la plus sûre est de répondre "y".
Validez si vou avez une SoundBlaster 16 (dont l'AWE 32).
Répondez "y" si vous avez une Audio Excel DSP 16. Consultez le fichier Readme.aedsp16 pour de plus amples informations.
Le programme de configuration pose alors plusieurs questions à propos d'options de plus haut niveau. Il est recommandé de répondre "y" à chacune de ces questions, et "n" uniquement si vous savez que vous n'aurez pas besoin de cette option.
Répondre "n" désactive /dev/dsp et /dev/audio, les périphériques de conversion A/D et D/A. Répondez "y".
Répondre "n" désactive les périphériques associés à /dev/midixx ainsi que les accés aux ports MIDI utilisant /dev/sequencer et /dev/music. Cette option affecte également tous les périphériques compatibles MPU-401 et/ou General MIDI.
Répondre "y" ici.
Répondre "n" désactive /dev/sequencer et /dev/music.
Répondez "y" si vous possédez une carte son Sound Galaxy NX Pro et que vous voulez utiliser ses fonctions étendues de mixage.
Répondez "y" si vous avez une carte son MV Jazz 16.
Répondez "y" si vous possédez une carte Logitech SoundMan Games.
Après toutes ces questions, le programme de configuration vous questionne sur la configuration spécifique de la carte. Habituellement, juste quelques adresses d'E/S, d'IRQ et de DMA sont demandées. Pour certaines cartes, le programme demande quels fichiers doivent être utilisés durant l'initialisation de la carte. Ceci est vrai pour les cartes qui possèdent une puce DSP ou un microprocesseur qui doit être initialisé en chargeant un petit programme (microcode). Dans certains cas, ce code est écrit dans un fichier .h par le programme de configuration et est alors integré au pilote pendant sa compilation. Encore une fois, lisez dans le fichier d'information Readme.cards ce qui concerne votre type de carte.
A la fin, il vous sera demandé:
The sound driver is now configured.
Save copy of this configuration to /etc/soundconf [Y/n/?]
Normalement, vous devriez entrer "y" ce qui vous permettra éventuellement de conserver vos options de configuration pour votre pilote son dans une recompilation ultèrieure du noyau Linux.
Si vous mettez à jour votre vieux pilote son, soyez certain que les fichiers /usr/include/sys/soundcard.h et /usr/include/sys/ultrasound.h sont des liens symboliques sur les fichiers correspondant dans /usr/include/linux, et qu'ils contiennent respectivement uniquement les lignes #include <linux/soundcard.h> et #include <linux/ultrasound.h>.
Vous pouvez maintenant recompiler et installer le nouveau noyau.
Pour opérer proprement, des entrées des fichiers de périphériques doivent être crées pour vos périphériques son. Normalement, ils sont créés automatiquement lors de l'installation de Linux. Une vérification rapide peut être effectuée en utilisant la commande ci-dessous. Si vous obtenez la même chose (excepté pour la date...) alors les fichiers de périphériques sont certainement presque bons...
% ls -l /dev/sndstat
crw-rw-rw- 1 root root 14, 6 Apr 25 1995 /dev/sndstat
Notez que le fait d'avoir des fichiers de périphériques corrects ne garantit rien en tant que tel... Le pilote du noyau doit également être chargé ou compilé avant que les périphériques puissent fonctionner.
Si vous pensez que les fichiers de périphériques ne sont
pas bons, vous pouvez les recréer en utilisant le petit script shell
(à éxécuter en tant qu'utilisateur root) que vous trouverez à la fin du
fichier Readme.linux dans le répertoire
/usr/src/linux/drivers/sound disponible pour l'utilisateur
root
. Autrement, beaucoup de distributions Linux incluent un
script /dev/MAKEDEV uilisable à ces fins...
Si vous utilisez le pilote son du haut-parleur PC, lisez la documentation qui va avec ce paquetage pour déterminer quels fichiers doivent être créés.
Vous devriez maintenant être prêt à `rebooter' (redémarrer) sur votre nouveau noyau et tester les pilotes de son. Suivez la procédure habituelle pour installer et rebooter sur le nouveau noyau (gardez l'ancien dans un petit coin au cas où il y aurait un un problème !).
Pendant le redémarrage, essayez de vérifier quelques
messages d'information tels que ceux qui suivent (s'ils défilent
trop vite, vous pourrez les retrouver avec la commande 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
Cela devrait correspondre avec votre carte son et votre configuration de cavaliers (s'il y en a).
Notez que ces messages ne sont pas affichés quand on utilise le module chargeable du pilote son (à moins que vous ne l'ayez spécifié avec : "insmod sound trace_init=1).
Quand le pilote son est attaché ("linké") au noyau les messages "Sound initialization started" et "Sound initialization complete" devraient être affichés. S'ils ne le sont pas, cela signifie qu'il n'y a pas de pilote son dans le noyau. Dans ce cas, vérifiez que vous avez installé le bon noyau...
Si rien ne s'affiche entre les lignes "Sound initialization started" et "Sound initialization complete", cela signifie soit que vous n'avez pas installé le bon pilote, soit que le port d'E/S est incorrect ou que vous avez une carte PnP qui n'a pas été configurée.
Le pilote peut également afficher des messages d'erreurs ou d'avertissement ("warnings") pendant le redémarrage. Regardez bien tout ça quand vous rebootez pour la première fois après avoir configuré le pilote son.
Ensuite, vous devriez vérifier le fichier de périphérique /dev/sndstat. La lecture du fichier d'état du pilote son devrait vous fournir des informations supplémentaires sur la façon dont a été initalisée la carte son. Vous devriez obtenir quelque chose dans ce style :
% 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
Cette dernière commande peut générer des messages d'erreur. "No such file or directory" signifie que vous devez créer les fichiers de périphériques (voir la section 4.3). "No such device" vous indique que le pilote son n'est pas chargé ou lié au noyau. Voyez la section 4.2 pour corriger cela.
Si des lignes apparaissent entre parenthèses dans la partie "Card config:" de /dev/sndstat (par exemple : "(SoundBlaster at 0x220 irq 5 drq 1,5)" ), cela signifie que le périphérique (la carte) a bien été configurée, mais pas détectée.
Maintenant, vous devriez pouvoir jouer un fichier son. Procurez-vous un petit fichier son et envoyez-le vers le fichier de périphérique pour vérifier basiquement la sortie son. Par exemple :
% cat endoftheworld >/dev/dsp
% cat crash.au >/dev/audio
(prennez garde de ne pas ommetre le ">" dans les commandes ci-dessus)
Notez que, généralement, utiliser cat
n'est
pas une façon correcte de jouer des fichiers audio, mais
juste un moyen rapide de vérification. Vous souhaiterez
sans doute trouver un programme dedié permettant de jouer
correctement des fichiers son.
Cette commande fonctionne uniquement si il y a au moins un fichier de périphérique listé dans la section "Audio devices" de /dev/sndstat. Si cette section est vide, il faut essayer de savoir pourquoi la carte n'a pas été détectée.
Si les commandes ci-dessus retournent "I/O error", regardez la à la fin des messages produits par le noyau en tapant la commande "dmesg". Il est fréquent de trouver des messages d'erreurs à cet endroit. Très souvent, on trouve le message : "Sound: DMA (output) timed out - IRQ/DRQ config error?". Cette erreur signifie que la carte n'a pas réussi à utiliser l'interruption attendue. Dans la plupart des cas, cela veut dire que l'IRQ ou le canal DMA configuré pour le pilote ne fonctionne pas. La meilleure façon de le faire fonctionnner est d'essayer tous les IRQ et les DMA supportés par le pilote.
Une autre raison est que le fichier de périphérique n'est pas compatible avec le pilote pour lequel il est configuré Ceci est le plus souvent vrai quand une carte son supposée "compatible SoundBlaster (Pro/16)" ne fonctionne pas avec le pilote SoundBlaster. Dans ce cas, essayez de trouver avec quelle autre carte votre matériel est réellement compatible (en postant dans fr.comp.os.linux par exemple).
Quelques fichiers son peuvent être trouvés dans ce paquetage : ftp://tsx-11.mit.edu/pub/linux/packages/sound/snd-data-0.1.tar.Z
Maintenant, vous pouvez vérifier que l'enregistrement fonctionnne. Si vous pouvez relier un micro(phone !) à votre carte son, vous pouvez effectuer un test rapide en utilisant ce genre de commandes :
# enregistre 4 secondes de son en provenance du micro
# dans le fichier "sample.au"
% dd bs=8k count=4 </dev/audio >sample.au
4+0 records in
4+0 records out
# rejoue le son enregistré
% cat sample.au >/dev/audio
N'oubliez pas de parler dans le micro pour que cela fonctionne !!! Vous pouvez également avoir besoin de trouver un programme `mixer' (mélangeur de sources sonores), afin de sélectionner le microphone comme étant le périphérique d'entrée. Ceci doit également vous permettre d'ajuster le niveau d'enregistrement (gain).
Si tout cela fonctionne, vous pouvez être à peu près certain que vos convertisseurs A/N et N/A fonctionnent, ainsi que la partie du pilote y étant associée. Si vous rencontrez des difficultés, passez à la section suivante !!!
Si vous avez encore des problèmes après avoir suivi les instructions de ce HOWTO, voici quelques points à vérifier. Ils sont listés dans un ordre de difficulté croissante. Si la vérification se solde par un echec, résolvez le problème avant d'effectuer la suivante !
Vous pouvez vérifier la date du noyau pour être
certain que vous utilisez celui que vous avez compilé avec le
support son. Utilisez la commande uname
:
% uname -a
Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386
ou listez le fichier /proc/version:
% cat /proc/version
Linux version 2.0.0 (root@fizzbin) (gcc version 2.7.0) #1 Tue Jun 4 16:57:55 EDT 1996
Si la date ne semble pas correspondre avec celle à laquelle vous avez compilé le noyau, alors vous utilisez certainement un noyau plus ancien... Avez-vous réellement redémarré la machine ? Si vous utilisez LILO (multiboot), l'avez-vous réinstallé ? (normalement, cela se fait par : /etc/lilo/install). Si vous bootez à partir d'une disquette, en avez-vous créé une nouvelle et bien utilisée ?
La façon la plus simple de vérifier ceci est de controler ce que contient /dev/sndstat comme cela a été décrit précédemment. Si il semble y avoir un problème, alors quelque chose s'est mal déroulé pendant la configuration ou la construction du nouveau noyau.
Soyez certain que votre carte son a bien été détectée
lors du démarrage. Vous avez dû voir un message lors de
la phase de boot. Vous pouvez retrouvez les messages du dernier
démarrage en utilisant la commande dmesg
:
% dmesg
ou
% tail /var/adm/messages
Si votre carte n'a pas été trouvée, c'est que quelque chose s'est mal passé. Soyez certain que votre carte est réellement installée ! Si elle fonctionne sous DOS, vous pouvez supposer qu'elle va fonctionner sous Linux, et qu'il doit y avoir un problème au niveau de la configuration du noyau. Soit vous avez configuré une mauvaise carte ou de mauvais paramètres, soit votre carte n'est supportée par aucun des pilotes son du noyau Linux...
Une possibilité est que votre carte nécessite une initialisation
par le pilote DOS. Essayez sous DOS d'initialiser votre carte avec le
pilote fourni par le constructeur de la carte. Ensuite, rebootez à
chaud en utilisant Control-Alt-Delete
. Vérifiez bien que que
les adresses d'E/S, de DMA, et les numéros d'IRQ sont les mêmes
sous Linux et sous DOS. Consultez le fichier Readme.cards dans les sources
du pilote son Linux pour connaître les détails de configuration de
votre carte.
Si votre carte n'est pas mentionnée dans ce document, il est possible que le pilote son de Linux ne la supporte pas. Vous pouvez consulter les références listées à la fin de ce document pour obtenir de l'aide.
Essayez d'enregistrer des sons en provenance de /dev/audio en utilisant
la commande dd
dont on a déjà parlé dans ce
document.
Si ça ne fonctionne pas, alors il y a probablement un conflit d'IRQ ou de DMA, ou une incompatibilité matérielle (le périphérique n'est pas supporté par Linux ou le pilote n'est pas configuré pour le bon périphérique).
Une autre possibilité est d'avoir un matériel défectueux. Testez cette carte sous DOS pour vérifier !
Si ça ne marche toujours pas, voici quelques suggestions sur ce que vous devriez faire :
Esc-x doctor
:-)