Page suivante Page précédente Table des matières

6. Astuces et dépannage

Pensez à lire la FAQ dans le répertoire des gestionnaires sonores. Cette section est toujours en construction.

6.1 Compilation des gestionnaires

Arborescence des sources du noyau

Si vos gestionnaires ALSA ne compilent pas correctement, avec des messages d'erreur mentionnant ``version.h'' ou d'autres fichiers d'en-tête non trouvés, cela peut signifier que vous n'avez pas les fichiers d'en-tête du noyau. Allez consulter le kernel-HOWTO, décompactez un noyau récent dans /usr/src et lancez make config.

6.2 Chargement des gestionnaires

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 le gestionnaire OSS/Lite (celui du noyau) 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é.

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).

6.3 Gestionnaire chargé... mais aucun son

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.

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.

6.4 Quelques suggestions

Essayez ``insmod''

Il est parfois utile de commencer avec insmod au lieu de kerneld. Comme cela, 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 :

6.5 Rapports de bugs

Si vous avez découvert un bug, les développeurs d'ALSA seraient heureux de connaître les informations suivantes (au minimum) :

  1. versions de votre noyau et de vos gestionnaires : 'cat /proc/asound/version' ;
  2. informations sur la carte son ;
  3. tous les messages de /var/log/messages concernant les gestionnaires ALSA.;/item>
  4. une description du problème.

6.6 Astuce : jouer des CD audio

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.

6.7 Astuce : installation du gestionnaire série MIDI

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).

6.8 Astuce : à nouveau noyau, nouveaux modules !

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.

6.9 Astuce : KDE et les gestionnaires ALSA

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)

6.10 Astuce : utilisez les périphériques ALSA

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.

6.11 Astuce : retirer tous les modules

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 recontré cette situation, il semble qu'il soit possible de retirer les modules ALSA dans l'ordre dans lequel ils apparaissent dans /proc/modules).


Page suivante Page précédente Table des matières