3 # alsasound This shell script takes care of starting and stopping \
6 # This script requires /usr/sbin/alsactl program from alsa-utils package.
8 # Copyright (c) by Jaroslav Kysela <perex@jcu.cz>
10 # This program is free software; you can redistribute it and/or modify
11 # it under the terms of the GNU General Public License as published by
12 # the Free Software Foundation; either version 2 of the License, or
13 # (at your option) any later version.
15 # This program is distributed in the hope that it will be useful,
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 # GNU General Public License for more details.
20 # You should have received a copy of the GNU General Public License
21 # along with this program; if not, write to the Free Software
22 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 # For PLD Linux Distribution:
26 # chkconfig: 2345 87 14
27 # description: ALSA driver
30 # Source function library.
31 . /etc/rc.d/init.d/functions
36 # insert all sound modules
38 if OLDLOGLEV=$(awk '{print $1}' < /proc/sys/kernel/printk 2> /dev/null); then
41 modprobe -c | awk '$1 == "alias" && $3 != "off" && ($2 ~ /^snd-card-[0-9]$/) {print $2}' | \
43 msg_starting "sound driver: $line"
48 modprobe -c | awk '$1 == "alias" && $3 != "off" && ($2 ~ /^sound-service-[0-9]-[0-9]+$/) {print $2}' | \
50 msg_starting "sound driver: $line"
55 if [ -n "$OLDLOGLEV" ]; then
56 /sbin/loglevel "$OLDLOGLEV"
59 # restore driver settings
61 if [ -x /usr/sbin/alsactl ]; then
62 if [ -f /etc/asound.state ]; then
63 if [ "$(kernelver)" -lt "002006012" ]; then
65 [ -a /dev/snd/controlC0 ] && break
69 /usr/sbin/alsactl restore
72 show "ERROR: alsactl not found"; fail
79 # remove all sound modules
81 /sbin/lsmod | awk '/^(snd|ac97_bus)/ { print $1 }' | while read module; do \
89 # store driver settings
91 if [ -x /usr/sbin/alsactl ]; then
92 /usr/sbin/alsactl store
94 show '!!!alsactl not found!!!'; fail
97 # remove all sound modules
105 # run only detect module
107 /sbin/modprobe snd-detect
112 if [ ! -d /proc/asound ]; then
114 if [ -d /proc/asound ]; then
115 touch /var/lock/subsys/alsasound
120 if [ -f /proc/asound/detect ]; then
121 show "Shutting down sound detect module"
125 if [ -d /proc/asound ]; then
126 touch /var/lock/subsys/alsasound
131 msg_already_running "ALSA driver"
138 if [ -d /proc/asound ]; then
139 show "Shutting down sound driver"
141 if [ -f /proc/asound/detect ]; then
146 (rmmod isapnp; rmmod soundcore) 2> /dev/null
147 if [ -d /var/lock/subsys ]; then
148 rm -f /var/lock/subsys/alsasound
152 msg_not_running "ALSA driver"
157 # See how we were called.
165 restart|force-reload)
173 msg_usage "$0 {start|stop|restart|force-reload|status}"