je souhaiterai savoir comment restaurer une carte son avec alsa sans redémarrer l'ordinateur
car j'ai un pc qui me sert poste multimédia avec XBMC et celui si plante souvent et me fait planter ma carte son j'ai du enlevé pulsaudio à cause du spdif (5.1) qui n'était pas pris en compte.
j'ai trouvé ce script sur internet mais il a pas l'air de fonctionner sous centOS
Code : Tout sélectionner
#!/bin/bash
#
# alsasound This shell script takes care of starting and stopping
# the ALSA sound driver.
#
# This script requires /usr/sbin/alsactl and /usr/bin/aconnect
# programs from the alsa-utils package.
#
# Copyright (c) by Jaroslav Kysela <perex@suse.cz>
#
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# For RedHat 5.0+:
# chkconfig: 2345 87 14
# description: ALSA driver
#
# modified to visually fit into SuSE 6.0+ by Philipp Thomas <pthomas@suse.de>
# modified to start only drivers that are not already loaded and to visually
# fit into RedHat 7.2+ by Fernando Lopez-Lezcano <nando@ccrma.stanford.edu>
# further improvements by Bernd Kaindl, Olaf Hering and Takashi Iwai.
#
### BEGIN INIT INFO
# Provides: alsasound
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 5
# Default-Stop:
# Description: Loading ALSA drivers and store/restore the current setting
### END INIT INFO
if [ -e /etc/rc.d/init.d/functions ] ; then
# redhat function library
redhat=1
. /etc/rc.d/init.d/functions
fi
if [ -r /etc/rc.config ]; then
. /etc/rc.config
rc_warning="\033[33m\033[1m"
else
rc_done="done"
rc_warning=""
rc_reset=""
fi
if [ x$START_ALSA != xno ]; then
START_ALSA=yes
fi
if [ x$START_ALSA_SEQ != xno ]; then
START_ALSA_SEQ=yes
fi
# Determine the base and follow a runlevel link name.
base=${0##*/}
link=${base#*[SK][0-9][0-9]}
# Force execution if not called by a runlevel directory.
test $link = $base && START_ALSA=yes
test "$START_ALSA" = yes || exit 0
alsactl=/usr/sbin/alsactl
asoundcfg=/etc/asound.state
aconnect=/usr/bin/aconnect
alsascrdir=/etc/alsa.d
if [ -x /sbin/lsmod ]; then
lsmod=/sbin/lsmod
else
lsmod=lsmod
fi
# modprobe returns 255 when failed..
function probe_module () {
/sbin/modprobe $*
test $? = 0 && return 0
return 1
}
function start() {
#
# insert sound modules that are not already loaded
#
module_loaded=0
drivers=`/sbin/modprobe -c | \
grep -E "^[[:space:]]*alias[[:space:]]+snd-card-[[:digit:]]" | \
awk '{print $3}'`
loaded=""
for i in $drivers; do
if [ "$i" != off ]; then
is_loaded=`grep -c ^$i /proc/modules`
if [ "$is_loaded" == "0" ]; then
if [ $redhat ] ; then
action "Starting sound driver $i" /sbin/modprobe $i
if [ "$?" == "0" ]; then loaded="$loaded $i" ; module_loaded=1 ; fi
else
echo -n "Starting sound driver: $i "
probe_module $i
if [ "$?" == "0" ]; then loaded="$loaded $i" ; module_loaded=1 ; fi
echo -e "$rc_done"
fi
else
if [ $redhat ] ; then
echo "Sound driver $i is already loaded"
fi
fi
fi
done
test $module_loaded -eq 0 && return
#
# insert sequencer modules that are not already loaded
#
if [ $redhat ] ; then
action "Starting sequencer" /sbin/modprobe snd-seq
else
echo -n "Starting sequencer"
/sbin/modprobe snd-seq
echo -e "$rc_done"
fi
if [ x"$START_ALSA_SEQ" = xyes -a -r /proc/asound/seq/drivers ]; then
seq_drivers=`cut -d , -f 1 /proc/asound/seq/drivers`
for i in $seq_drivers; do
is_loaded=`grep -c ^$i /proc/modules`
if [ "$is_loaded" == "0" ]; then
if [ $redhat ] ; then
action "Starting sequencer driver $i" /sbin/modprobe $i
else
/sbin/modprobe $i
fi
else
if [ $redhat ] ; then
echo "Sequencer driver $i is already loaded"
fi
fi
done
fi
#
# restore driver settings
#
if [ -d /proc/asound ]; then
if [ ! -r $asoundcfg ]; then
echo "No mixer config in $asoundcfg, you have to unmute your card!"
else
if [ -x $alsactl ]; then
if [ $redhat ] ; then
action "Restoring sound driver settings" $alsactl -f $asoundcfg restore
else
$alsactl -f $asoundcfg restore
fi
else
if [ $redhat ] ; then
echo -n "Sound driver: could not find alsactl"
failure "Finding alsactl" && echo
else
echo -e "${rc_warning}ERROR: alsactl not found${rc_reset}"
fi
fi
fi
fi
#
# run card-dependent scripts only for drivers we loaded
#
for i in $loaded; do
t=${i##snd-}
if [ -x $alsascrdir/$t ]; then
if [ $redhat ] ; then
action "Running $t script" $alsascrdir/$t
else
$alsascrdir/$t
fi
fi
done
#
# touch lockfile if lockdir exists
#
if [ -d /var/lock/subsys ] ; then
touch /var/lock/subsys/alsasound
fi
}
function terminate() {
#
# Kill processes holding open sound devices
#
# DEVS=`find /dev/ -follow -type c -maxdepth 1 -print 2>/dev/null | xargs ls -dils | grep "1*1[46]," | cut -d: -f2 | cut -d" " -f2; echo /proc/asound/dev/*`
fuser -k /dev/admmidi? /dev/adsp? /dev/amidi? /dev/audio* /dev/dmfm* \
/dev/dmmidi? /dev/dsp* /dev/dspW* /dev/midi0? /dev/mixer? /dev/music \
/dev/patmgr? /dev/sequencer* /dev/sndstat >/dev/null 2>&1
if [ -d /proc/asound/dev ]; then
fuser -k /proc/asound/dev/* >/dev/null 2>&1
fi
if [ -d /dev/snd ]; then
fuser -k /dev/snd/* >/dev/null 2>&1
fi
#
# remove all sequencer connections if any
#
if [ -f /proc/asound/seq/clients -a -x $aconnect ]; then
$aconnect --removeall
fi
}
function stop() {
#
# store driver settings
# [nando: we always initialize the driver to the default settings]
#
# if [ -x $alsactl ]; then
# $alsactl -f $asoundcfg store
# else
# echo -n -e "${rc_warning}!!!alsactl not found!!!${rc_reset} "
# fi
#
# mute master to avoid clicks at unload
#
/usr/bin/amixer set Master mute >/dev/null 2>&1
#
# remove all sound modules
#
$lsmod | grep -E "^snd" | grep -Ev "(snd-page-alloc|snd_page_alloc)" | while read line; do \
/sbin/rmmod `echo $line | cut -d ' ' -f 1`; \
done
# remove the 2.2 soundcore module (if possible)
/sbin/rmmod soundcore 2> /dev/null
/sbin/rmmod gameport 2> /dev/null
#
# remove lockfile if lockdir exists
#
if [ -d /var/lock/subsys ] ; then
rm -f /var/lock/subsys/alsasound
fi
}
# See how we were called.
case "$1" in
start)
# Start driver
if [ -d /proc/asound ]; then
echo "ALSA driver already running"
fi
start
if [ $redhat ] ; then
if [ -d /proc/asound -a -d /var/lock/subsys ]; then
touch /var/lock/subsys/alsasound
fi
fi
;;
stop)
# Stop daemons.
if [ -d /proc/asound ]; then
echo -n "Shutting down sound driver"
terminate
stop
if [ $redhat ] ; then
if [ -d /var/lock/subsys ]; then
rm -f /var/lock/subsys/alsasound
fi
success "sound driver stop" && echo
else
echo -e "$rc_done"
fi
fi
;;
restart|reload)
$0 stop
$0 start
;;
status)
if [ -d /proc/asound ]; then
echo -n "ALSA sound driver loaded."
else
echo -n "ALSA sound driver not loaded."
fi
echo
;;
*)
echo "Usage: alsasound {start|stop|restart|status}"
exit 1
esac
exit 0
Code : Tout sélectionner
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC888 Analog [ALC888 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: ALC888 Digital [ALC888 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
merci d'avance