Carte son et haut-parleur du ThinkStation S20 sous Ubuntu
L’outil de production que j’utilise actuellement est un PC Lenovo: ThinkStation S20. Si l’installation d’Ubuntu à côté du Windows 7 d’origine est à prendre avec des pincettes, l’ensemble du matériel est bien reconnu et se porte comme un charme sous Ubuntu (versions 10.10 Maverick Meerkat et 11.04 Natty Narwhal beta 2).
Un problème tout de même… car si des enceintes ou un casque audio (Headphones) fonctionnement parfaitement bien, ce n’est pas le cas du haut-parleur interne (internal speaker). Cet article présente un résumé de son activation, ainsi que le moyen de le couper facilement (par exemple si on branche un casque audio).
Informations sur la carte son
Avant toute chose, il serait bon de savoir quelle carte son est dans le ThinStation S20.
simon@YS20:~$ lspci | grep -i audio
00:1b.0 Audio device: Intel Corporation 82801JI (ICH10 Family) HD Audio Controller
C’est un bon début, mais pour la suite il nous faudrait le numéro identifiant cette carte HDA intel.
simon@YS20:~$ head -n 1 /proc/asound/card0/codec*
Codec: Analog Devices AD1988
Nous voilà donc partis pour configurer la carte son AD1988 récalcitrante.
Modification des paramètres ALSA
Lenovo fournit des informations sur son site officiel pour activer le speaker, mais qui ne sont pas très adaptées à l’utilisation sous linux (chemins différents et script non fonctionnel).
En réalité, il faut modifier le fichier en exécutant par exemple dans un terminal:
sudo gedit /etc/modprobe.d/alsa-base.conf
On y ajoute à la fin ce que le site de Lenovo indique:
options snd-hda-intel model=6stack-dig enable=1,1 index=0,1
# u1Nb.anterc1hhTF:ICH10 HD Audio Controller
alias snd-card-0 snd-hda-intel
# kEn8.QkTk4uHneXA:ATI Technologies Inc
alias snd-card-1 snd-hda-intel
On peut alors redémarrer l’ordinateur ou forcer le redémarrage d’ALSA dans un terminal:
sudo alsa force-reload
Cette méthode fonctionne, mais si on branche le casque audio, les speakers continuent de fonctionner!
Puisqu’on a récupéré le numéro de la carte, faisons un tour sur la liste des HD Audio Model sur kernel.org et voici ce qu’on y trouve pour notre référence:
AD1988/AD1988B/AD1989A/AD1989B ============================== 6stack 6-jack 6stack-dig ditto with SPDIF 3stack 3-jack 3stack-dig ditto with SPDIF laptop 3-jack with hp-jack automute laptop-dig ditto with SPDIF auto auto-config reading BIOS (default)
Ça semble confirmer les informations du site de Lenovo, mais la fonction « automute » ne semble présente que pour le modèle « laptop ». Cependant, avec ce mode là les speakers ne fonctionnent pas.
Désactiver les speakers à la demande
Via une interface graphique
Pour pouvoir mettre les haut-parleurs en position « mute » tout en conservant le son dans les écouteurs, il va falloir faire quelques manipulations supplémentaires. En effet, les options sonores par défaut (via gnome-volume-control) ne permettent pas de différencier haut-parleur interne et casque audio.
Comme j’aime bien avoir une interface graphique, j’ai installé gnome-alsamixer (bien qu’alsamixer puisse se lancer son interface graphique dans un terminal) et en jouant avec tous les réglages, impossible de distinguer les 2 sorties audio en modifiant les volumes.
La solution consiste à jouer sur l’option à cocher « Mono ». En effet, si « Mono » et « Headphones » sont activés alors headphones/speaker sont en route. Si on coupe « Headphones » les deux sont muets. Enfin, si on coupe uniquement « Mono », les écouteurs fonctionnent mais pas le haut-parleur interne!
Via une ligne de commande ou un lanceur
La solution est désormais toute simple, il faut pouvoir couper/relancer « Mono » en un clic, ou en une ligne de commande.
Cette fameuse ligne est:
amixer sset Mono toggle
Si le speaker est déjà actif, on aura cette réponse (qui indique qu’on le coupe):
simon@YS20:~$ amixer sset Mono toggle
Simple mixer control ‘Mono’,0
Capabilities: pswitch penum
Playback channels: Front Left – Front Right
Mono:
Front Left: Playback [off]
Front Right: Playback [off]
Si le speaker est inactif, on aura cette réponse (qui indique qu’on l’allume):
simon@YS20:~$ amixer sset Mono toggle
Simple mixer control ‘Mono’,0
Capabilities: pswitch penum
Playback channels: Front Left – Front Right
Mono:
Front Left: Playback [on]
Front Right: Playback [on]
Il ne reste plus qu’à créer un joli lanceur avec cette commande et le tour est joué! J’ai fait un minimum pour mon script « son.sh » (à ne pas oublier de rendre exécutable!) :
#!/bin/bash
amixer sset Mono toggle
Conclusion sur le son et le ThinkStation S20 de Lenovo sous Ubuntu
Au final, le matériel n’est pas géré nativement si on compte ne pas se servir d’enceintes ou de casque, et je n’ai pas encore de solution pour que le branchement d’une prise Jack coupe automatiquement ce fameux haut-parleur interne. Cette solution de remplacement fera l’affaire dans mon cas car je n’utiliserai que rarement des écouteurs, mais je reste ouvert si vous avez une meilleure idée. 😉
Note additionnelle: cette manipulation est également fonctionnelle pour Ubuntu Oneiric Ocelot (Ubuntu 11.10). 😀