Date: 3 Oct 2000 08:23:28 -0000 From: mwm@mired.org To: FreeBSD-gnats-submit@freebsd.org Subject: conf/21722: The mixer settings are lost on sysetm reboot.s Message-ID: <20001003082328.3172.qmail@guru.mired.org>
next in thread | raw e-mail | index | archive | help
>Number: 21722
>Category: conf
>Synopsis: The mixer settings are lost on sysetm reboot.s
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Tue Oct 03 01:30:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: Mike Meyer
>Release: FreeBSD 5.0-CURRENT i386
>Organization:
Meyer Consulting
>Environment:
A system with at least one sound card.
>Description:
The system mixer settings - possibly carefully tuned by the user -
are lost whenever the system goes through a hard shutdown.
>How-To-Repeat:
Reboot your system so that the mixer settings are at the default
values. Find a line input source that's not acceptable at those
values, and adjust the mixer settings. Now reboot again, and notice
that the values you had saved were gone.
>Fix:
The following patch (apply in /etc) adds an rc.conf knob to save the
mixer settings in /var/db on shutdown, and restore from those files on
restart.
And I forgot to test the "mixer numbers" case, but shutting down now
to do it would lose the PR entry, so...
--- rc Tue Oct 3 03:14:55 2000
+++ /etc/rc Tue Oct 3 03:10:50 2000
@@ -276,6 +276,19 @@
;;
esac
+#
+# If we have saved mixer state and the user wants it restored, do it.
+#
+case ${mixer_devices} in
+[Nn][Oo] | '')
+ ;;
+*)
+ for settings in /var/db/mixer*.settings; do
+ mixer -f `echo $settings | sed -e 's/.settings//' -e 's;/var/db;/dev;'` `cat $settings` >/dev/null
+ done
+ ;;
+esac
+
# Remove X lock files, since they will prevent you from restarting X11
# after a system crash.
#
--- rc.shutdown Tue Oct 3 03:14:55 2000
+++ /etc/rc.shutdown Tue Oct 3 03:09:30 2000
@@ -43,6 +43,25 @@
;;
esac
+# Save the mixer settings - if the user wants it.
+#
+case ${mixer_devices} in
+[Nn][Oo] | '')
+ ;;
+[Yy][Ee][Ss])
+ echo "Saving mixer settings."
+ rm /var/db/mixer*.settings
+ /usr/sbin/mixer -s > /var/db/mixer.settings
+ ;;
+*)
+ echo "Saving mixer settings."
+ rm /var/db/mixer*.settings
+ for dev in ${mixer_devices}; do
+ /usr/sbin/mixer -f /dev/mixer${dev} -s > /var/db/mixer${dev}.settings
+ done
+ ;;
+esac
+
# Check if /var/db/mounttab is clean.
case $1 in
reboot)
--- defaults/rc.conf Fri Sep 1 08:37:25 2000
+++ /etc/defaults/rc.conf Tue Oct 3 02:31:22 2000
@@ -298,6 +298,7 @@
start_vinum="" # set to YES to start vinum
entropy_file="/var/db/entropy"
# Set to NO to disable caching entropy through reboots
+mixer_devices="NO" # NO to disable saving, YES for /dev/mixer, or list of mixer numbers
##############################################################
### Define source_rc_confs, the mechanism used by /etc/rc.* ##
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001003082328.3172.qmail>
