/dev/snd/* device or resource busy ?
Il est parfois possible de na pas pouvoir lançer son lecteur multimédia préfèré à cause de ce message d'erreur :
open /dev/snd/pcmC0D0p failed: Device or resource busy
Ce message signifie qu'une autre application utilise déjà ce périphérique (celui audio) et qu'il n'est pas possible à ce moment que plusieurs applications l'utilisent (c'est généralement le cas et ca fonctionen très bien, mais je ne sais pas pourquoi dans certains cas on ne peut pas partager le périphérique...).
Il faut alors le libérer pour pouvoir lançer son lecteur multimédia préfèré, tout d'abord regardons quelle(s) application(s) utilisent le périphérique en question (tout est à faire en root) :
lsof | grep snd
Le lsof et le grep devraient renvoyer quelque chose ressemblant à ceci :
pulseaudi 5421 user mem REG 8,1 396264 229523 /usr/lib/libsndfile.so.1.0.20 pulseaudi 5421 user 21u CHR 116,0 0t0 13851 /dev/snd/controlC0 pulseaudi 5421 user 27u CHR 116,0 0t0 13851 /dev/snd/controlC0 gconf-hel 5438 user mem REG 8,1 396264 229523 /usr/lib/libsndfile.so.1.0.20 mixer_app 5446 user 21r CHR 116,0 0t0 13851 /dev/snd/controlC0 firefox-b 5840 user mem CHR 116,16 13808 /dev/snd/pcmC0D0p firefox-b 5840 user 85r CHR 116,33 0t0 13733 /dev/snd/timer firefox-b 5840 user 86u CHR 116,16 0t0 13808 /dev/snd/pcmC0D0p
Maintenant, il faut analyser tout ca :
- pulseaudio : le serveur audio (obligatoire), je cite :
"Il vous permet de procéder à des opérations avancées sur le son en s'intercalant entre la couche logicielle et la couche matérielle."
Source : ubuntu-fr
- gconf : éditeur de configuration de votre fichier ~/.gconf ;
- mixer_app : ca, c'est le controleur de volume du son de votre système sous Gnome (il n'est pas obligatoire) ;
- firefox : dans mon cas, c'est mon navigateur web.
Nous allons tout d'abord régler le bug (c'est un bug !) en "tuant" pulseaudio et mixer_app, et il faut relancer pulseaudio (mixer_app doit se relancer quand vous le killez et toujours en root) :
kill 5446 # (5446 est le pid du processus mixer_app) kill 5421 # (pour pulseaudio)
Relancons pulseaudio :
/etc/init.d/pulsaudio start
Maintenant, retentez mplayer (ou un autre lecteur), si ca ne fonctionne toujours pas, "tuez" (kill) tous les processus que "lsof | grep snd" vous sort, c'est un peu bourrin, mais ca fonctionne et relancez-le si il le faut.
Attention : le problème s'est produit sous debian, donc certains outils sont spécifiques à la distribution !