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.
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.
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:
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
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:
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
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:
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 byte:
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
|
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
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.
OBSCURE OPTIONS¶
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.
SEE ALSO¶
nvram-wakeup(8)
HOMEPAGE¶
http://sf.net/projects/nvram-wakeup/
AUTHOR¶
Written by Sergei Haller <Sergei.Haller@math.uni-giessen.de>.
REPORTING BUGS¶
Report bugs at the bug tracking system (see HOMEPAGE) or on the mailing list
nvram-wakeup-devel@lists.sourceforge.net
COPYRIGHT¶
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