Pensez à lire la FAQ dans le répertoire des gestionnaires sonores. Cette section est toujours en construction.
Si vous n'arrivez pas à compiler vos gestionnaires ALSA, avec des messages
d'erreur mentionnant «version.h» ou d'autres fichiers d'en-têtes non trouvés,
cela peut signifier que vous n'avez pas les fichiers d'en-têtes du noyau.
Allez consulter le kernel-HOWTO, décompactez un noyau récent dans /usr/src
et lancez make config
.
Pensez à vérifier les points suivants :
Êtes vous certain que votre carte EST supportée ? Vérifiez encore. Il arrive qu'un modèle X123 ne soit pas exactement un modèle X123b, et vous perdrez votre temps. D'un autre côté, même une carte supportée peut vous poser problème - il m'a fallu deux heures pour installer une carte CS4237B, ce qui, après tout, n'était qu'un excellent cas de RTFM.
Il se peut que vous ayez un noyau 2.0.x avec le support son intégré, ou que le
gestionnaire OSS/Lite (celui du noyau) soit chargé (vérifiez par
cat /proc/modules
). Retirez le gestionnaire ou recompilez le noyau
(reportez-vous au Kernel-HOWTO).
Le module son des noyaux 2.0 est nommé «sound.o» et ne doit pas être actif (contrairement au gestionnaire ALSA «snd.o», bien entendu).
Si vous avez un noyau 2.2.x sans support son, les gestionnaires ALSA ne fonctionneront pas non plus.
Je sais que c'est un peu confus, mais laissez-moi expliquer une fois de plus. Si vous avez un noyau 2.0.x (la commande «uname -a» renvoyant quelque chose du genre «Linux pingouin 2.0.35 #6 Wed Sep 23 10:19:16 CEST 1998 i686 unknown») alors vous devez désactiver tout support son dans le noyau.
Si vous avez un noyau 2.2.x vous avez besoin du support son. Un noyau 2.2 doit être compilé avec le support son, mais sans le moindre gestionnaire de carte son. Il vous faut donc choisir le support son et vérifier qu'aucun autre gestionnaire spécifique n'est compilé.
Une autre raison pour laquelle le gestionnaire se plaint que le périphérique est occupé peut être que le fichier /etc/conf.modules référence encore les anciens gestionnaires. Vous devriez effacer ces références et ne laisser que des références aux gestionnaires ALSA (bien sûr, laissez les gestionnaires non sonores tels quels).
Une autre cause des messages «symboles non résolus» peut être un noyau plus récent que les gestionnaires. Assurez-vous de recompiler les gestionnaires ALSA après chaque changement de noyau, de façon à être certain d'avoir des gestionnaires correspondant à votre noyau.
Ê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.
Vérifiez encore et toujours les paramètres de votre carte son. N'oubliez pas que 534 n'est pas la même chose que 543, pas plus que 0x534 n'est 534.
Pensez également que certaines cartes doivent être chargées avec un nom différent de celui supposé. Faites une pause, allez boire une bière ou toute autre boisson, et vérifiez encore votre commande «modprobe». Par exemple, le gestionnaire Crystal 4232 doit être inséré par «modprobe snd-cs4232», pas «snd-cs4231», et que celui de la SoundBlaster PCI64 se nomme «snd-audiopci», pas «snd-es1370» (tout est dans la documentation, et bien que je sois l'auteur du HOWTO, il m'est arrivé de passer une soirée à essayer de faire jouer du son à snd-cs4231).
Les gestionnaires ALSA exploitent les possibilités de «sourdine» dont disposent la plupart des cartes son. Si vous avez chargé les gestionnaires impeccablement mais qu'ils s'obstinent à rester silencieux, vous avez probablement oublié de désactiver la sourdine. Il vous faut «amixer» ou «alsamixer» pour cela, tous deux présents dans le paquetage alsa-utils. Un simple
amixer -c 1 master 70:70 unmute
amixer -c 1 pcm 70:70 unmute
amixer -c 1 cd 70:70 unmute
devrait suffire à la plupart des applications.La plupart des cartes son ont un réglage de mixer supplémentaire pour amplifier le son en entrée ou en sortie. Ce réglage est communément appelé «gain», «in-gain» pour l'entrée et «out-gain» pour la sortie. Agir sur ce réglage vous aidera beaucoup à obtenir le niveau sonore maximum de vos haut-parleurs (mais pensez à vos parents, voisins et à vos oreilles tout de même). Une commande comme
amixer out-gain 100 unmute
pourra probablement rendre service.S'il s'agit de votre première utilisation des gestionnaires ALSA, vous
souhaiterez probablement utiliser le support son exactement comme vous le
faisiez avant, (i.e. à l'aide des gestionnaires /dev/pcmX). Il vous faut pour
cela le gestionnaire de compatibilité OSS. Faites un modprobe snd-pcm1-oss
(reportez-vous à la fin de la section pour le chargement des modules).
Veuillez noter que snd-pcm1-oss est différent de snd-pcm1, vous avez
réellement besoin de snd-pcm1-oss pour le support à l'ancienne.
Si vous avez essayé d'installer plusieurs versions différentes d'ALSA, il arrive que le mixer ne puisse plus être utilisé. Cela se produit quand vous avez installé ALSA 0.3.2 puis êtes revenu à ALSA 0.3.0-pre4 (si ma mémoire est bonne). Dans ce cas, effacez tous les fichiers libasound et les liens dans /usr/lib et recompiler les bibliothèques et les utilitaires :
rm /usr/lib/libasound.*
Pour être vraiment tranquille, effacez tous les gestionnaires ALSA ensuite,
puis recompilez et réinstallez les gestionnaires.Il est parfois utile de commencer avec insmod au lieu de kerneld. Comme ça, vous pourrez peut-être voir un message d'erreur.
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.
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 (cd /usr/src/alsa-driver-...
et lancez :
./configure --with-debug=detect; make clean; make
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.
Si ces messages ne peuvent vous aider, envoyez un message à la liste de diffusion des développeurs ALSA, alsa-devel@alsa-project.org en précisant les informations suivantes :
Si vous avez découvert un bug, les développeurs d'ALSA seraient heureux de connaître les informations suivantes (au minimum) :
Si vous utilisez kmod ou kerneld et les gestionnaires ALSA pour jouer des CD audio, ni kmod ni kerneld ne vont probablement charger les gestionnaires comme attendu. Cela est dû au fait que les lecteurs CD en ligne de commande ne font que demander au lecteur de cd-rom de lancer la lecture audio, sans utiliser les périphériques sonores qui pourraient indiquer à kmod ou kerneld qu'une sortie son va avoir lieu. L'utilisation de modprobe sera probablement votre seule solution à ce problème.
Normalement, le port série est géré par le gestionnaire série standard. Avant de pouvoir faire «modprobe snd-serial» il vous faut demander au gestionnaire de ne plus s'occuper du port série.
Voici comment faire :
setserial /dev/ttyS0 none
modprobe snd-serial
(en remplaçant /dev/ttyS0 par le gestionnaire /dev/ttySx correspondant à votre périphérique MIDI).
Après chaque mise à jour de votre noyau, vous devrez probablement recompiler
les gestionnaires ALSA. S'ils se trouvent toujours dans le répertoire /usr/src,
n'oubliez pas de lancer un make clean
avant de refaire la séquence
./configure, make, make install.
Oh, et il ya aussi ce problème de numérotation : le noyau «2.2.0ac1» est vu comme un «not a number» (pas un nombre) par le script configure. Il me semble que cela a été résolu dans les scripts plus récents, sinon vous pouvez peut-être modifier le numéro de version du noyau dans les sources.
Supposons que vous avez une installation de KDE en état de marche, mais que vous n'arrivez pas à faire fonctionner les sons système, comme pour l'ouverture des fenêtres, les changements de bureaux, etc. Le son fonctionne en général. Si votre lecteur de CD audio et votre lecteur mp3 fonctionnent, cela est probablement dû au fait que «kwmsound» est manquant.
Solution : vérifiez que "kwmsound" figure dans votre script de démarrage ($KDEDIR/bin/startkde)
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.
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 :
cat /proc/modules|gawk '/^snd-/{print $1}|xargs -i rmmod {}
Juergen Kahrs ajoute : «J'ai écrit un script qui retire également soundcore et soundlow s'ils sont présents et que le son n'est plus utilisé. Ce script traite trois fois /proc/modules afin de ne pas laisser traîner trop de modules.» Cette solution est :
awk '/^snd/||/^sound/&&($3==0){system("rmmod " $1)}' /proc/modules /proc/modules /proc/modules
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 rencontré cette situation, il semble qu'il soit possible de retirer les modules ALSA dans l'ordre dans lequel ils apparaissent dans /proc/modules).