72 lines
No EOL
1.6 KiB
Bash
Executable file
72 lines
No EOL
1.6 KiB
Bash
Executable file
#!/bin/bash
|
|
# description: RR4360 PSU fix
|
|
# Runs for 10 attempts to try resolve PSU failure messages
|
|
|
|
get_inb="http://ntgr.support/tools/inb"
|
|
get_outb="http://ntgr.support/tools/outb"
|
|
inb="/etc/frontview/support/inb"
|
|
outb="/etc/frontview/support/outb"
|
|
attempts=0
|
|
debug=0
|
|
|
|
usrmsg(){
|
|
if [[ "$debug" -gt 0 ]]; then
|
|
printf "$*"
|
|
fi
|
|
}
|
|
get_tools() {
|
|
if test -f "$inb" && test -f "$outb"; then
|
|
usrmsg "Tools exist - not acquiring again.\n"
|
|
else
|
|
usrmsg "Acquiring latest tools... \n"
|
|
if ! test -f "$inb"; then
|
|
usrmsg "Missing inb; downloading now.\n"
|
|
wget -q "$get_inb" -O "$inb"
|
|
fi
|
|
if ! test -f "$outb"; then
|
|
usrmsg "Missing outb; downloading now.\n"
|
|
wget -q "$get_outb" -O "$outb"
|
|
fi
|
|
fi
|
|
chmod +x "$inb" "$outb"
|
|
}
|
|
|
|
check_problem() {
|
|
usrmsg "Querying the SMBus for its current status...\n"
|
|
problem=$($inb 0xf00f)
|
|
validate_problem
|
|
}
|
|
|
|
validate_problem() {
|
|
if [[ "$problem" -ne 7 ]]; then
|
|
usrmsg " SMBus reporting invalid value; reported: %s\n" "$problem"
|
|
fix
|
|
else
|
|
usrmsg " The SMBus is currently operating as normal. Exiting script.\n"
|
|
exit 0
|
|
fi
|
|
}
|
|
|
|
fix() {
|
|
attempts=$((attempts+1))
|
|
usrmsg " Attempt %s at fixing the SMBus..." "$attempts"
|
|
sleep 1
|
|
usrmsg " (#3)... "
|
|
"$outb" 0xf00f 3 2>/dev/null
|
|
sleep 1
|
|
usrmsg " (#7)... "
|
|
"$outb" 0xf00f 7 2>/dev/null
|
|
sleep 1
|
|
usrmsg " fix applied. \n"
|
|
verify_fix
|
|
}
|
|
verify_fix(){
|
|
if [[ "$attempts" -lt 10 ]]; then
|
|
check_problem
|
|
else
|
|
usrmsg "Attempted to recover this %s times... seek alternative recovery method.\n" "$attempts"
|
|
exit 1
|
|
fi
|
|
}
|
|
get_tools
|
|
check_problem |