Translation(s): English - Français - Italiano - Русский


Matériel > Son


ALSA 01-11-2015

ALSA, l'Advanced Linux Sound Architecture, est à la fois un projet et un ensemble de logiciels. Le projet a débuté parce que l'architecture OSS ne donnait pas techniquement entièrement satisfaction. De plus certains pilotes manquaient à la version libre d'OSS ; ils n'étaient disponibles que sur la version commerciale. Pendant plusieurs années, ALSA était un projet qui se développait distinctement de Linux. Les pilotes ont été ajoutés au noyau Linux à partir la série 2.5 et ALSA est devenu le système standard des pilotes audio depuis Linux 2.6.

ALSA n'est pas seulement un ensemble de pilotes pour le son, c'est aussi une bibliothèque API qui permet à des applications de gérer les dernières fonctionnalités des cartes son (par exemple, canaux audio multiples, Dolby AC3, etc.). ALSA fournit un soutien efficace pour de nombreuses applications, il est entièrement modulable et gère le SMP et thread-safe (multitraitement symétrique et traitement de plusieurs processus légers : Wikipedia).

Les applications écrites pour OSS peuvent fonctionner avec ALSA grâce à une émulation dans l'espace utilisateur (en utilisant le chargeur de programme aoss) ou une émulation dans l'espace noyau (les pilotes snd-*-oss). Toutefois, vous ne pouvez pas utiliser les pilotes ALSA et OSS en même temps.

NB : Les noms des pilotes ALSA commencent toujours par snd-.

Paquets

Chargement des modules

Les dernières versions des paquets alsa-base sont conçues pour fonctionner tout simplement. Le paquet alsa-base ne charge pas de modules. C'est plutôt udev qui détecte les branchements à chaud et les matériels de son et charge alors les bons modules, puis alsa-base paramètre les bons niveaux de mixage.

Configurer ALSA en exécutant la commande 'alsactl init' en tant que superutilisateur. Ignorez le message d'erreur comme 'Unknown hardware', 'matériel inconnu', (cette erreur devrait être corrigée dans la version .20 d'alsa-utils), puis redémarrez et essayez de tester votre son. Pour plus de détails, veuillez lire cette page.

Vous pouvez également essayer de détecter et de configurer votre carte son manuellement.

Vous pouvez aussi jeter un œil à ALSA's soundcard-Matrix pour savoir quel pilote doit être utilisé avec le chipset que vous avez trouvé.

ALSA et OSS

Si votre système est déjà configuré pour charger les pilotes OSS de votre carte son, alors vérifiez dans les fichiers de configuration du chargeur de modules quels sont les modules chargés. Dans le fichier /var/log/dmesg qui est un compte-rendu de l'initialisation, vous trouverez en particulier les chargements des pilotes de périphérique. Vous trouverez les entrées pour les modules OSS qui vous donneront des indices sur le chipset utilisé par vos cartes son.  N'oubliez pas de désactiver ces entrées avant de reconfigurer votre système pour charger les modules ALSA.

Si vous n'avez pas déchargé tous les modules OSS, les modules ALSA ne seront pas en mesure de s'initialiser (ou de fonctionner correctement) car le pilote OSS sera utilisé à la place du pilote ALSA. Si vous voyez un message "carte son non détectée" et que vous êtes sûr d'avoir le bon pilote ALSA, la présence d'un module OSS pourrait en être la raison.

Test

Tester le pilote, en utilisant aplay, MPlayer ou xmms par exemple.

Pour tester le MIDI, vous pouvez utiliser aplaymidi.

Partager plusieurs processus sur une même carte

On peut avoir besoin de partager, sur une même carte, plusieurs processus fonctionnant simultanément. Pour cela, il faut pouvoir mélanger les sorties sons de ces processus en un seul flux.

Si votre carte son bon marché ne supporte pas le mixage, essayez le plugin dmix. Il se paramètre automatiquement depuis la version 1.0.10-2 de libasound2 ; pour les versions antérieures, lisez /usr/share/doc/libasound2/examples/asound.conf_dmix ce fichier permet de voir comment activer DMIX dans le fichier /etc/asound.conf (pour tous les utilisateurs) ou ~.asoundrc (pour un simple utilisateur).

Un exemple de fichier .asoundrc pour un ordinateur portable moderne qui possède un HDMI et une simple carte son serait dans le désordre (utilisez au préalable la commande aplay -l pour obtenir les noms corrects pour vos cartes) :

defaults.pcm.!card Generic_1
defaults.ctl.!card Generic_1
defaults.pcm.!device 0
defaults.ctl.!device 0

Méthode alternative

Si votre carte son possède un chipset Realtek, et que vous n'obtenez aucun son, essayez la méthode suivante :

  1. Téléchargez le pilote Realtek HD Audio Codec. Allez dans la rubrique "Quick Links" de la page http://www.realtek.com.tw, acceptez les conditions d'utilisation (cliquez sur : I accept to the above), et ensuite téléchargez le pilote approprié pour Linux.

  2. Ouvrir le fichier téléchargé, puis l'extraire (par exemple, dans votre répertoire personnel), ensuite, ouvrir un terminal superutilisateur et compilez de façon classique.

./configure
make
make install

Remarque :

  1. Assurez-vous que vous avez déjà tout ce qu'il faut pour compiler (gcc, make, build-essential, linux-headers de votre noyau, etc.) avant d'exécuter le script d'installation ci-dessus.
  2. Si vous rencontrez des erreurs, lisez le fichier INSTALL et editez en conséquence les fichiers de configuration appropriés.

Dépannage

Pour voir quels index ont été affectés aux différentes cartes, tapez :

  cat /proc/asound/cards

La première carte que ALSA trouve reçoit, habituellement, l'index 0 et c'est donc en général la carte son par 'défaut'. Malheureusement, il arrive que la première carte son trouvée n'est pas un périphérique son capable de jouer les sons système. (Par ailleurs, une erreur du type "Unknown PCM default" pendant la lecture d'un son se produit si l'utilisateur n'est pas membre du groupe 'audio'. Tapez alors la commande suivante dans un terminal administrateur "adduser <username> audio", pour ajouter l'utilisateur au groupe audio, puis tapez la commande "newgrp" en tant qu'utilisateur).

Il y a deux façons de corriger ce problème.

1. Forcer le chargement des cartes dans un ordre différent. J'ai choisi cette voie et j'ai ajouté ce qui suit à mon fichier /etc/modprobe.d/sound :

  options snd-trident index = 0
  options snd-usb-audio index = 1

Cela oblige ma carte Trident à être le périphérique son par défaut (carte 0) et mon micro USB à être à l'index = 1.

2. Changer la carte par défaut en modifiant le fichier /etc/asound.conf ou ~/.asoundrc. Plus d'infos ici : Multiple Cards

Est-ce que le redémarrage contourne le BIOS et le menu de GRUB ? Cela peut venir de kexec-tools. Il permet de contourner le BIOS pendant le redémarrage et empêche l'initialisation correcte de certains périphériques. En tant que superutilisateur, modifiez le fichier /etc/default/kexec et mettez à jour LOAD_KEXEC avec la valeur :

LOAD_KEXEC=false 

Cela permettra au BIOS d'initialiser correctement le son et d'autres périphériques à chaque démarrage.

Liste de vérification

Version

Rechercher dans /proc/asound/version.

Outils

ALSA apporte également des outils permettant d'effectuer plusieurs tâches :

Plus d'informations

Pour plus d'informations, lisez les fichiers README.Debian dans les paquets alsa-base et alsa-source ou consultez http://www.alsa-project.org et http://alsa.opensrc.org.

Voir aussi: AlsaMidi.

Nouveautés :

Lien ancien


CategorySound CategoryFrHardware