Alsa-sound-mini-HOWTO <author>Valentijn Sessink <date>13 Janvier 1999 <abstract> Ce document décrit l'installation des gestionnaires sonores Alsa pour Linux. Ces gestionnaires peuvent être utilisés en remplacement des gestionnaires habituels, et sont entièrement compatibles avec eux. </abstract> <toc> <sect>Introduction <p> Ce document explique comment installer et utiliser les gestionnaires sonores Alsa pour votre carte son. Les gestionnaires Alsa sont entièrement modularisés et supportent kerneld et kmod, tout en étant compatibles avec l'API OSS, avec des possibilités supérieures. En deux mots : compatibles, mais meilleurs. <sect1> Remerciements <p> Ce document contient des informations que j'ai obtenues sur les pages des gestionnaires Alsa. La structure est inspirée du SB-mini-HOWTO, principalement parce qu'il avait la structure que je recherchais. Grâce aux <htmlurl url="ftp://metalab.unc.edu/pub/Linux/utils/text/sgml-tools-0.99.0.tar.gz" name="SGML">Tools, ce HOWTO est disponible dans plusieurs formats, générés à partir d'un seul fichier source. Merci à Erik Warmelink pour sa relecture, ainsi qu'à Alfred Munnikes pour ses quelques questions et précieuses suggestions. Adaptation française par Miodrag Vallat <miodrag@multimania.com>. <sect1> Historique <p> Version 0.1 alpha - janvier 1999, première version, principalement HTML. Version 0.2 alpha - mi janvier 1999, première version sgml. Version 0.3 beta - 20 janvier 1999. Un lien sur la page web d'Alsa. Nous voici officiel ! Troisième version, moins d'erreurs. <sect1> Nouvelles versions de ce document <p> La dernière version peut être trouvée en http://huizen.dds.nl/˜valentyn Yamahata Isaku a l'intention de faire une version japonaise, qui sera disponible sur le site japonais d'Alsa, http://plaza21.mbn.or.jp/~momokuri/alsa/index.html Si vous réalisez une traduction de ce document dans une autre langue, faites-le moi savoir et je rajouterai une référence ici. <sect1> Commentaires <p> Je compte sur vous, les lecteurs, pour rendre ce HOWTO utile. Si vous avez des suggestions, des corrections, ou des commentaires, n'hésitez pas à me les envoyer (valentyn@dds.nl), et je tâcherai de les inclure dans la prochaine version. <p>Si vous publiez ce document sur CD-ROM ou sous forme imprimée, un exemplaire serait apprécié. Ecrivez-moi pour avoir mon adresse postale. Pensez également à faire un don au Linux Documentation Project pour aider la documentation libre pour Linux. Contactez le coordinateur des HOWTO Linux, Tim Bynum <htmlurl url="mailto:linux-howto@sunsite.unc.edu" name="linux-howto@sunsite.unc.edu">, pour plus d'informations. <sect1> Politique de distribution <p> Copyright 1998/1999 Valentijn Sessink <p>Ce HOWTO est une documentation libre ; vous pouvez la redistribuer et/ou la modifier selon les termes de la Licence Publique Générale GNU publiée par la Free Software Foundation (version 2 ou bien toute autre version ultérieure choisie par vous. <p>Ce document est distribué car potentiellement utile, mais <bf/sans aucune garantie/, ni explicite, ni implicite, y compris les garanties de commercialisation ou d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU pour plus de détails. <p>Vous pouvez obtenir une copie de la GNU General Public License en écrivant à la <htmlurl url="http://www.fsf.org" name="Free Software Foundation">, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, États-Unis. <p> <sect> Avant de commencer <p> <sect1> Introduction <p> Ce document tente de vous aider à installer et à utiliser les gestionnaires sonores Alsa pour votre système Linux. Le système de référence est une distribution Slackware 3.5 tournant sur un ordinateur AMD/K6 (compatible x86), mais cela devrait fonctionner avec toute autre distribution Linux. Je ne sais pas si les pilotes Alsa fonctionnent sur d'autres plates-formes ; d'après la documentation, Alsa fonctionne également sur les plates-formes Alpha. Je n'ai que des ordinateurs x86 ici, et toute information supplémentaire est la bienvenue. Il peut s'avérer utile de lire le Linux Sound HOWTO (cf. section Autres HOWTO), mais cet HOWTO ne traite que des gestionnaires du noyau. <sect1> Informations générales sur les gestionnaires Alsa <p> Alsa a été initialement écrit comme remplacement du gestionnaire sonore pour les cartes Gravis UltraSound (GUS). Il a évolué vers un gestionnaire générique pour plusieurs cartes sonores, avec une conception entièrement modulaire. Alsa est compatible avec les gestionnaires sonores OSS/Free et OSS/Linux (les gestionnaires du noyau), mais dispose de sa propre interface qui est encore meilleure que celle de l'OSS. Une liste des fonctionnalités se trouve en <htmlurl url="http://alsa.jcu.cz/intro.html" name="http://alsa.jcu.cz/intro.html"> La page Web du projet Alsa se trouve en <htmlurl url="http://alsa.jcu.cz/" name="http://alsa.jcu.cz/"> <sect1> Matériel supporté <p> Les gestionnaires Alsa ne supportent qu'un sous-ensemble des cartes sonores existantes. Au moment de la rédaction de ce document, les cartes suivantes sont supportées : <itemize> <item> Gravis Ultrasound (GUS) : "PnP", Extreme, Classic/ACE, MAX <item> cartes à base de chipset GUS : Dynasonic 3-D, STB Sound Rage 32, UltraSound 32-Pro (STB) <item> Soundblaster : 1.0, 2.0, Pro, 16/AWE, PCI64 <item> ESS AudioDrive ESx688 <item> Yamaha : chipsets OPL3-SA2, OPL3-SA3 <item> OAK Mozart <item> Schubert 32 PCI (PINE, chipset S3 SonicVibes PCI) <item> Ensoniq AudioPCI ES1370/1371 PCI (Soundblaster PCI64) <item> SonicVibes PCI (PINE Schubert 32 PCI) </itemize> Un grand nombre de cartes à base de Crystal Semiconductors sont également supportées. Ces chips se trouvent dans bon nombre de matériels, sous forme de carte séparée (certaines cartes Philips PCA) ou sur les cartes mères (IBM Aptive, ordinateurs Dell). Les cartes utilisant les chipsets suivants sont supportées : <itemize> <item> 4232 <item> 4232A <item> 4235 <item> 4236B <item> 4237B <item> 4238B </itemize> Une liste plus récente se trouve dans les sources du gestionnaire lui-même, à savoir dans doc/SOUNDCARDS <sect1> Autres HOWTO <p> Cet Alsa-sound-mini-HOWTO n'est qu'un mini-HOWTO. D'autres HOWTO peuvent vous aider quand celui-ci est trop concis. J'en indiquerai quelques-uns en essayant d'installer les gestionnaires Alsa. Les HOWTO se trouvent en général sur les miroirs de metalab (ex sunsite). Allez donc voir sur <htmlurl url="http://sunsite.unc.edu/LDP/mirrors.html" name="http://sunsite.unc.edu/LDP/mirrors.html"> quel est votre miroir le plus proche. Vous trouverez les HOWTO dans le répertoire LDP/HOWTO/. Notez que les liens dans ce document sont tous relatifs à /LDP/HOWTO/mini. Si vous consultez ce document depuis un miroir suffisamment convenable, vous trouverez les HOWTO indiqués. <sect2> Cartes son <p> Vous venez d'acheter une carte son, ou elle se trouve déjà enfermée dans votre ordinateur depuis des lustres. Et maintenant vous allez vous en servir ! Allez voir le <htmlurl url="../Sound-HOWTO.html" name="Sound-HOWTO"> pour voir si cela en vaut la peine (Vous préférerez peut-être acheter d'abord cette nouvelle Mega-Rumble-Blaster, puis essayer les gestionnaires Alsa). <sect2> Cartes Plug and Play <p> La plupart des cartes son modernes pour la plateforme Intel sont des cartes ISA PnP, une abréviation de ''Plug and Play''. Cela signifie que la carte doit être configurée par le système d'exploitation, via une routine d'initialisation au démarrage. Vous allez sans doute devoir configurer votre carte avec le paquetage PnP-utils. Toutes les distributions Linux suffisamment récentes l'incluent. Pour vous en servir, jetez donc un oeil au <htmlurl url="../Plug-and-Play-HOWTO.html" name="Plug-and-Play-HOWTO">. <sect2> Modules <p> Les gestionnaires Alsa sont construits comme des modules. Vous pouvez trouver plus d'informations sur les modules dans le <htmlurl url="../Kernel-HOWTO.html" name="Kernel-HOWTO">. Il existe aussi un module-HOWTO, mais il n'est plus maintenu à l'heure actuelle ; consultez la section 'unmaintained' du Howto-HOWTO. Il existe aussi un <htmlurl url="Modules.html" name="Modules-mini-HOWTO"> qui peut être utile. <sect2> Kerneld <p> Un autre HOWTO qui peut être utile à certains est le <htmlurl url="Kerneld.html" name="Kerneld-mini-HOWTO">. Kerneld est un daemon qui installe et retire les modules du noyau quand c'est nécessaire. (Je n'en ai aucune expérience, donc toute information à ce sujet est la bienvenue. La documentation des gestionnaires Alsa contient quelques informations sur la configuration de kerneld, qui ont été ajoutées à ce mini-HOWTO). <sect> Comment installer les gestionnaires sonores Alsa <p> <sect1> Ce dont vous avez besoin <p> <itemize> <item> un système Linux en état de fonctionnement (par exemple une distribution Slackware), avec les paquetages de développement installés (i.e. gcc, make, etc.) ; <item> une carte son supportée ; <item> un minimum de connaissance de Linux (savoir utiliser "ls", "cd", "tar", etc.) ; <item> l'accès au compte administrateur (root) ; </itemize> Si vous avez une carte PnP, vous aurez également besoin : <itemize> <item> du paquetage isapnptools. </itemize> Le texte INSTALL dans le répertoire des gestionnaires laisse supposer que pour certaines cartes, le support PnP est intégré. J'ai aussi reçu une note de Jaroslav à ce sujet. Quand j'aurai plus d'informations à ce sujet, je les ajouterai à ce mini-HOWTO. Notez que vous ne devez pas avoir le moindre gestionnaire sonore actif quand vous voulez utiliser les gestionnaires Alsa. Si votre noyau est compilé avec les gestionnaires sonores "en dur", vous devrez le recompiler. Si vous avez le vieux module "sound.o" actif, vous devez le désactiver. Les systèmes RedHat récents ont une configuration du son différente, avec plusieurs modules actifs. Vous devrez tous les désactiver. <sect1> Obtenir les gestionnaires <p> Les gestionnaires Alsa sont disponibles en <htmlurl url="ftp://alsa.jcu.cz/pub/" name="ftp://alsa.jcu.cz/pub/">, et il en existe un miroir en <htmlurl url="ftp://linux.a2000.nl/alsa" name="ftp://linux.a2000.nl/alsa">. Pour une installation Alsa totalement fonctionnelle, il vous faut les gestionnaires, la bibliothèque et les utilitaires ; par exemple, si vous avez choisi le miroir, vous allez récupérer <htmlurl url="ftp://linux.a2000.nl/alsa/driver/" name="ftp://linux.a2000.nl/alsa/driver/">alsa-driver-0.2.0-pre10p3.tar.gz, <htmlurl url="ftp://linux.a2000.nl/alsa/lib/" name="ftp://linux.a2000.nl/alsa/lib/">alsa-lib-0.3.0pre2.tar.gz et <htmlurl url="ftp://linux.a2000.nl/alsa/utils/" name="ftp://linux.a2000.nl/alsa/utils/"> alsa-utils-0.0.8.tar.gz (et NON il ne s'agit pas de liens complets, vous feriez mieux d'aller voir sur place s'il y a de nouvelles versions disponibles. Il vous suffit de récupérer la dernière). <sect1> Extraction <p> Vous devez extraire les sources des gestionnaires par toute commande raisonnable, comme le bon vieux tar -zxf <fichier>. Pour les débutants et les amnésiques : <tscreen><verb> cd /usr/src tar -zxf ˜/alsa-driver-0.2.0-pre10p3.tar.gz </verb></tscreen> (Si cela a fonctionné, soit vous êtes déjà logué en root, ce qui est une mauvaise idée -- arrêtez votre lecture et allez consulter le DOS/Win95-to-Linux-HOWTO --, soit vous avez déjà pensé qu'il s'agissait du genre de tâche nécessitant les privilèges administrateur. Donc : il vous faut les privilèges root, tapez "su" puis le mot de passe). <tscreen><verb> tar -zxf ˜/alsa-lib-0.3.0pre2.tar.gz tar -zxf ˜/alsa-utils-0.0.8.tar.gz </verb></tscreen> Egalement utilisable et plus amusant : find ˜ -name alsa* -exec tar -zxf {} \; (Pas la peine d'essayer ça, c'est juste un exemple). Notez que si vous téléchargez les gestionnaires avec Netscape, vous risquez de récupérer les gestionnaires décompactés avec l'extension ".tgz". Si tar se plaint du format de fichier, vous obtiendrez peut-être de meilleurs résultats en retirant la lettre "z" des options de tar. <sect1> Compilation <p> Vous devez compiler les gestionnaires avant de pouvoir compiler et utiliser la bibliothèque. Vous avez besoin de compiler la bibliothèque avant de pouvoir compiler et utiliser les utilitaires. Commençons : <tscreen><verb> cd alsa-driver-0.2.0-pre10p3 ./configure make </verb></tscreen> Maintenant vous avez besoin d'être 'root' pour installer tout ça (mais vous l'étiez peut-être déjà) <tscreen><verb> make install </verb></tscreen> Au tour de la bibliothèque : <tscreen><verb> cd ../alsa-lib-0.3.0 ./configure make make install </verb></tscreen> Vous avez compris le truc ? Alors pour les utilitaires : <tscreen><verb> cd ../alsa-utils-0.0.8 ./configure make make install </verb></tscreen> Note : vous pouvez laisser de côté le "make install" des utilitaires pour l'instant. Vous pouvez même laisser tomber la compilation de la bibliothèque et des utilitaires, pour voir tout de suite si les gestionnaires fonctionnent. <sect1> Préparer les périphériques <p> Il y a un script dans le répertoire des gestionnaires qui va installer les fichiers de périphériques Alsa dans votre répertoire /dev. Lancez <tscreen><verb> ./snddevices </verb></tscreen> dans le répertoire alsa-driver. Il devrait y avoir un répertoire /dev/snd maintenant (vérifiez sa présence. Si vous n'êtes pas assez familier avec la commande "ls", allez plutôt consulter d'autres HOWTO avant. Vous devez avoir un minimum de connaissances de Linux pour installer ces pilotes). <p>Maintenant vous êtes prêt à insérer les gestionnaires, alors jetez-vous donc sur le paragraphe qui suit. <sect> Charger les gestionnaires <p> Il existe deux façons d'utiliser les modules Alsa. Je préfère personnellement utiliser la méthode manuelle, à savoir insérer le gestionnaire au démarrage. Les gestionnaires Alsa sont conçus pour être chargeables et déchargeables à volonté -- par exemple ils ne réinitialisent pas le mixer au chargement -- donc vous pouvez facilement utiliser l'approche kerneld. <sect1> Insérer avec modprobe <p> Note : si vous avez une carte son PnP, vous devez tout d'abord la configurer aux bons IO/IRQ/DMA (ou au moins à des valeurs connues). Consultez le Plug-and-Play-HOWTO. Avez-vous configuré votre carte PnP ? Bien, alors poursuivons. Le plus dur est de faire "modprobe snd-<carte son>". Cela devrait faire l'affaire. Notez que toutes les distributions ne mettent pas /sbin dans le PATH. Si vous obtenez "bash: modprobe: command not found", cela signifie probablement que modprobe n'est pas dans votre path. Essayez "/sbin/modprobe snd-sb16", ou tâchez de trouver l'utilitaire modprobe quelque part. La plus grosse difficulté vient des chipsets Crystal, que les gestionnaires Alsa ne détectent pas automatiquement. Des informations plus récentes peuvent être trouvées dans le fichier INSTALL du répertoire alsa-driver. Deux exemples, puis une liste : Gravis UltraSound (GUS) et compatibles : <tscreen><verb> /sbin/modprobe snd-gusclassic </verb></tscreen> Pour toutes les cartes 16 bit compatibles Soundblaster (SoundBlaster 16 (PnP), SoundBlaster AWE 32 (PnP), SoundBlaster AWE 64 PnP) : <tscreen><verb> /sbin/modprobe snd-sb16 </verb></tscreen> <sect1>Quel module pour quelle carte ?<p> <sect2>Gravis UltraSound Extreme<p> <tt/modprobe snd-gusextreme/ <sect2>Gravis UltraSound MAX<p> <tt/modprobe snd-gusmax/ <sect2>ESS AudioDrive ES-1688 et ES-688<p> <tt/modprobe snd-audiodrive1688/ <sect2>Gravis UltraSound PnP<p> Gravis UltraSound PnP, Dynasonic 3-D/Pro, STB Sound Rage 32 et toute autre carte son basée sur un chipset AMD InterWave (tm). <tt/modprobe snd-interwave/ <sect2>UltraSound 32-Pro<p> UltraSound 32-Pro (carte produite par STB, utilisée par Compaq) et toute autre carte son basée sur un chipset AMD InterWave (tm) avec un circuit TEA6330T pour un contrôle étendu des volumes grave, aigu et principal. <tt/modprobe snd-interwave-stb/ <Sect2>Soundblaster<p> Cartes Soundblaster 8 bits (SoundBlaster 1.0, SoundBlaster 2.0, SoundBlaster Pro) <tt/modprobe snd-sb8/ <Sect2>Soundblaster 16<p> Cartes SoundBlaster 16 bits (SoundBlaster 16 (PnP), SoundBlaster AWE 32 (PnP), SoundBlaster AWE 64 PnP. Attention, ce module ne supporte pas la carte SoundBlaster VibraX16. <tt/modprobe snd-sb16/ <Sect2>Yamaha OPL3-SA2/SA3<p> Un "modprobe snd-opl3sa" ne fonctionnera pas, ce gestionnaire ne faisant pas de détection automatique. Voyez plus loin. <Sect2>S3 SonicVibes<p> Cartes S3 SonicVibes PCI (PINE Schubert 32 PCI). <tt/modprobe snd-sonicvibes/ <Sect2>Ensoniq/Soundblaster PCI64<p> Cartes Ensoniq AudioPCI ES1370/1371 PCI (SoundBlaster PCI 64) <tt/modprobe snd-audiopci/ <Sect2>CS4232/4232A<p> Toutes les cartes à base de chipset CS4232/CS4232A. Un "modprobe snd-card-cs4232" ne fonctionnera pas, ce gestionnaire ne faisant pas de détection automatique. Voyez plus loin. <Sect2>CS4235 et supérieur<p> Toutes les cartes à base de chipset CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239. Un "modprobe snd-card-cs4236" ne fonctionnera pas, ce gestionnaire ne faisant pas de détection automatique. Voyez plus loin. <sect1> Chargement par modprobe pour les pilotes sans détection automatique <p> Si vous avez un gestionnaire n'effectuant pas de détection automatique, vous devez fournir des informations supplémentaires pour que le gestionnaire fonctionne. Vous pourrez trouver plus d'informations dans le fichier INSTALL du répertoire alsa-driver. <sect2> OPL3-SA2 et OPL3-SA3 <p> D'après le fichier INSTALL, vous devez fournir toutes les informations suivantes pour ce gestionnaire. Si vous avez initialisé la carte avec les isapnptools, vous pouvez probablement trouver ces informations dans le fichier /etc/isapnp.conf : <tscreen><verb> snd_port - port de contrôle de l'OPL3-SA snd_wss_port - port WSS de l'OPL3-SA (0x530,0xe80,0xf40,0x604) snd_midi_port - port de l'UART MPU-401 (0x300,0x330), -1 pour désactiver snd_fm_port - port FM de l'OPL3-SA (0x388), -1 pour désactiver snd_irq - IRQ de l'OPL3-SA (5,7,9,10) snd_dma1 - canal DMA 1 de l'OPL3-SA (0,1,3) snd_dma1_size - taille de la mémoire tampon du DMA 1 en Ko (4-64Ko) snd_dma2 - canal DMA 2 de l'OPL3-SA (0,1,3), -1 si aucun snd_dma2_size - taille de la mémoire tampon du DMA 2 en Ko (4-64Ko)</verb></tscreen> Lancez un "modprobe snd-opl3sa snd_port=0xNNN snd_wss_port=0x530 snd_midi_port=-1 snd_fm_port=0x388 snd_irq=5 snd_dma1=0 snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN" pour charger ce gestionnaire (sans support midi). Je reste convaincu que le support midi n'est nécessaire que pour connecter des synthétiseurs etc. à une machine Linux. Je n'ai jamais eu besoin du support midi, même pour jouer des fichiers midi). Notez que les valeurs "NN" doivent être précisées, mais je ne sais pas quelles valeurs sont les plus raisonnables. Je ne sais d'ailleurs pas si la spécification d'une taille DMA est réellement nécessaire. <sect2> CS4232 et CS4232A <p> D'après le fichier INSTALL, vous devez fournir le port de la carte. Cependant, pour ce gestionnaire et le suivant, il m'a fallu fournir toutes les informations (à l'exception des tailles DMA) pour que le gestionnaire fonctionne. Si vous avez initialisé la carte avec les isapnptools, vous pouvez probablement trouver ces informations dans le fichier /etc/isapnp.conf : <tscreen><verb> snd_port - port du CS4232 (PnP, par défaut 0x534) snd_cport - port de contrôle du CS4232 chip (PnP, par défaut 0x120) snd_mpu_port - port de l'UART MPU-401 (PnP, par défaut 0x300), -1 pour désactiver snd_fm_port - port FM du CS4232 (PnP, par défaut 0x388), -1 pour désactiver snd_jport - port manette de jeu du CS4232 (PnP, par défaut 0x200), -1 pour désactiver snd_irq - IRQ du CS4232 (5,7,9,11,12,15) snd_mpu_irq - IRQ de l'UART MPU-401 (9,11,12,15) snd_dma1 - canal DMA 1 du CS4232 (0,1,3) snd_dma1_size - taille de la mémoire tampon du DMA 1 en Ko (4-64Ko) snd_dma2 - canal DMA 2 du CS4232 (0,1,3), -1 si aucun snd_dma2_size - taille de la mémoire tampon du DMA 2 en Ko (4-64Ko) </verb></tscreen> Lancez un "modprobe snd-card-cs4232 snd_port=0x534 snd_cport=0x120 snd_mpu_port=-1 snd_fm_port=0x388 snd_jport=-1 snd_irq=5 snd_dma1=0 snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN" pour charger ce gestionnaire pour une carte configurée avec ses valeurs par défaut (sans le support midi, cf la note pour l'OPL-3, ni le support manette de jeu). Si vous utilisez d'autres valeurs dans /etc/isapnp.conf, reportez-les ici aussi. Notez que les valeurs "NN" doivent être précisées, mais je ne sais pas quelles valeurs sont les plus raisonnables. Je ne sais d'ailleurs pas si la spécification d'une taille DMA est réellement nécessaire. <sect2> CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239 <p> D'après le fichier INSTALL, vous devez fournir le port de la carte. Cependant, pour une carte à base de CS4237B, il m'a fallu fournir toutes les informations (à l'exception des tailles DMA) pour que le gestionnaire fonctionne. Si vous avez initialisé la carte avec les isapnptools, vous pouvez probablement trouver ces informations dans le fichier /etc/isapnp.conf : <tscreen><verb> snd_port - port du CS423x (PnP, par défaut 0x534) snd_cport - port de contrôle du CS423x (PnP, par défaut 0x120) snd_mpu_port - port de l'UART MPU-401 (PnP, par défaut 0x300), -1 pour désactiver snd_fm_port - port FM du CS4232 (PnP, par défaut 0x388), -1 pour désactiver snd_jport - port manette de jeu du CS423x (PnP, par défaut 0x200), -1 pour désactiver snd_irq - IRQ du CS423x (5,7,9,11,12,15) snd_mpu_irq - IRQ de l'UART MPU-401 (9,11,12,15) snd_dma1 - canal DMA 1 du CS423x (0,1,3) snd_dma1_size - taille de la mémoire tampon du DMA 1 en Ko (4-64Ko) snd_dma2 - canal DMA 2 du CS423x (0,1,3), -1 si aucun snd_dma2_size - taille de la mémoire tampon du DMA 2 en Ko (4-64Ko) </verb></tscreen> Lancez un "modprobe snd-card-cs4232 snd_port=0x534 snd_cport=0x120 snd_mpu_port=-1 snd_fm_port=0x388 snd_jport=-1 snd_irq=5 snd_dma1=0 snd_dma1_size=NN snd_dma2=1 snd_dma2_size=NN" pour charger ce gestionnaire pour une carte configurée avec ses valeurs par défaut (sans le support midi, cf la note pour l'OPL-3, ni le support manette de jeu). Notes : <itemize> <item>les valeurs "NN" doivent être précisées, mais je ne sais pas quelles valeurs sont les plus raisonnables ;</item> <item>mon CS4237B fonctionne parfaitement sans utiliser les options de taille DMA.</item> </itemize> <sect1> Chargement par kerneld <p> <tt>kerneld</tt> est un <tt/daemon/ qui charge les modules chaque fois que nécessaire, et les décharge quand ils ne sont plus utilisés. N'ayant aucune expérience de kerneld, je ne sais pas si les renseignements que je donne ici sont fiables. Ils proviennent du fichier INSTALL des gestionnaires Alsa. Une excellente source d'informations sur kerneld est le Kerneld-mini-HOWTO. <p>Procédez ainsi : <itemize> <item> Modifiez votre /etc/conf.modules (des exemples sont donnés plus loin) ;</item> <item> Lancez 'modprobe snd-<tt/carte/' où <tt/carte/ est le nom de votre carte. [Ce que je trouve étonnant, vu que kerneld est censé le charger lui-même ? VS]</item> </itemize> Exemple de /etc/conf.modules pour une carte Gravis UltraSound PnP : <tscreen><verb> alias char-major-14 snd alias snd-minor-oss-0 snd-interwave alias snd-minor-oss-3 snd-pcm1-oss alias snd-minor-oss-4 snd-pcm1-oss alias snd-minor-oss-5 snd-pcm1-oss alias snd-minor-oss-12 snd-pcm1-oss alias snd-card-0 snd-interwave options snd snd_major=14 snd_cards_limit=1 options snd-interwave snd_index=1 snd_id="guspnp" snd_port=0x220 snd_irq=5 snd_dma1=5 snd_dma2=6 </verb></tscreen> Exemple pour utiliser plus d'une carte son sur votre machine (ici pour une Sound Blaster 16 et une Gravis UltraSound Classic) : <tscreen><verb> alias char-major-14 snd alias snd-minor-oss-0 snd-mixer alias snd-minor-oss-3 snd-pcm1-oss alias snd-minor-oss-4 snd-pcm1-oss alias snd-minor-oss-5 snd-pcm1-oss alias snd-minor-oss-12 snd-pcm1-oss alias snd-card-0 snd-sb16 alias snd-card-1 snd-gusclassic options snd snd_major=14 snd_cards_limit=2 options snd-sb16 snd_index=1 snd_port=0x220 snd_irq=5 snd_dma8=1 snd_dma16=5 options snd-gusclassic snd_index=2 snd_irq=11 snd_dma1=6 snd_dma2=7 </verb></tscreen> Exemple si deux cartes Gravis UltraSound Classic sont installées : <tscreen><verb> alias char-major-14 snd alias snd-minor-oss-0 snd-mixer alias snd-minor-oss-3 snd-pcm1-oss alias snd-minor-oss-4 snd-pcm1-oss alias snd-minor-oss-5 snd-pcm1-oss alias snd-minor-oss-12 snd-pcm1-oss alias snd-card-0 snd-gusclassic alias snd-card-1 snd-gusclassic options snd snd_major=14 snd_cards_limit=2 options snd-gusclassic snd_index=1,2 snd_port=0x220,0x260 snd_irq=5,11 snd_dma1=5,6 snd_dma2=7,3 </verb></tscreen> <sect1> Compatibilité OSS <p> Si vous souhaitez avoir une compatibilité avec OSS/Free ou OSS/Linux, il vous faut charger un gestionnaire de plus : le gestionnaire de compatibilité snd-pcm1-oss. Lancez <tscreen><verb>modprobe snd-pcm1-oss</verb></tscreen> Cela vous donnera le support de /dev/audio et /dev/dsp, comme le font les gestionnaires OSS/Free (ceux du noyau) et OSS/Linux (ceux vendus séparément). Notez qu'il ne s'agit que d'une émulation. <sect> Tester et utiliser <p> Maintenant vous êtes prêt à tester si le gestionnaire sonore est réellement disponible, avant de l'utiliser. <sect1> Le système de fichiers /proc <p> Vous pouvez trouver beaucoup de renseignements sur votre système dans le répertoire /proc. /proc est un système de fichiers "virtuel", ce qui signifie qu'il n'existe pas réellement, mais fournit grosso modo une vue sur les processus de votre ordinateur. Pour que /proc soit accessible, votre noyau doit être compilé avec le support de /proc, ce qui est le cas dans la plupart des distributions, mais si vous avez compilé votre propre noyau sans /proc, vous n'aurez rien dans /proc. /proc/modules recense les modules chargés. Une fois les gestionnaires Alsa chargés, en tapant cat /proc/modules vous devriez avoir quelque chose de ce genre : <tscreen><verb> snd-pcm1-oss 4 0 snd-sb16 1 1 snd-sb-dsp 4 [snd-sb16] 0 snd-pcm1 4 [snd-pcm1-oss snd-sb-dsp] 0 snd-pcm 3 [snd-pcm1-oss snd-sb16 snd-sb-dsp snd-pcm1] 0 snd-mixer 3 [snd-pcm1-oss snd-sb16 snd-sb-dsp] 1 snd-mpu401-uart 1 [snd-sb16] 0 snd-midi 4 [snd-sb16 snd-sb-dsp snd-mpu401-uart] 0 snd-opl3 1 [snd-sb16] 0 snd-synth 1 [snd-sb16 snd-opl3] 0 snd-timer 1 [snd-opl3] 0 snd 8 [snd-pcm1-oss snd-sb16 snd-sb-dsp snd-pcm1 snd-pcm snd-mixer snd-mpu401-uart snd-midi snd-opl3 snd-synth snd-timer] 0 </verb></tscreen> Si quelque chose s'est mal passé pendant l'installation du gestionnaire, vous aurez quand même quelques gestionnaires "snd", mais pas de support audio. Par exemple (note : ne vous amusez surtout pas à entrer les commandes suivantes, le gestionnaire cs4236 a besoin de paramètres) : <tscreen><verb> win3:˜# modprobe snd-card-cs4236 /lib/modules/2.0.35/misc/snd-card-cs4236.o: init_module: Device or resource busy snd-mixer: Device or resource busy win3:˜# cat /proc/modules snd-cs4236 2 0 snd-cs4231 3 [snd-cs4236] 0 snd-timer 1 [snd-cs4231] 0 snd-pcm1 4 [snd-cs4236 snd-cs4231] 0 snd-mixer 3 [snd-cs4236 snd-cs4231] 0 snd-pcm 3 [snd-cs4236 snd-cs4231 snd-pcm1] 0 snd-mpu401-uart 1 0 snd-midi 4 [snd-mpu401-uart] 0 snd-opl3 1 0 snd-synth 1 [snd-opl3] 0 snd-timer 1 [snd-cs4231 snd-opl3] 0 snd 8 [snd-cs4231 snd-timer snd-pcm1 snd-mixer snd-pcm] 0 </verb></tscreen> Vous pouvez vérifier l'existence d'une carte son en regardant /proc/asound/cards. Par exemple : <tscreen><verb> bash$ cat /proc/asound/cards 0 [card1 : SB16 - Sound Blaster 16 Sound Blaster 16 at 0x220, irq 5, dma 1&5 </verb></tscreen> Dans l'exemple précédent (où j'ai oublié les options) l'affichage aurait été : <tscreen><verb> win3:˜# cat /proc/asound/cards --- no soundcards --- </verb></tscreen> Une carte CS4236 fonctionnelle donnerait <tscreen><verb> 0 [card1 ]: CS4236 - CS4237B CS4237B at 0x534, irq 7, dma 1&0 </verb></tscreen> Si vous avez beau vérifier et revérifier vos réglages et que vous n'avez toujours rien, allez faire un tour dans la section dépannage. Le répertoire virtuel <tt>/proc/asound</tt> fournit beaucoup d'autres renseignements sur le gestionnaire. Notez cependant que /proc/asound n'existera qu'une fois le premier module Alsa chargé. S'il n'y a pas de /proc/asound, cela signifie simplement que le module <tt/snd/ n'a pas été chargé convenablement. Vous pouvez trouver la liste des cartes installées dans /proc/asound/cards, puis des renseignements sur la première dans /proc/asound/0, sur la suivante dans /proc/asound/1, etc. Il existe une troisième façon d'obtenir des renseignements sur les gestionnaires sonores, si vous avez chargé le module de compatibilité OSS, à savoir le périphérique /dev/sndstat. Le paquetage Alsa vous demande gentiment de ne pas vous fier à cette source d'informations, car elle n'est là que pour la compatibilité avec les gestionnaires OSS, et de meilleurs renseignements sont disponibles via /proc/asound. <sect1> Le mixer <p> Une fois les gestionnaires de votre carte son installés, comme vous l'indique /proc, vous pouvez essayer de faire du bruit. Tout d'abord, installez le paquetage d'utilitaires, ou, tout au moins, placez la commande "amixer" à un endroit raisonnable (comme /usr/local/bin). Commencez par examiner les réglages du mixer en lançant "amixer". Le résultat peut varier énormément d'une carte à l'autre. Ma Soundblaster 16 donne : <tscreen><verb> Master 0 % (-14.00dB) : 0 % (-14.00dB) Bass 0 % (-14.00dB) : 0 % (-14.00dB) Treble 0 % (-14.00dB) : 0 % (-14.00dB) Synth 0 % (-62.00dB) : 0 % (-62.00dB) PCM 0 % (-62.00dB) : 0 % (-62.00dB) Line-In 0 % (-62.00dB) : 0 % (-62.00dB) Mute MIC 0 % (-62.00dB) : 0 % (-62.00dB) Mute CD 0 % (-62.00dB) : 0 % (-62.00dB) Mute In-Gain 0 % (-18.00dB) : 0 % (-18.00dB) Out-Gain 0 % (-18.00dB) : 0 % (-18.00dB) PC Speaker 0 % (-18.00dB) : 0 % (-18.00dB) </verb></tscreen> Ma carte son à base de Crystal 4237B a beaucoup d'autres options : <tscreen><verb> Master D 0 % (-22.00dB) : 0 % (-22.00dB) Mute 3D Center 0 % (-22.50dB) : 0 % (-22.50dB) 3D Space 0 % (-22.50dB) : 0 % (-22.50dB) Mute Synth 0 % (-94.50dB) : 0 % (-94.50dB) Mute FM 0 % (-94.50dB) : 0 % (-94.50dB) Mute DSP 0 % (-94.50dB) : 0 % (-94.50dB) Mute PCM 0 % (-94.50dB) : 0 % (-94.50dB) Mute Line-In 0 % (-34.50dB) : 0 % (-34.50dB) Mute MIC 0 % (-22.50dB) : 0 % (-22.50dB) Mute CD 0 % (-34.50dB) : 0 % (-34.50dB) Mute Record-Gain 0 % ( 0.00dB) : 0 % ( 0.00dB) In-Gain 0 % (-18.00dB) : 0 % (-18.00dB) Loopback 0 % (-94.50dB) : 0 % (-94.50dB) Mute Mono 0 % (-45.00dB) : 0 % (-45.00dB) Mute Aux A 0 % (-34.50dB) : 0 % (-34.50dB) Mute </verb></tscreen> Vous aurez remarqué les indications <tt/Mute/ (Muet), y compris pour le canal principal du CS4237B ! Pour le CS4237B, il me faut lancer <tt/amixer "master d" unmute/ pour pouvoir entendre le moindre son. La soundblaster n'a pas de sortie en sourdine, mais <tt/amixer master 100 unmute/ réglerait le volume à 100% et réactiverait le canal principal. Vous pouvez utiliser un nombre, un des mots <tt/mute/ et <tt/unmute/, ou les deux. Lancez <tt/amixer "master d" 100 ; amixer pcm 100 unmute/ pour régler le volume principal du CS4237B au maximum, activer le canal PCM et régler son volume au maximum. Vous pouvez régler le canal CD en enregistrement en entrant <tt/amixer cd rec/tt puis le remettre en lecture avec <tt/amixer cd norec/. Si vous préférez enregistrer depuis un micro, vous devrez probablement utiliser <tt/amixer record-gain 100 ; amixer mic 100 rec mute/ (ne pas mettre l'entrée micro en sourdine produit des parasites si le micro capte son propre signal par les haut-parleurs). Malheureusement, je n'ai pas pu modifier le réglage des canaux "3d center" et "3d space" avec amixer. Si quelqu'un y parvient, faites-le moi savoir. Vous pouvez cependant utiliser alsamixer pour cela. La FAQ Alsa prétend qu'il est possible de restaurer les réglages du mixer avec <tt>cat <fichier> > /proc/asound/N/mixer0</tt>, où <ficher contient une précédente copie de /proc/asound/N/mixer0. Je n'ai pas pu le faire sur mon système, il se plaint de périphériques non existants. <sect1> Les périphériques /dev/snd/ <p> Les gestionnaires Alsa ont des périphériques associés dans le répertoire /dev/snd. Si vous avez une carte, vous aurez les périphériques suivants : <tscreen><verb> /dev/snd/pcm00 - la sortie PCM de la carte0 /dev/snd/mixer0 - le mixer de la carte 0 /dev/snd/control0 - le contrôleur de la carte 0 </verb></tscreen> Le premier chiffre est le numéro de la carte son, le deuxième (s'il y a lieu) étant le numéro du périphérique. Une carte son ayant deux sorties PCM aurait pcm00 et pcm01. Maintenant, vous êtes prêt à envoyer un fichier son dans la sortie PCM de la première carte. Essayez de copier n'importe quel fichier texte dans /dev/snd/pcm00 ainsi : <tt>cat <fichier > /dev/snd/pcm00</tt>. Le fichier peut être quelconque, pourvu qu'il ne soit pas de longueur nulle. Si vous avez un fichier son qui traîne quelque part, vous pouvez l'essayer. Vous pouvez aussi récupérer le fichier en <htmlurl url="http://ldp.nllgg.nl/sounds/english.au" name="http://www.ldp.org/sounds/english.au">, pour entendre Linus Torvalds expliquer comment prononcer Linux. La configuration par défaut de votre périphérique sonore est 8000 Hz, 8 bits. Ce qui signifie que le fichier "english.au" mentionné plus haut générera de la voix, tandis que les autres fichier généreront probablement des parasites. Si vous n'entendez rien, vérifiez vos haut-parleurs, essayez de relancer <tt/amixer/ ou consultez un médecin. (Plus loin vous pourrez utiliser les fonctionnalités 48 kHz, 16 bit de votre carte son avec votre programme audio préféré, comme sox ou mpg123). Si vous avez chargé le module "snd-pcm1-oss", vous pouvez également utiliser la compatibilité OSS pour accéder à votre carte son. Les correspondances suivantes sont alors effectuées : <tscreen><verb> /dev/snd/pcm00 -> /dev/audio0 (/dev/audio) -> numéro mineur 4 /dev/snd/pcm00 -> /dev/dsp0 (/dev/dsp) -> numéro mineur 3 /dev/snd/pcm01 -> /dev/adsp0 (/dev/adsp) -> numéro mineur 12 /dev/snd/pcm10 -> /dev/audio1 -> numéro mineur 4+16 = 20 /dev/snd/pcm10 -> /dev/dsp1 -> numéro mineur 3+16 = 19 /dev/snd/pcm11 -> /dev/adsp1 -> numéro mineur 12+16 = 28 /dev/snd/pcm20 -> /dev/audio2 -> numéro mineur 4+32 = 36 /dev/snd/pcm20 -> /dev/dsp2 -> numéro mineur 3+32 = 39 /dev/snd/pcm21 -> /dev/adsp2 -> numéro mineur 12+32 = 44 </verb></tscreen> <sect1> Informations complémentaires <p> Le fichier INSTALL des gestionnaires Alsa mentionne quelques trucs et astuces pour indiquer leurs réglages aux gestionnaires. Leur utilité dépend des applications sonores dont vous vous servez. Les applications classiques, comme mpg123, sox (généralement utilisé par la commande <tt/play/), ou RealPlayer, fonctionneront probablement parfaitement sans avoir recours à ces astuces. Je n'en ai jamais eu besoin personnellement. <sect2> /proc/asound/N/pcmN0 <p> <tscreen><verb> "Playback erase" - efface toutes les informations sur les applications OSS "Playback <application> <nombre de fragments> <taille des fragments> [<options>]" "Record erase" - efface toutes les informations sur les applications OSS "Record <application> <nombre de fragments> <taille des fragments> [<options>]" </verb></tscreen> <tt/application/ - nom de l'application (avec ou sans chemin complet). <tt/nombre de fragments/ - nombre de fragments, ou zéro pour laisser le choix à Alsa. <tt/taille des fragments/tt> - taille des fragments en octets, ou zéro pour laisser le choix à Alsa. <tt/options/ - paramètres optionnels <tt>WR_ONLY</tt> - si l'application tente d'ouvrir le périphérique PCM en mode O_RDWR, modifier en O_WRONLY (pas d'enregistrement) - pour Quake etc. Exemples : <tscreen><verb> echo "Playback x11amp 128 16384" > /proc/asound/0/pcm00 echo "Playback squake 0 0 WR_ONLY" > /proc/asound/0/pcm00 </verb></tscreen> <sect2> /proc/asound/N/sb16 <p> <tscreen><verb> "Playback 8" -> n'utiliser que le canal DMA 8 bits pour la lecture. "Playback 16" -> n'utiliser que le canal DMA 16 bits pour la lecture. "Playback auto" (par défaut) -> choix automatique : la premièer ouverture utilisera le canal DMA 16 bits. "Record 8" -> n'utiliser que le canal DMA 8 bits pour l'enregistrement. "Record 16" -> n'utiliser que le canal DMA 16 bits pour l'enregistrement. "Record auto" (par défaut) -> choix automatique : la première ouverture utilisera le canal DMA 16 bits. </verb></tscreen> Exemple : <tt>echo "Record 16" > /proc/asound/0/sb16</tt> Pour plus d'informations, consultez le fichier INSTALL. <sect> Astuces et dépannage <p> Pensez à lire la FAQ dans le répertoire des gestionnaires sonores. Cette section est toujours en construction. <sect1> Dépannage : activation du gestionnaire <p> Vérifiez les éléments suivants : <sect2> Compatibilité des cartes son <p> Êtes-vous sûr à 100% que votre carte son <bf/EST/ supportée ? Vérifiez encore. Il arrive qu'un modèle X123 ne soit pas exactement un X123b et vous êtes en train de perdre votre temps. D'un autre côté, une carte son supportée peut aussi poser problèmes -- il m'a fallu deux heures pour installer une CS4237B, ce qui était, après tout, un très bon exemple de RTFM. <sect2> OSS/Lite ou le gestionnaire du noyau <p> Il se peut que votre noyau ait le support audio intégré, ou qu'un module OSS/Lite ou OSS/Free soit chargé (vérifiez avec <tt>cat /proc/modules</tt>). Retirez le module, ou recompilez votre noyau (allez donc jeter un coup d'oeil au Kernel-HOWTO). <sect2> Vérifiez le réglage PnP <p> Êtes-vous sûr que votre carte son est activée ? Relisez donc le PnP-HOWTO, et vérifiez que votre carte son est correctement activée. <sect2> Vos paramètres sont-ils corrects ? <p> Vérifiez encore et toujours les paramètres de votre carte son. Et n'oubliez pas que 534 n'est pas la même chose que 543, pas plus que 0x534 et 534. <sect2> Essayez <tt/insmod/ <p> Il est parfois utile de commencer avec insmod au lieu de kerneld. Comme cela, vous pourrez peut-être voir un message d'erreur. <sect2> Lisez le fichier INSTALL. <p> Le fichier INSTALL du répertoire des gestionnaires contient beaucoup d'informations. Si votre gestionnaire ne fonctionne pas, regardez s'il n'y a pas d'informations complémentaires. <sect2> Messages de déboguage <p> En dernier ressort, vous pouvez recompiler les gestionnaires en leur indiquant d'envoyer des informations de déboguage dans /var/log/messages. Allez dans le répertoire des gestionnaires (<tt>cd /usr/src/alsa-driver-...</tt> et lancez : <tscreen><verb> ./configure --with-debug=detect; make clean; make </verb></tscreen> Retirez le gestionnaire (s'il est actif, voir plus bas pour une commande pratique). Puis relancez la commande "modprobe" que vous aviez utilisée précédemment, pour charger le gestionnaire fraîchement compilé. Allez voir dans /var/log/messages s'il y a des messages. <sect2> Si rien ne va plus... <p> Si ces messages ne peuvent vous aider, envoyez un message à la liste de diffusion des développeurs Alsa, <htmlurl url="mailto:alsa-devel@alsa.jcu.cz" name="alsa-devel@alsa.jcu.cz"> en précisant les informations suivantes : <itemize> <item/nom de votre carte son, ainsi que les noms des composants présents sur la carte ;/ <item/votre fichier isapnp.conf si vous avez des cartes sons PnP ;/ <item/votre fichier conf.modules ou la commande que vous utilisez pour activer les gestionnaires ALSA ;/ <item>tous les messages de /var/log/messages concernant les gestionnaires Alsa.;/item> </itemize> <sect1> Rapports de bugs <p> Si vous avez découvert un bug, les développeurs d'Alsa seraient heureux de connaître les informations suivantes (au minimum) : <enum> <item>versions de votre noyau et de vos gestionnaires : 'cat /proc/asound/version' ;</item> <item>informations sur la carte son ; <itemize> <item/nom de la carte son ;/ <item/liste des composants présents sur la carte ;/ <item>contenu de 'cat /proc/asound/cards' ;</item> </itemize></item> <item>tous les messages de /var/log/messages concernant les gestionnaires Alsa.;/item> <item/une description du problème./ </enum> <sect1> Astuce : utilisez les périphériques Alsa <p> Si vous aviez le support son sous Linux précédemment, vos applications se réfèrent probablement à /dev/pcm0, /dev/audio et /dev/mixer. C'est parfait si vous utilisez la compatibilité OSS à l'aide du module snd-pcm1-oss. Il serait mieux, cependant, d'utiliser les véritables périphériques Alsa, ceux de /dev/snd. <sect1> Astuce : retirer tous les modules <p> Retirer une dizaine de modules un par un est pénible. Heureusement, tous les modules commencent par le préfixe "snd-", et une petite ligne de commande fera l'affaire. Vous pouvez retirer facilement les modules Alsa à l'aide de la commande suivante : <tscreen><verb> cat /proc/modules|gawk '/^snd-/{print $1}|xargs -i rmmod {} </verb></tscreen> Note : si un module est dépendant d'un autre, il n'est pas possible de commencer par retirer le premier. Cela signifie qu'il se peut que vous deviez relancer la commande de retrait une deuxième fois (je n'ai cependant jamais recontré cette situation, il semble qu'il soit possible de retirer les modules Alsa dans l'ordre dans lequel ils apparaissent dans /proc/modules). </article>