File: guess-helper

package info (click to toggle)
nvram-wakeup 1.1-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, squeeze, wheezy
  • size: 1,976 kB
  • ctags: 221
  • sloc: ansic: 1,944; sh: 300; ruby: 190; makefile: 101
file content (274 lines) | stat: -rwxr-xr-x 6,933 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
#!/bin/sh
#
#   guess-helper
#   Copyright (C) 2004 Tobias Grimm <tg@e-tobi.net>
# 
#   $Id: guess-helper 925 2010-01-24 11:40:38Z tiber $
# 

# prepare to use gettext, if installed:
if [ -x /usr/bin/gettext ]
then
  export TEXTDOMAIN=guess-helper
  echo="gettext -s"
else
  echo="echo"
fi

# clear console window and print header line
ClearScreen ()
{
  clear
  echo
  echo guess-helper
  echo ------------
  echo
}

# AskQuestion "Do you like Debian?" Y n  > Do you like Debian? [Y/n]
AskQuestion ()
{
  if [ -x /usr/bin/gettext ]
  then
    question=`gettext "$1"`
  else
    question=$1    
  fi

  shift

  answers=""
  for answer in $*
  do
    if [ -x /usr/bin/gettext ]
    then
      answer=`gettext "$answer"`
    fi
    answers="$answers $answer"
  done

  choices=""  
  for answer in $answers
  do
    if [ "$choices" = "" ]
    then
      choices="[$answer"
    else
      choices="$choices/$answer"
    fi
  done
  choices="$choices]"

  answers=`$echo $answers | tr '[:lower:]' '[:upper:]'`
  
  result=0
  
  while [ $result -eq 0 ]
  do
    echo -n "$question" "$choices "
    read input
      
    if [ "$input" = "" ]
    then
      result=1
    else
      input=`echo $input | tr '[:lower:]' '[:upper:]'`
      i=1
      for answer in $answers
      do
        if [ "$answer" = "$input" ]
	then
	  result=$i
	fi
	i=`expr $i + 1`
      done
    fi
  done

  return $result
}

# Translate and print text lines
EchoTextLines ()
{
  textLines=""

  while [ "$1" ]
  do
    textLines="$textLines$1"
    shift
  done

  $echo -ne "$textLines"
}

# show next wakeup time settings and ask for reboot
ShowBiosSettings ()
{
  ClearScreen
  EchoTextLines \
    "On the next reboot, please enter the BIOS settings and change\n" \
    "the wakeup time settings to the following values:\n"
  echo
  $echo -n "Day       = " ; echo "$1"
  $echo -n "Hour      = " ; echo "$2"
  $echo -n "Minute    = " ; echo "$3"
  $echo -n "Second    = " ; echo "$4"
  if [ $5 -eq 1 ]
  then
    $echo "Enabled   = Yes"
  else
    $echo "Enabled   = No"
  fi
  echo
  AskQuestion "Restart or Abort?" "A" "r" 
  if [ $? -eq 2 ]
  then
    echo 
    EchoTextLines \
      "After changing the wakeup time in the BIOS settings and rebooting the PC,\n"\
      "please run this script again (PC will reboot in 10 seconds...)\n"
    sleep 10
    shutdown -r now
    exit 0
  else
    echo 
    $echo "Script aborted !!!"
    echo
    exit 0
  fi
}

ReadNvram ()
{
  cat_nvram $catOptions > ~/guess-directisa/$1    2>~/guess-directisa/cat_nvram.log
  [ -c /dev/nvram ] && \
  cat /dev/nvram        > ~/guess-nvram-module/$1 2>~/guess-nvram-module/cat.log
  if [ ! -s ~/guess-directisa/$1 ] && [ ! -s  ~/guess-nvram-module/$1 ] ; then
    EchoTextLines\
      "cat_nvram and cat /dev/nvram failed.\n"
      "Please check the cat_nvram.log for the details, fix the errors and run\n"
      "guess-helper again.\n"
    # if they exist, they are empty. Remove them.
    rm -fr ~/guess-directisa/$1 ~/guess-nvram-module/$1
    exit 1  
  fi 
}

step0file=guess-helper.conf
step1file=31.23.59.59+
step2file=11.12.13.14+
step3file=01.00.00.00+
step4file=01.00.00.00-

# check for needed binaries
if ! (which cat_nvram >/dev/null && \
      which cat       >/dev/null && \
      which guess     >/dev/null    ) ; then
  EchoTextLines \
    "Please check that the tools cat_nvram, cat and guess are installed.\n\n"\
    "guess-helper aborted!\n"
  exit 1
fi

if [ ! -f ~/guess-directisa/$step0file ]
then
  ClearScreen
  EchoTextLines \
    "The aim of this script is to help you figuring out the addresses of the\n"\
    "wakeup time in the NVRAM of your PC. You will have to do this only,\n"\
    "if your mainboard couldn't be detected by nvram-wakeup.\n"\
    "\n"\
    "In several steps it will be necessary to reboot the PC, change the\n"\
    "wakeup time in the BIOS and then run guess-helper again.\n"\
    "\n"\
    "This script will create several temporary files and a config file for\n"\
    "nvram-wakeup. This will be done in your home directory.\n"
  echo
  AskQuestion "Continue with the first step of the nvram-wakeup address detection?" "N" "y"
  [ $? -eq 1 ] && exit
  ClearScreen
  mkdir -p ~/guess-directisa
  EchoTextLines \
     "Please select the chipset of your Board -\n"\
     "  [U] Unknown (i.e, disable access to upper nvram);\n"\
     "  [I] Intel;\n"\
     "  [V] VIA VT82Cxxx (xxx=686A,686B,596,...), nVidia nForce2, ATI RADEON 9100 IGP; \n"\
     "  [3] VIA VT8233/35/37;\n"\
     "  [D] DS1685\n"
     
  AskQuestion "Select one of the above:" "U" "i" "v" "3" "d"
  case $? in
    2) 
      catOptions="INTEL"
      ;;
    3) 
      catOptions="VT82Cxxx"
      ;;
    4) 
      catOptions="VT8235_37"
      ;;
    5) 
      catOptions="DS1685"
      ;;
  esac
  echo catOptions=\"$catOptions\" >~/guess-directisa/$step0file
  ShowBiosSettings 31 23 59 59 1 
else
  . ~/guess-directisa/$step0file
  if [ ! -f ~/guess-directisa/$step1file ]
  then
    [ -c /dev/nvram ] && mkdir -p ~/guess-nvram-module
    ReadNvram $step1file
    ShowBiosSettings 11 12 13 14 1
  else    
    if [ ! -f ~/guess-directisa/$step2file ]
    then
      ReadNvram $step2file
      ShowBiosSettings 01 00 00 00 1
    else    
      if [ ! -f ~/guess-directisa/$step3file ]
      then
        ReadNvram $step3file
        ShowBiosSettings 01 00 00 00 0
      else
        if [ ! -f ~/guess-directisa/$step4file ]
        then
          ReadNvram $step4file
        fi
	
        ClearScreen
	
	cd ~/guess-directisa
	guess > nvram-wakeup.conf 2> guess-error.log
	[ "$catOptions" = "" ] || echo upper_method = $catOptions >> nvram-wakeup.conf
	if [ -d ~/guess-nvram-module ] ; then
	    cd ~/guess-nvram-module
	    guess > nvram-wakeup.conf 2> guess-error.log
	    cd ..
	fi
	
        EchoTextLines \
          "The nvram-wakeup address detection is finished now.\n"\
	  "If everything went well, you will find the detected nvram-wakeup\n"\
	  "settings in the file ~/guess-directisa/nvram-wakeup.conf. This file\n"\
	  "has been generated using the 'directisa' access method.\n" 
	[ -c /dev/nvram ] && EchoTextLines \
	  "In the directory ~/guess-nvram-module you will find the results using\n"\
	  "the 'nvram-kernel-module' access method. It's up to you to decide,\n"\
	  "what access method worked.\n"
	EchoTextLines \
	  "Check the files nvram-wakeup.conf and guess-error.log to see if\n"\
	  "everything went well. In order to use the generated conf file, you\n"\
	  "have to pass it as a command line parameter with the option -C to\n"\
	  "nvram-wakeup. Before doing this, you should copy it to /etc.\n"\
          "If the settings in your nvram-wakup.conf seem to work, please submit\n"\
	  "this file to the mainboard tracker:\n"
        echo
        echo "https://sourceforge.net/tracker/?group_id=35022&atid=412959"
        echo
        $echo "By doing so, you are helping to keep nvram-wakeup support more boards."
      fi
    fi
  fi
fi