Historique: Alsa - vérifications avant de commencer
Aperçu de cette version: 31
ALSA Premiers Pas et comment vérifier que tout est fonctionnel et configurer ses logiciels
Vérifiez que les modules d'ALSA (drivers) nécessaires sont bien chargés à l'aide de la commande "lsmod". Le cas échéant, chargez-les avec la commande "modprobe". Ainsi, par exemple, pour une SoundBlaster 16, la page d'ALSA indique que le module "sb16" sera nécessaire. Si vous le souhaitez, vous pouvez également redémarrer pour vous assurer que tout est correctement chargé au démarrage de la machine (notez les éventuels messages d'erreur).
Le répertoire /proc/asound contient différentes informations concernant votre carte son. La seule présence de ce répertoire indique déjà que le support ALSA est fonctionnel, fusse-t-il sous forme de modules (à présent chargés) ou intégré au noyau.
Bien que certaines cartes sons disposent d'un mixeur spécifique sous Linux, la commande alsamixer est une interface console qui vous permet d'accéder à la table de mixage de votre carte son. Cette commande fait partie des utilitaires ALSA. Les canaux sont en général mutés par défaut, il convient donc de lancer alsamixer au moins une fois pour corriger ça :
Dans cette capture, constaterez que le canal "Master M" (Master Mono) par exemple est muté (lettres "MM").
L'interface n'est pas très jolie mais permet de monter les niveaux des différentes sorties et également de déclarer "non muté" les canaux qui sont souvent mutés par défaut. Par cet interface on appuie sur M sur chaque sortie pour la déclarer "non muté".
Une fois cette commande lancée vous pouvez lancer alsactl (en mode Root) qui enregistre les niveaux réglés :
(note: on peut utiliser "alsactl restore" pour recharger les niveaux)
En général le script d'initialisation et d'extinction de votre Linux (/etc/init.d/alsa) se charge de lancer alsactl pour vous.
Branchez par exemple un clavier MIDI, puis entrez la commande suivante dans un terminal :
Jouer sur le clavier produira alors l'affichage de caractères "cabalistiques" dans le terminal.
Un p'tit "ls" dans le répertoire permettra d'en savoir un peu plus
Exemple (même configuration qu'au dessus) :
Enfin un "lsmod" apportera encore quelques renseignements :
Attention la majorité des logiciels MIDI nécessitent le module snd-seq-midi, vérifiez qu'il est bien présent.
Êtes-vous sûr d'avoir suivi la bonne recette ?
Plus sérieusement, voici quelques pistes à suivre, issues des demandes et des problèmes les plus fréquemment rencontrés. Le cas échéant, vous pouvez toujours poser votre problème dans le forum, en précisant bien toutes les informations utiles (distribution, matériel, liste des modules chargés, etc.). Si vous trouvez votre bonheur, vous reviendrez ensuite compléter la présente page 😉.
Pour un périphérique usb, n'oubliez pas de vérifier la présence du module "snd-usb-audio".
Attention: la majorité des logiciels MIDI nécessitent le module snd-seq-midi, vérifiez qu'il est bien présent, surtout si en lançant un programme (ex : Rosegarden) dans un terminal vous avez un message d'erreur du type : "ALSA lib seq_hw.c:457:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory". Pour le charger, utiliser en tant que "root" la commande suivante (faites-la précéder de sudo sous Ubuntu) :
Commencez donc par vérifier un par un le bon fonctionnement de chaque périphérique audio en désactivant (BIOS pour le circuit intégré par exemple) ou en débranchant les autres. Ensuite, il faudra modifier le fichier "/etc/modules.conf" (ou équivalent selon votre distribution) pour indiquer au système l'ordre des périphériques. Vous pouvez consulter :
Attention: pour des raisons de licences, certaines distributions ne proposent pas de version pré-compilée d'alsa-firmware. Il vous faudra donc avoir recours à l'installation manuelle de celui-ci. Dans ce cas, assurez-vous de bien avoir la même version pour chaque composant d'ALSA (alsa-tools, etc...). L'installation d'alsa-firmware requiert l'installation préalable d'alsa-tools.
Quelques liens pour plus d'informations :
Variante : afficher les 20 dernières lignes du fichier /var/log/message avec poursuite (= si de nouveaux logs arrivent, l'affichage sera mis à jour). Utile pour suivre les logs lors du branchement à chaud d'un périphérique :
Il est possible de rendre certains périphériques beaucoup plus "bavards" en activant les bonnes options dans le noyau. Par exemple, pour les périphériques usb, activer "USB verbose debug messages". Cette possibilité ne doit être utiliser que pour du "debuggage" et doit ensuite être désactivée pour éviter d'alourdir trop fortement les fichiers de "log" !
Charger un module :
Utilisez le complètement automatique à l'aide de la touche "TABULATION". Par exemple, pour avoir la liste des modules son chargeables (snd-***) utiliser :
Pour permettre le chargement automatique d'un module au démarrage, placer son nom (snd-seq-midi par exemple) dans le fichier :
Décharger un module :
La commande suivante permet de lister les IRQ afin de vérifier que plusieurs modules de partagent pas la même :
A l'heure actuelle tous les logiciels à peu près intéressants supportent ALSA. On peut avoir à choisir le 'device' de sortie. En général il s'agit de 'hw:0,0' qui correspond à hardware:0,0 soit en comptant de zéro la première carte et son premier sous-ensemble. A ce titre en effet il arrive qu'une carte ait plusieurs chipsets audio intégré, c'est le cas par exemple des cartes son Ice1712/Envy24 qui dispose d'un circuit "pro" et d'un circuit "consummer".
Il est aussi possible d'accéder non pas directement à la sortie de la carte son mais à une sorte de couche logicielle intermédiaire comme nous le verrons tout à la fin avec le fichier asound.conf. La plus courante de ces sorties "virtuelles" est 'plughw:0,0', plughw est un Plugin qui adapte la sortie lorsque la carte son ne supporte pas certains formats (par exemple l'audio en 24bit).
Pour certains logiciels voici comment régler la sortie :
Table des matières
1. Première utilisation
Vous avez correctement installé ALSA, et tout configuré comme il faut. Bien, on approche du but 😀.Vérifiez que les modules d'ALSA (drivers) nécessaires sont bien chargés à l'aide de la commande "lsmod". Le cas échéant, chargez-les avec la commande "modprobe". Ainsi, par exemple, pour une SoundBlaster 16, la page d'ALSA indique que le module "sb16" sera nécessaire. Si vous le souhaitez, vous pouvez également redémarrer pour vous assurer que tout est correctement chargé au démarrage de la machine (notez les éventuels messages d'erreur).
Le répertoire /proc/asound contient différentes informations concernant votre carte son. La seule présence de ce répertoire indique déjà que le support ALSA est fonctionnel, fusse-t-il sous forme de modules (à présent chargés) ou intégré au noyau.
Bien que certaines cartes sons disposent d'un mixeur spécifique sous Linux, la commande alsamixer est une interface console qui vous permet d'accéder à la table de mixage de votre carte son. Cette commande fait partie des utilitaires ALSA. Les canaux sont en général mutés par défaut, il convient donc de lancer alsamixer au moins une fois pour corriger ça :
$ alsamixer
Dans cette capture, constaterez que le canal "Master M" (Master Mono) par exemple est muté (lettres "MM").
L'interface n'est pas très jolie mais permet de monter les niveaux des différentes sorties et également de déclarer "non muté" les canaux qui sont souvent mutés par défaut. Par cet interface on appuie sur M sur chaque sortie pour la déclarer "non muté".
Une fois cette commande lancée vous pouvez lancer alsactl (en mode Root) qui enregistre les niveaux réglés :
# alsactl store
(note: on peut utiliser "alsactl restore" pour recharger les niveaux)
En général le script d'initialisation et d'extinction de votre Linux (/etc/init.d/alsa) se charge de lancer alsactl pour vous.
1.1. Tester un périphérique MIDI
Il existe une façon simple de tester qu'un périphérique MIDI fonctionne correctement en ligne de commande.Branchez par exemple un clavier MIDI, puis entrez la commande suivante dans un terminal :
$ cat /dev/snd/midiC0D0
Jouer sur le clavier produira alors l'affichage de caractères "cabalistiques" dans le terminal.
1.2. Tester l'Audio et le support des périphériques MIDI
La commande "cat" suivante permettra de savoir quelle carte son et/ou interface MIDI est connectée. Exemple avec une carte son intégrée et 2 ports MIDI (Port Manette de jeux / MIDI et Usb) :$ cat /proc/asound/cards
0 [nForce2 ]: NFORCE - NVidia nForce2
NVidia nForce2 with ALC650F at 0xed080000, irq 185
1 [UART ]: MPU-401 UART - MPU-401 UART
MPU-401 UART at 0x330, irq 10
2 [U0x71040x2202 ]: USB-Audio - USB Device 0x7104:0x2202
USB Device 0x7104:0x2202 at usb-0000:00:02.1-2, full speedUn p'tit "ls" dans le répertoire permettra d'en savoir un peu plus
Exemple (même configuration qu'au dessus) :
$ ls -l /dev/snd/
crw-rw---- 1 root audio 116, 0 2006-08-29 20:55 controlC0
crw-rw---- 1 root audio 116, 32 2006-08-29 20:55 controlC1
crw-rw---- 1 root audio 116, 64 2006-08-29 22:03 controlC2
crw-rw---- 1 root audio 116, 40 2006-08-29 20:55 midiC1D0
crw-rw---- 1 root audio 116, 72 2006-08-29 22:03 midiC2D0
crw-rw---- 1 root audio 116, 24 2006-08-29 20:55 pcmC0D0c
crw-rw---- 1 root audio 116, 16 2006-08-29 18:55 pcmC0D0p
crw-rw---- 1 root audio 116, 25 2006-08-29 20:55 pcmC0D1c
crw-rw---- 1 root audio 116, 18 2006-08-29 20:55 pcmC0D2p
crw-rw---- 1 root audio 116, 33 2006-08-29 20:55 timer
crw-rw---- 1 root audio 116, 0 2006-08-29 20:55 controlC0
crw-rw---- 1 root audio 116, 32 2006-08-29 20:55 controlC1
crw-rw---- 1 root audio 116, 64 2006-08-29 22:03 controlC2
crw-rw---- 1 root audio 116, 40 2006-08-29 20:55 midiC1D0
crw-rw---- 1 root audio 116, 72 2006-08-29 22:03 midiC2D0
crw-rw---- 1 root audio 116, 24 2006-08-29 20:55 pcmC0D0c
crw-rw---- 1 root audio 116, 16 2006-08-29 18:55 pcmC0D0p
crw-rw---- 1 root audio 116, 25 2006-08-29 20:55 pcmC0D1c
crw-rw---- 1 root audio 116, 18 2006-08-29 20:55 pcmC0D2p
crw-rw---- 1 root audio 116, 33 2006-08-29 20:55 timer
Enfin un "lsmod" apportera encore quelques renseignements :
$ lsmod|grep 'midi'
snd_rawmidi 23328 2 snd_usb_lib,snd_mpu401_uart
snd_seq_device 8204 1 snd_rawmidi
snd 50276 14 snd_usb_audio,snd_hwdep,snd_mpu401,snd_mpu401_uart,snd_rawmidi,snd_seq_device,
snd_intel8x0,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timerAttention la majorité des logiciels MIDI nécessitent le module snd-seq-midi, vérifiez qu'il est bien présent.
2. Ça marche pô, le flan est foutu
Êtes-vous sûr d'avoir suivi la bonne recette ?
Plus sérieusement, voici quelques pistes à suivre, issues des demandes et des problèmes les plus fréquemment rencontrés. Le cas échéant, vous pouvez toujours poser votre problème dans le forum, en précisant bien toutes les informations utiles (distribution, matériel, liste des modules chargés, etc.). Si vous trouvez votre bonheur, vous reviendrez ensuite compléter la présente page 😉.
2.1. Vérifications les réglages de volume :
Utilisez alsamixer ou gamix pour vérifier vos niveaux sons, car la première fois ils peuvent être mutés ou à zéro (voir paragraphe ci-dessus).2.2. Modules
Vous devez regarder si les modules (=drivers) de votre/vos carte(s) son sont bien chargés. Consultez la page http://www.alsa-project.org/alsa-doc/ pour déterminer la liste des modules nécessaires à votre matériel et utilisez la commande "lsmod" pour lister les modules chargés.Pour un périphérique usb, n'oubliez pas de vérifier la présence du module "snd-usb-audio".
Attention: la majorité des logiciels MIDI nécessitent le module snd-seq-midi, vérifiez qu'il est bien présent, surtout si en lançant un programme (ex : Rosegarden) dans un terminal vous avez un message d'erreur du type : "ALSA lib seq_hw.c:457:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory". Pour le charger, utiliser en tant que "root" la commande suivante (faites-la précéder de sudo sous Ubuntu) :
# modprobe snd-seq-midi
2.3. Présence de plusieurs périphériques audio
Il arrive fréquemment que les outils de reconnaissance automatique se mélangent les pinceaux en présence simultanée de plusieurs périphériques audio, ou que le périphérique défini par défaut ne soit pas celui que vous voulez. Il se pourrait par exemple qu'un circuit son intégré à la carte mère soit configuré comme "carte par défaut" à la place de celle que vous voulez utiliser. Des problèmes peuvent aussi survenir avec des périphériques non permanents (usb par exemple). N'oubliez pas qu'ALSA prend en charge tous les périphériques audio (interfaces MIDI par exemple) et pas seulement les "cartes son".Commencez donc par vérifier un par un le bon fonctionnement de chaque périphérique audio en désactivant (BIOS pour le circuit intégré par exemple) ou en débranchant les autres. Ensuite, il faudra modifier le fichier "/etc/modules.conf" (ou équivalent selon votre distribution) pour indiquer au système l'ordre des périphériques. Vous pouvez consulter :
- La page ALSA_MultiCartes
- ce fil pour Ubuntu.
2.4. Firmware
Un certain nombre de cartes son (cartes echo par exemple) nécessitent le chargement d'un firmware pour fonctionner. Si c'est le cas, celui-ci sera fourni par l'installation du paquet "alsa-firmware". Vérifiez donc que ce paquet est bien installé et le firmware chargé, faute de quoi votre carte ne pourra fonctionner correctement, et vous obtiendrez dans le fichier "/var/log/messages" des lignes du type : "Echoaudio Mia: probe of 0000:05:07.0 failed with error -2"Attention: pour des raisons de licences, certaines distributions ne proposent pas de version pré-compilée d'alsa-firmware. Il vous faudra donc avoir recours à l'installation manuelle de celui-ci. Dans ce cas, assurez-vous de bien avoir la même version pour chaque composant d'ALSA (alsa-tools, etc...). L'installation d'alsa-firmware requiert l'installation préalable d'alsa-tools.
Quelques liens pour plus d'informations :
- les pages ALSA_Installation et Alsa_Matos
- Ce fil du forum
2.5. Commandes utiles
2.5.1. dmesg
Afficher les messages d'erreur du système :$ dmesg
Variante : afficher les 20 dernières lignes du fichier /var/log/message avec poursuite (= si de nouveaux logs arrivent, l'affichage sera mis à jour). Utile pour suivre les logs lors du branchement à chaud d'un périphérique :
# tail -n 20 -f /var/log/messages
Il est possible de rendre certains périphériques beaucoup plus "bavards" en activant les bonnes options dans le noyau. Par exemple, pour les périphériques usb, activer "USB verbose debug messages". Cette possibilité ne doit être utiliser que pour du "debuggage" et doit ensuite être désactivée pour éviter d'alourdir trop fortement les fichiers de "log" !
2.5.2. lspci
Afficher la liste des périphériques audio (reconnaissance du matériel) :# lspci -v | grep -i audio
2.5.3. Modules
Afficher la liste des modules/drivers son chargés :$ lsmod | grep snd
Charger un module :
# modprobe nom_du_module
Utilisez le complètement automatique à l'aide de la touche "TABULATION". Par exemple, pour avoir la liste des modules son chargeables (snd-***) utiliser :
# modprobe snd- [TABULATION] [TABULATION]
Pour permettre le chargement automatique d'un module au démarrage, placer son nom (snd-seq-midi par exemple) dans le fichier :
- Pour Gentoo : "/etc/modules.autoload.d/kernel-2.6" pour les kernels 2.6, et "/etc/modules.autoload.d/kernel-2.4" pour les kernels 2.4. Faire suivre les modifications de la commande "update-modules"
- /etc/modules pour Ubuntu, Debian et cie (quelqu'un peut confirmer ?)
- pour Mandriva : /etc/modules.conf pour les kernels 2.4, /etc/modprobe.conf pour les kernels 2.6. Et pour les modules à charger proritairement au démarrage : /etc/modprobe.preload.
Décharger un module :
# rmmod nom_du_module
2.5.4. Vérifier la présence de conflits d'IRQ
La commande suivante permet de lister les IRQ afin de vérifier que plusieurs modules de partagent pas la même :
$ cat /proc/interrupts
3. Utilisation d'ALSA dans les logiciels
A l'heure actuelle tous les logiciels à peu près intéressants supportent ALSA. On peut avoir à choisir le 'device' de sortie. En général il s'agit de 'hw:0,0' qui correspond à hardware:0,0 soit en comptant de zéro la première carte et son premier sous-ensemble. A ce titre en effet il arrive qu'une carte ait plusieurs chipsets audio intégré, c'est le cas par exemple des cartes son Ice1712/Envy24 qui dispose d'un circuit "pro" et d'un circuit "consummer".
Il est aussi possible d'accéder non pas directement à la sortie de la carte son mais à une sorte de couche logicielle intermédiaire comme nous le verrons tout à la fin avec le fichier asound.conf. La plus courante de ces sorties "virtuelles" est 'plughw:0,0', plughw est un Plugin qui adapte la sortie lorsque la carte son ne supporte pas certains formats (par exemple l'audio en 24bit).
Pour certains logiciels voici comment régler la sortie :
- Dans XMMS faire CONTROL P et régler la sortie sur ALSA