add upgrade-fw script
This commit is contained in:
@@ -1,27 +1,99 @@
|
||||
#!/bin/sh
|
||||
|
||||
FILE="$1"
|
||||
MTDDEV="/dev/mtd3"
|
||||
SAFEFILE="/root/new.fw"
|
||||
CHECKSTR="Linux-2.6.32.42_stm24_0208-idl4k"
|
||||
GITHUB1="https://github.com/perexg/satip-axe/tree/master/dist"
|
||||
GITHUB2="https://github.com/perexg/satip-axe/blob/master/dist/$FILE?raw=true"
|
||||
|
||||
if test -z "$FILE"; then
|
||||
if test "$FILE" = "-h" -o "$FILE" = "--help"; then
|
||||
echo "Usage: $0 FIRMWARE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$FILE"; then
|
||||
echo "Trying to fetch the list of available firmware files:"
|
||||
if ! wget -q -O /root/list.txt "$GITHUB1"; then
|
||||
echo "FAILED"
|
||||
exit 1
|
||||
fi
|
||||
grep -o -E ">satip-axe-.*.fw<" /root/list.txt | grep -o -E "satip-axe.*.fw"
|
||||
rm /root/list.txt
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! test -r "$FILE"; then
|
||||
echo "Downloading $FILE:"
|
||||
if ! wget -O "$SAFEFILE" "$GITHUB2/$FILE"; then
|
||||
echo "Unable to fetch firmware file $GITHUB2"
|
||||
exit 1
|
||||
fi
|
||||
FILE="$SAFEFILE"
|
||||
fi
|
||||
|
||||
if ! grep "$CHECKSTR" "$FILE" > /dev/null; then
|
||||
echo "$FILE does not appear to be the satip-axe firmware!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! cp "$FILE" /root/new.fw; then
|
||||
echo "Copy error..."
|
||||
exit 1
|
||||
if test "$FILE" != "$SAFEFILE"; then
|
||||
if ! cp "$FILE" "$SAFEFILE"; then
|
||||
echo "Copy error..."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if nandwrite -p /dev/mtd3 /root/new.fw; then
|
||||
echo "Success, type 'reboot' to reboot"
|
||||
else
|
||||
echo "FAIL (try again)"
|
||||
fi
|
||||
echo "Preparing to flash - killing minisatip, unmounting USB sticks"
|
||||
umount /media/*
|
||||
touch /tmp/nosatip
|
||||
killall -9 minisatip
|
||||
sync ; sync
|
||||
|
||||
rm -f /root/new.fw
|
||||
sleep 3
|
||||
|
||||
first=true
|
||||
second=true
|
||||
while test 1 -eq 1; do
|
||||
FILESIZE=$(stat -c "%s" "$SAFEFILE")
|
||||
if test -z "$FILESIZE" -o $FILESIZE -le 0; then
|
||||
echo "Unable to determine file size for $SAFEFILE"
|
||||
exit 1
|
||||
fi
|
||||
echo "Verifying... Dumping current flash contents."
|
||||
nanddump -f "$SAFEFILE.old" -l "$FILESIZE" "$MTDDEV"
|
||||
FILESIZE2=$(stat -c "%s" "$SAFEFILE.old")
|
||||
if test "$FILESIZE" -gt "$FILESIZE2"; then
|
||||
echo "Unable to verify (file sizes does not match - $FILESIZE > $FILESIZE2"
|
||||
exit 1
|
||||
fi
|
||||
if ! dd if=/dev/null seek="$FILESIZE" bs=1 of="$SAFEFILE.old" 2> /dev/null; then
|
||||
echo "DD truncate failed"
|
||||
exit 1
|
||||
fi
|
||||
FILESIZE2=$(stat -c "%s" "$SAFEFILE.old")
|
||||
if test "$FILESIZE" != "$FILESIZE2"; then
|
||||
echo "Unable to verify (file sizes does not match - $FILESIZE != $FILESIZE2"
|
||||
exit 1
|
||||
fi
|
||||
result=$(diff "$SAFEFILE.old" "$SAFEFILE")
|
||||
if test -z "$result"; then
|
||||
echo "Verify OK. Flash write successful."
|
||||
echo "Type 'reboot' now..."
|
||||
rm -f "$SAFEFILE" "$SAFEFILE.old"
|
||||
exit 0
|
||||
fi
|
||||
rm -f "$FILESIZE.old"
|
||||
if test "$first" != "true"; then
|
||||
echo "** Flash contents do not match. **"
|
||||
if test "$second" != "true"; then
|
||||
echo "** Flashing failed. Consider to use an USB stick to recover. **"
|
||||
fi
|
||||
echo -n "Repeat the flash write? Use 'Ctrl-C' to abort or Enter to repeat: "
|
||||
read i
|
||||
second=
|
||||
fi
|
||||
echo "Flashing..."
|
||||
nandwrite2 -p "$MTDDEV" "$SAFEFILE"
|
||||
first=
|
||||
done
|
||||
|
Reference in New Issue
Block a user