Provided by: nvram-wakeup_1.1-1_amd64 bug


       nvram-wakeup.conf - the configuration file for NVRAM WakeUp.


       This   file  can  be  passed  to  the  program  NVRAM WakeUp (see nvram-wakeup(8) for more
       information) via the --configfile option.

       It might look as follows:

              # nvram-wakeup.conf
              #  This is an example configuration for MSI MS-6351

              need_reboot = ON_ANY_CHANGE # All changes take effect
                                          # after a reboot

              addr_chk_h  = 0x30          # These are adresses of
              addr_chk_l  = 0x31          # the checksum bytes

              addr_stat   = 0x55          # Status byte
              shift_stat  = 3             # The position of the
                                          # status bit in the byte

              addr_day    = 0x56          # Day and time
              addr_hour   = 0x57
              addr_min    = 0x58
              addr_sec    = 0x59


       Any empty line or a line containing only space characters is ignored.

       Anything after and including a # character is treated as a comment and is ignored.

       The options must have the form NAME = VALUE with or  without  spaces  before  NAME,  after
       VALUE or around the equal sign.  Valid options are described below.

       The options may appear in any order. The same option must not appear twice.


       bcd         = (ON|OFF), default OFF

              indicates if the board uses BCD notation for storing values.

              BCD   is  the   so  called Binary  Coded Decimal  notation (actually, it is `packed
              BCD', in the plain BCD they waste whole byte  per  digit.)  in  this  notation  the
              decimal  numbers  0..99 are stored using four bits for  every digit,  e.g. 24 would
              be stored as 0x24  (the  4 is stored in  the lower four bits and the 2 is stored in
              the upper four bits).

       addr_chk_h  = (0x00|...|0x71), default: undefined
       addr_chk_l  = (0x00|...|0x71), default: undefined
       addr_stat   = (0x00|...|0x71), default: undefined
       addr_mon    = (0x00|...|0x71), default: undefined
       addr_day    = (0x00|...|0x71), default: undefined
       addr_hour   = (0x00|...|0x71), default: undefined
       addr_min    = (0x00|...|0x71), default: undefined
       addr_sec    = (0x00|...|0x71), default: undefined

              Addresses  of  the   bytes   where the checksum  (lower resp. higher bytes), status
              (enabled/disabled), month, day,  hour,  minute   and  second   are  stored  in  the

              addr_chk_h, addr_chk_l and addr_stat must be defined. All other may stay undefined.
              That  means, the board  doesn't store them (e.g.  because it stores that  value  in
              RTC alarm registers)

       addr_chk_h2 = (0x00|...|0x71), default: undefined
       addr_chk_l2 = (0x00|...|0x71), default: undefined

              There  are some boards which have two checksums.  Since I haven't seen many of them
              yet, I don't know if they need special handling

       addr_wdays  = (0x00|...|0x71 ), default: undefined

              The address of the byte  containing a weekday  vector.   Currently,   I   know   of
              only  two boards,  which store a weekday vector (Asus SP98-X and SP97-X).

       rtc_time    = (ON|OFF), default: OFF

              indicates if we have to set the the RTC alarm time accordingly.

       rtc_mon     = (0x00|...|0x71|0x7F), default: undefined
       rtc_day     = (0x00|...|0x71|0x7F), default: undefined

              similar to addr_mon/addr_day, but   stored  in  BCD and not affecting the checksum.
              In  most cases, the day is stored in the RTC register D (0x7F), but there are  also
              some  boards,  which  store  it somewhere  in the nvram (address <= 0x71).

              If   rtc_day   is   >=   0x72,   you   will   need  a  kernel  patch:  in  <kernel-
              src>/drivers/char/nvram.c change the line
                     #define NVRAM_BYTES 128-RTC_FIRST_BYTE
                     #define NVRAM_BYTES 128
              in newer kernels (beginning with 2.4.20) it is the line
                     #define NVRAM_BYTES (128-NVRAM_FIRST_BYTE)
              which must be changed to
                     #define NVRAM_BYTES 128

       reset_mon   = (ON|OFF), default: OFF
       reset_day   = (ON|OFF), default: OFF

              on some boards  we have to set the  value  of  rtc_mon  resp.  rtc_day  to  0  when
              disabling the wakeup feature.

       nr_stat     = 1 (just on/off)
       nr_mon      = 4 (   0..12   )
       nr_day      = 5 (   0..31   )
       nr_rtc_mon  = 5 (0x00...0x12)
       nr_rtc_day  = 6 (0x00...0x31)
       nr_wdays    = 7 ( 1 per day )
       nr_hour     = 5 (   0..23   )
       nr_min      = 6 (   0..59   )
       nr_sec      = 6 (   0..59   )

              Number   of  bits   needed  for  the status,  month, day,  rtc_day, weekday vector,
              hour,   minute  and  second.   These  values  are a priori motherboard  independent
              but depend on the BCD/non-BCD notation.

       shift_stat  = (0|...|7), default: 0
       shift_mon   = (0|...|4), default: 0
       shift_day   = (0|...|3), default: 0
       shift_wdays = (0|...|1), default: 0
       shift_hour  = (0|...|3), default: 0
       shift_min   = (0|...|2), default: 0
       shift_sec   = (0|...|2), default: 0

              Indicates,  by how many  bits the value is  shifted  to the left in  the byte, e.g.
              the  value of the day (5 bits)  could be stored in the bits marked with an "x" of a
                  000xxxxx  -> shift_day = 0
                  00xxxxx0  -> shift_day = 1
                  0xxxxx00  -> shift_day = 2
                  xxxxx000  -> shift_day = 3

       need_reboot  = (OFF|ON_STAT|ON_SEC|ON_MIN|ON_HOUR
                       default: OFF

              Here "..." means any or-ed combination of multiple ON_XXX values.

              Some boards need a reboot  for changes in nvram to take effect.  Some of them  need
              a  reboot  after _any_ change,  some  of them  only  after  the  status   bit   was
              changed. Anyway, now we are able to define when a board needs a reboot:

              OFF    means, the board never needs it

                     means, the board needs it after _any_ change on nvram.

                     means, reboot only if the status bit is changed

                     means, reboot whenever the status or the second are changed.

              The  idea  behind  this is  if nvram-wakeup decides that we need to reboot, it will
              exit with exit status 1 (instead of 0).  So  the  script  which  runs  nvram-wakeup
              could   react   on   this.   We  also print it to stderr, so if nvram-wakeup is run
              directly on the command line, the user  could  react appropriately.

       upper_method    = (OFF|INTEL|DS1685|VT82Cxxx|VT8235_37), default: OFF

              indicates if upper nvram must be used and if yes, which method to use to access it.
              Note  that  upper  nvram  can  only  be read if --directisa parameter is specified.
              Possible values:

              OFF    upper nvram disabled (default)

              INTEL  access upper nvram by a method used by most (if not all) Intel chipsets with
                     ICH, ICH2, C-ICH, ...

                     (datasheets at

              DS1685 access   upper   nvram   by  a  method  used  by  the  Dallas  Semiconductor
                     DS1685/DS1687 chips.

                     (datasheet at

                     access upper nvram by a method used by VIA's VT82C686A "Super  South"  South
                     Bridge.   Reported  to  work  with  VT82C686A,  VT82C686B,  VT82C596, nVidia
                     nForce2, ATI RADEON 9100 IGP (= RS300), AMD-8111.

                     (datasheet at
                     (datasheet                     at           

                     access  upper  nvram  by  a  method  used  by VIA's VT8235/37 South Bridges.
                     Reported to work with VT8233 as well.

                     (no official source)

       chk_method    = (DELL|FSC), default: undefined

              indicates which algorithm for calculation of the checksum must be  used.   Possible

                     Majority  of  mainboards  use  the same algorithm (just addition of values).
                     This algorithm is used if no chk_method option is specified.

              DELL   This method is used by many Dell mainboards (addition of negative values).

              FSC    Fujitsu-Siemens uses  yet another  algorithm.  I  don't  know  it  and  they
                     consider it as a company secret. Thus this method is not implemented.


       rtc_mon_0_is_c0   = (ON|OFF), default: OFF
       rtc_day_0_is_c0   = (ON|OFF), default: OFF

              on  some  boards   we  have  to  store the value 0xC0 instead of 0 in rtc_mon resp.
              rtc_day.  If you use one of this two options, don't forget to set nr_rtc_mon  resp.
              nr_rtc_day to 8.

       day_hack          = (1|...|4), default: undefined

              on  some boards the value of addr_day is split over the day and the status byte. In
              those cases the lower day_hack bits of the day value are stored in the highest bits
              of the status byte and the rest is stored in the day byte.

       day_no_bcd        = (ON|OFF), default: OFF
              on some boards the value of addr_day is not stored in BCD, although everything else
              is.  This option has no effect is the option bcd is not enabled.





       Written by Sergei Haller <>.


       Report bugs at the bug tracking system (see HOMEPAGE) or on the mailing list nvram-wakeup-


       Copyright © 2001-2004 Sergei Haller.

       This program is free software; you can redistribute it and/or modify it under the terms of
       the GNU General Public License as  published  by  the  Free  Software  Foundation;  either
       version 2 of the License, or (at your option) any later version.

       This  program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
       without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR  PURPOSE.
       See the GNU General Public License for more details.

       You should have received a copy of the GNU General Public License along with this program;
       if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite  330,  Boston,
       MA  02111-1307  USA