|
关于alsa的音量不能正确保存的问题:
只有在console和gnome下才有,在KDE下是感觉不到的,因为KDE的kmixer会自动回复音量.
1.在不使用rcalsasound或alsasound启动脚本时
开机时,由/etc/init.d/kudzu启动声卡模块,但是kudzu不会用alsactl读取/etc/asound.state回复音量,也就是全部禁音
关机时,由/etc/init.d/halt保存了音量:
# Save mixer settings, here for lack of a better place.
grep -q "\(alsa\)" /proc/devices
if [ $? = 0 -a -x /usr/sbin/alsactl ]; then
runcmd $"Saving mixer settings" alsactl store
fi
2.如果使用rcalsasound或alsasound启动脚本,但是还是要用kudzu和halt
开机时,kudzu已经启动了声卡模块
start)
# Start driver if it isn't already up.
if [ ! -d /proc/asound ]; then
start
else
echo "ALSA driver is already running."
fi
于是,alsasound就不会启动start函数,也不会用alsactl读取/etc/asound.state回复音量
关机时,先是调用alsasound stop:
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
这里保存了音量,但下面为防止unload驱动时的暴音,把主音量关了.
调用halt时,halt又保存了音量,这时就保存了错误的音量.
解决方案:
1.不用rcalsasound或alsasound
那么,kudzu就必须能启动声卡模块,并回复音量.
2.用alsasound
就不能让kudzu启动声卡,或是在alsasound start时调用restart,还有最重要的是不能让halt保存音量. |
|