#!/bin/bash . /etc/rc.conf . /etc/conf.d/alsa . /etc/rc.d/functions case "$1" in start) stat_busy "Restoring ALSA Levels" if [[ ! -e /var/lib/alsa/asound.state ]]; then /usr/bin/alsactl $ALSA_ARGS store || { stat_fail; exit 1; } fi if /usr/bin/alsactl $ALSA_ARGS restore; then stat_done add_daemon alsa else stat_fail exit 1 fi POWERSAVE=${POWERSAVE:-0} if [[ -e /sys/module/snd_ac97_codec/parameters/power_save ]] \ && (( $POWERSAVE )); then echo $POWERSAVE > /sys/module/snd_ac97_codec/parameters/power_save [[ -c /dev/dsp ]] && echo 1 > /dev/dsp fi if [[ -e /sys/module/snd_hda_intel/parameters/power_save ]] \ && (( $POWERSAVE )); then echo $POWERSAVE > /sys/module/snd_hda_intel/parameters/power_save [[ -c /dev/dsp ]] && echo 1 > /dev/dsp fi ;; stop) SAVE_VOLUME=${SAVE_VOLUME:-yes} if [[ "$SAVE_VOLUME" = "yes" ]]; then stat_busy "Saving ALSA Levels" /usr/bin/alsactl $ALSA_ARGS store || { stat_fail; exit 1; } else stat_busy "Stopping ALSA" fi if [ "$MUTE_VOLUME" == "yes" ]; then /usr/bin/amixer -q set Master 0 mute || { stat_fail; exit 1; } fi stat_done rm_daemon alsa ;; restart) $0 stop sleep 1 $0 start ;; force-restart) stat_busy "Trying to TERM or KILL processes that are blocking ALSA..." FILES="$(ls -1 /dev/snd/* | grep -vi control)" fuser -k -SIGTERM $FILES fuser -k $FILES stat_done $0 restart ;; *) echo "usage: $0 {start|stop|restart|force-restart}" esac