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

7. Astuces et dépannage

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

7.1 Compilation des gestionnaires

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.

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

7.3 Gestionnaire chargé... mais aucun son (ou à peine audible)

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.

7.4 Quelques suggestions

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 :

7.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 ;
  4. une description du problème.

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

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

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

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

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

7.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 rencontré 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