NAME

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

DESCRIPTION

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

SYNTAX

Any empty line or a line containing only space characters is ignored.
Anyting 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.

OPTIONS

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: undefinedaddr_chk_l = (0x00|...|0x71), default: undefinedaddr_stat = (0x00|...|0x71), default: undefinedaddr_mon = (0x00|...|0x71), default: undefinedaddr_day = (0x00|...|0x71), default: undefinedaddr_hour = (0x00|...|0x71), default: undefinedaddr_min = (0x00|...|0x71), default: undefinedaddr_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 nvram.
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: undefinedaddr_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 one board, which stores a
weekday vector (ASUS_SP98_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: undefinedrtc_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
to
#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: OFFreset_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: 0shift_mon = (0|...|4), default: 0shift_day = (0|...|3), default: 0shift_wdays = (0|...|1), default: 0shift_hour = (0|...|3), default: 0shift_min = (0|...|2), default: 0shift_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 byte:
000xxxxx -> shift_day = 0
00xxxxx0 -> shift_day = 1
0xxxxx00 -> shift_day = 2
xxxxx000 -> shift_day = 3need_reboot = (OFF|ON_STAT|ON_SEC|ON_MIN|ON_HOUR
|ON_DAY|ON_MON|ON_WDAYS|ON_ANY_CHANGE|...),
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
ON_ANY_CHANGE
means, the board needs it after _any_ change on nvram.
ON_STAT
means, reboot only if the status bit is changed
ON_STAT|ON_SEC
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
http://intel.com/design/chipsets/datashts/)
DS1685 access upper nvram by a method used by the Dallas
Semiconductor DS1685/DS1687 chips.
(datasheet at http://www.farnell.com/datasheets/4182.pdf)
VT82Cxxx
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.
(datasheet at
http://www.viatech.com/pdf/productinfo/686a.pdf)
VT8235_37
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 values:
undefined
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.

OBSCUREOPTIONS

rtc_mon_0_is_c0 = (ON|OFF), default: OFFrtc_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.