Pensez à lire la FAQ dans le répertoire des gestionnaires sonores. Cette section
est toujours en construction.
Arborescence des sources du noyau
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 :
Compatibilité des cartes son
Ê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.
«Périphérique ou ressource occupée» (device busy) ou «symboles non résolus»(unresolved symbols)
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.
Noyaux 2.0.x
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.
Noyaux 2.2.x
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é.
Références à d'autres gestionnaires
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).
Symboles non résolus, deuxième
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.
Vérifiez le réglage PnP
Ê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.
Vos paramètres sont-ils corrects ?
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).
La sourdine
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.
Amplification
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.
Compatibilité avec OSS/Linux
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.
Impossible d'accéder au mixer
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.
Essayez «insmod»
Il est parfois utile de commencer avec insmod au lieu de kerneld. Comme ça,
vous pourrez peut-être voir un message d'erreur.
Lisez le fichier INSTALL
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.
Messages de déboguage
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 rien ne va plus...
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 :
- nom de votre carte son, ainsi que les noms des composants présents sur la carte ;
- les sections appropriées de votre fichier isapnp.conf si vous avez des cartes sons PnP ;
- votre fichier conf.modules ou la commande que vous utilisez pour activer
les gestionnaires ALSA ;
- tous les messages de /var/log/messages concernant les gestionnaires ALSA.
Si vous avez découvert un bug, les développeurs d'ALSA seraient heureux de
connaître les informations suivantes (au minimum) :
- versions de votre noyau et de vos gestionnaires : 'cat /proc/asound/version' ;
- informations sur la carte son :
- nom de la carte son ;
- liste des composants présents sur la carte ;
- contenu de 'cat /proc/asound/cards' ;
- tous les messages de /var/log/messages concernant les gestionnaires
ALSA ;
- une description du problème.
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).
|