Configuration d'une sortie son NUMERIQUE avec XBMC
Les sorties sons numeriques sont souvent sources de problèmes sous linux. Alors que pour une sortie classique il suffit généralement de brancher les hauts parleurs sur la carte son et d'écouter, le fait d'utiliser une sortie optique reliée à ; votre ampli nécessite souvent quelques manipulations et surtout beaucoup de recherches sur internet.
L'objectif ici est donc de vous expliquer de manière synthétique comment faire marcher une sortie son optique avec xbmc sous linux (ubuntu). Cet article peut plus généralement servir de base pour faire fonctionner une sortie son sous ubuntu. Nous irons seulement un peu plus loin pour la rendre compatible avec xbmc en créant un fichier .asoundrc qui vous simplifiera grandement la vie lorsque vous désirerez configurer votre sortie son, et ce pour la plupart des applications.
Attention! Pour suivre ce tutoriel, vous devez avoir le pilote ALSA installé sur votre machine. Il l'est par défaut sous Ubuntu mais si ce n'est pas le cas reportez vous aux liens en bas de page.
A noter : l'ensemble des commandes qui sont indiquées ici utilise l'editeur de texte shell "nano" qui peut etre remplacer par "gedit" si vous êtes sous GNOME ou "mousepad" si vous êtes sous XFCE
Partie 1 : Configuration simplifiée.Pour information la dénomination IEC958 correspond aux sorties optique et/ou numérique RCA
le HDMI reste nommé tel quel pour sa dénomination sous Linux
Pour commencer il faut activer la sortie IEC958 qui par défaut est désactivée:
alsamixer
se deplacer sur la droite jusqu'à trouver le ou les sorties IEC958
S'il y a "MM" (mute=désactivé), tape m pour obtenir "00" (activé).
Il est possible de faire la même manip graphiquement sous gnome depuis le contrôleur de volume
Pour être sûr que les paramètres soit bien sauvegardés on peu faire:
sudo alsactl store 1
ATTENTION: sous Ubuntu 9.04 il y a un bug qui peut être contourné de cette manière:sudo nano /etc/modprobe.d/alsa-base.conf
rajouter une des 3 lignes ci dessous qui correspond a votre materiel
options snd-hda-intel model=6stack-dig
options snd-hda-nvidia model=6stack-dig
options snd-hda-ati model=6stack-dig
Partie 2 : Redirection du son sur la bonne sortie
Nous allons pouvoir passer à ; la seconde partie de cet exposé qui sera de créer un fichier afin de faciliter la prise en compte du SPDIF par vos applications, et plus spécifiquement par Xbmc.
- pour activer la sortie SPDIF il faut créer ce fichier :
sudo nano /etc/asound.conf
et d'y rajouter :
pcm.!default {
type plug
slave {
pcm "iec958"
}
}
ou
- pour activer la sortie HDMI il faut créer ce fichier :
sudo nano /etc/asound.conf
et d'y rajouter :
pcm.!default {
type plug
slave {
pcm "hdmi"
}
}
Partie 3 :Configuration de XBMC, enfin!Maintenant que votre asound (ou .asoundrc) est correctement configuré vous allez pouvoir configurer le son sur Xbmc. Pour cela allez dans /Settings/System/Audio Hardware.
Les paramètres par défaut "Digital" sont prets pour le son en optique
il suffit de mettre "hdmi" à la place de "iec958" en peripherique de sortie utiliser cette derniere
par contre avec certaine carte mère DTS et AC3 décochés pour que ça marche
En cas d'utilisation du fichier .asoundrc (voir config avancée) dans Audio Output Device tapez SPDIF ou e nom que vous avez mis dans ce fichier.
Vous avez désormais votre sortie son optique configurée pour Xbmc! Profitez!
Si cela ne marche pas vous pouvez rentrer plus dans le detail avec la partie 4!
Partie 4 : Configuration avancée.Pour commencer il faut connaître exactement quelle sortie son on veut utiliser et surtout comment elle est reconnue. Il faut donc taper dans une console (généralement Applications/Accessoires/Terminal) :
aplay -l
Ce qui donne quelque chose comme :
**** Liste des PLAYBACK périphériques ****
carte; 0: ICH5 [Intel ICH5], périphérique 0 : Intel ICH [Intel ICH5]
; Sous-périphériques: 1/1
; Sous-périphérique: #0: subdevice #0
carte; 0: ICH5 [Intel ICH5], périphérique 4 : Intel ICH - IEC958 [Intel ICH5 - IEC958]
; Sous-périphériques: 1/1
; Sous-périphérique: #0: subdevice #0
carte; 1: External [SB Live! 24-bit External], périphérique 0 : USB Audio [USB Audio]
; Sous-périphériques: 0/1
; Sous-périphérique: #0: subdevice #0
; 2: Modem [Intel ICH5 Modem], périphérique 0 : Intel ICH - Modem [Intel ICH5 Modem - Modem]
; Sous-périphériques: 0/1
; Sous-périphérique: #0: subdevice #0
Petite explication : dans cet exemple j'utilise une carte son SB Live! externe, je n'ai pas à ; me préoccuper de savoir si le son sort en SPDIF ou pas ; je dois juste rediriger le son vers cette sortie. Identifions là , il s'agit de ces lignes :
carte; 1: External [SB Live! 24-bit External], périphérique 0 : USB Audio [USB Audio]
; Sous-périphériques: 0/1
; Sous-périphérique: #0: subdevice #0
Dans ces lignes les informations importantes sont le numéro de la carte, ici c'est la carte 1, et le numéro du périphérique ici le périphérique 0. Une convention veut que pour définir cette sortie on utilise une ligne du type « hw=carte.périphérique »; ce qui nous donne dans cet exemple :
hw=1.0
Un autre exemple plus simple de sortie optique sur un autre pc avec une autre carte son (en gras la sortie optique) :
**** Liste des PLAYBACK périphériques ****
carte; 0: M5461 [HDA ULI M5461], périphérique 0 : ALC880 Analog [ALC880 Analog]
; Sous-périphériques: 0/1
; Sous-périphérique: #0: subdevice #0
carte; 0: M5461 [HDA ULI M5461], périphérique 1 : ALC880 Digital [ALC880 Digital]
; Sous-périphériques: 1/1
; Sous-périphérique: #0: subdevice #0
Ici la carte utilisée pour le SPDIF est intégrée à; la carte mère, mais cela ne change en rien la manière de procéder. La sortie qui nous intéresse se nomme ALC880 Digital, il s'agit cette fois; de la carte 0 et du périphérique 1. Nous avons donc ici :
hw=0.1
Attention! Si vous vous arrêtez à ce stade de la procédure et que vous ne désirez pas créer de asound.rc il faut savoir qu'en l'état cette convention reste relative, parfois il faut remplacer le « = » par « : » et le « . » par « , ». Tout dépend des applications que vous utilisez. C'est pour cela que je vous conseille, si tout marche, de créer un fichier .asoundrc qui facilitera grandement la configuration sonore de vos applications.
Munis de ces informations vous allez pouvoir effectuer un premier test. Le plus simple est d'utiliser mplayer, qui est le lecteur vidéo le plus généralement utilisé par les media center. Si vous ne l'avez pas je vous conseille fortement de l'installer.
Toujours dans un terminal vous pouvez taper (remplacez la carte et le périphérique du hw= par les paramètres de votre carte son):
mplayer -ao alsa:device=hw=1.0 /chemin/fichier.mp3 ou avi
Noubliez surtout pas l'option
-ao qui détermine que vous configurez le son!
Si aucun son ne sort essayez de rajouter l'option -softvol de cette manière :
mplayer -softvol -ao alsa:device=hw=1.0 /chemin/fichier.mp3 ou avi
Vous pouvez aussi effectuer ce test de manière graphique. Il faut lancer mplayer et aller dans les préférences Audio puis en cliquant sur « configure driver » en ayant Alsa de sélectionné dans la liste des drivers. Vous verrez apparaître une liste des configurations hw les plus fréquentes, si la votre n'apparaît pas, sélectionnez-en une qui ne correspond pas et adaptez là à votre configuration. Pour le reste laissez les options Mixer et Mixer channel à « driver default ». Pour vous aider, voici quelques copies d'écran :

; ;

Lancez ensuite un fichier avec du son. De la même manière si aucun son ne sort cochez la case « enable software mixer ».
Si a ce stade vous n'avez toujours aucun son qui sort de votre sortie optique, recommencez depuis le début et analysez bien le retour de la commande « aplay -l ».
Configuration des paramètres de sortie:nano ~/.asoundrc
Insérez dedans les lignes suivantes :
pcm.!SPDIF {
type plug
slave {
pcm "hw:1,0"
}
}
Et remplacez « hw:1,0 » par la configuration que vous venez de déterminer. Il est aussi possible de mettre le hw dans le fichier asound.conf a la place (voir partie 2)
A noter : la ligne « pcm.!SPDIF » détermine la manière dont vous voulez nommer votre périphérique. Cela n'a rien d'obligatoire de la nommer comme tel. Vous auriez aussi bien pu écrire ; « pcm.!grandmèrefaitduboncafé » mais c'est tout de suite moins clair!
Enregistrer ensuite ce fichier dans votre /home/user. Il s'agit de votre dossier personnel qui est généralement nommé ainsi : /home/votrenom. Vous devez nommer ce fichier de cette manière :
.asoundrc
N'oubliez surtout pas le point avant asoundrc! Cela détermine que votre fichier est un fichier caché utilisé pour la configuration de votre système.
Vous pouvez d'ores et déjà ; effectuer un test toujours avec mplayer soit en utilisant la ligne suivante :
mplayer -ao alsa:device=SPDIF /chemin/fichier.mp3
Ou de manière graphique en remplaà§ant hw=1.0 par SPDIF (cf copie d'écran ci-dessous) :
Si rien ne sort et que vous êtes bien sà»r d'avoir correctement recopié les lignes précédemment citées alors reportez vous à ; la documentation ALSA en bas page.
Un peu de documentation :Le wiki d'Ubuntu.fr est, je pense, une des documentations les plus complète qui existe à ; ce sujet :
http://doc.ubuntu-fr.org/installation/son?s=alsaA lire aussi, la documentation ALSA (en):
http://alsa.opensrc.orgEt plus particulièrement dans notre cas :
http://alsa.opensrc.org/DigitalOutQuelques sujets sur le forums officiel Xbmc (on y parle du .asoundrc)(en):
http://xbmc.org/forum/showthread.php?t=27691http://xbmc.org/forum/showthread.php?t=27998http://xbmc.org/forum/showthread.php?t=29131&highlight=SPDIFPour aller plus loin (surtout si vous désirez configurer le son Dolby ou DTS)(en) :
http://xbmc.org/forum/showthread.php?t=29131Resolution du bug sous Ubuntu 9.04 :
url=http://forum.ubuntu-fr.org/viewtopic.php?id=311677Malheureusement, la plus grande partie de la documentation que vous pourrez trouver sur ALSA et le SPDIF est en anglais, c'est ce qui m'a poussé à; écrire cet article.
EDIT par Meldrak: mise à jour du tuto