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>