#!/bin/sh
# update by obi

echo "[UPDATE]"
boxtype=`cat /etc/model`

ART=$1
if [ "$ART" == "1" ] || [ "$ART" == "2" ] || [ "$ART" == "3" ] || [ "$ART" == "4" ] || [ "$ART" == "5" ] || [ "$ART" == "7" ] || [ "$ART" == "usb" ];then
	echo "ART=$ART"
else
	echo "Use <kernel|var|root|full|usb>"
	exit 1
fi

if [ "$ART" == "1" ]; then
	PART="KERNEL"
elif [ "$ART" == "2" ]; then
	if [ "$boxtype" = "ipbox91" ] || [ "$boxtype" = "ipbox910" ] || [ "$boxtype" = "ipbox900" ] || [ "$boxtype" = "ipbox9000" ]; then 
		PART="KERNEL"
	else	
		PART="ROOT"
	fi
elif [ "$ART" == "3" ]; then
	if [ "$boxtype" = "ipbox91" ] || [ "$boxtype" = "ipbox910" ] || [ "$boxtype" = "ipbox900" ] || [ "$boxtype" = "ipbox9000" ]; then 
		PART="ROOT"
	else
		PART="VAR"
	fi
elif [ "$ART" == "4" ]; then
	if [ "$boxtype" = "ipbox91" ] || [ "$boxtype" = "ipbox910" ] || [ "$boxtype" = "ipbox900" ] || [ "$boxtype" = "ipbox9000" ]; then 
		PART="VAR"
	else
		PART="FULL"
	fi
elif [ "$ART" == "5" ]; then
	PART="FULL"
elif [ "$ART" == "7" ]; then
	PART="FULL"
else
	PART="UNKNOWN"
fi

FILENAME=$2
CMD=$3
TMPNAME=$4
LABEL=$5
DEVICE=$6

killall -9 rcS
killall -9 enigma2
/sbin/fuser -k /dev/dvb/adapter0/frontend0
killall -9 `cat /var/etc/autostart/start-config | grep emu | cut -d \" -f2 | cut -d " " -f0`
killall -9 showiframe

if [ "$ART" != "usb" ]; then swap swapalloff; fi

sleep 1
echo "0" > /proc/progress
sleep 1
showiframe -p /var/etc/boot/start.mvi &

infobox 20 UPDATE "FILENAME" "$FILENAME" & 

echo "Update started" > /dev/vfd
sleep 4

if [ `mount | grep /var/swap | wc -l` -eq 1 ]; then backpath="/var/swap"; fi
if [ `mount | grep /media/hdd | wc -l` -eq 1 ]; then backpath="/media/hdd"; fi

if [ "$backpath" ]; then
	killall -9 infobox
	infobox 10003 UPDATE "Backup your settings to $backpath!" &
	if [ ! -e "$backpath/backup/bin" ]; then mkdir -p "$backpath/backup/bin"; fi
	if [ ! -e "$backpath/backup/etc" ]; then mkdir -p "$backpath/backup/etc"; fi
	if [ ! -e "$backpath/backup/network" ]; then mkdir -p "$backpath/backup/network"; fi
	if [ ! -e "$backpath/backup/enigma2" ]; then mkdir -p "$backpath/backup/enigma2"; fi
	if [ ! -e "$backpath/backup/keys" ]; then mkdir -p "$backpath/backup/keys";	fi
	if [ ! -e "$backpath/backup/autostart" ]; then mkdir -p "$backpath/backup/autostart"; fi
	rm -r "$backpath"/backup/bin/*
	rm -r "$backpath"/backup/etc/*
	rm -r "$backpath"/backup/network/*
	rm -r "$backpath"/backup/enigma2/*
	rm -r "$backpath"/backup/keys/*
	rm -r "$backpath"/backup/autostart/*
	binskiplist=`ls -F /var/bin/ | tr " " "\n" | grep @ | sed 's/@//'`
	binlist=`ls -1 /var/bin/`
	for ROUND in $binlist; do
		skip=0
		for SKIPROUND in $binskiplist; do
			if [ "$SKIPROUND" = "$ROUND" ] || [ "rem" = "$ROUND" ] || [ "miniuboot" = "$ROUND" ] || [ "flashcp" = "$ROUND" ] || [ "audio.elf" = "$ROUND" ];then
				skip=1 
			fi
		done
		if [ "$skip" = "0" ];then
			cp /var/bin/"$ROUND" "$backpath/backup/bin"
		fi
	done
	cp /var/keys/* "$backpath/backup/keys/"
	cp /var/etc/active_cam "$backpath/backup/etc"
	cp /var/etc/*.emu "$backpath/backup/etc/"
	cp /var/etc/smbfs "$backpath/backup/etc/"
	cp /var/etc/ftpfs "$backpath/backup/etc/"
	cp /var/etc/network/interfaces "$backpath/backup/network/"
	cp /var/etc/upnpfs "$backpath/backup/etc/"
	cp /var/etc/blueKey "$backpath/backup/etc/"
	cp /var/etc/resolv.conf "$backpath/backup/etc/"
	cp /var/etc/smb.conf "$backpath/backup/etc/"
	if [ -e /var/etc/volume.xml ]; then
		cp /var/etc/volume.xml "$backpath/backup/etc/"
	fi
	cp /etc/enigma2/lamedb "$backpath/backup/enigma2"
	cp /etc/enigma2/satellites.xml "$backpath/backup/enigma2"
	cp /etc/enigma2/*.tv "$backpath/backup/enigma2"
	cp /etc/enigma2/*.radio "$backpath/backup/enigma2"
	cp /etc/enigma2/settings "$backpath/backup/enigma2"
	cp /etc/enigma2/timers.xml "$backpath/backup/enigma2"
	cp /var/etc/autostart/start-config "$backpath/backup/autostart"

	touch "$backpath/backup/.firstrun"
	sync
fi

if [ ! -e /var/swap/backup/.firstrun ] && [ ! -e /media/hdd/backup/.firstrun ]; then
	infobox 9999 "UPDATE" "ACHTUNG: Settings Backup fehlgeschlagen" " " "OK = Weiter" "EXIT = Abbrechen / Reboot" &
	echo "FB - ABFRAGE" > /dev/vfd
	abfrage /dev/input/event0; ret=$?
	killall infobox
	if [ $ret -eq 1 ]; then
		echo "Reboot" > /dev/vfd
		sync
		sleep 2
		echo "[UPDATE] reboot from useraktion"
		reboot -f
	fi
fi

sleep 2
echo "Check Image" > /dev/vfd
killall infobox
infobox 2 UPDATE "Check Image" & 
sleep 2
ls -1 /tmp > tmp.txt

LINE=`cat tmp.txt`
echo "[UPDATE] $LINE"
for DIR in $LINE; do
	if [ "$DIR" == `echo $FILENAME | tr "/" "\n" | tail -n1` ];then 
		echo Skip `echo $FILENAME | tr "/" "\n" | tail -n1`	
	elif [ "$DIR" == `echo $FILENAME | tr "/" "\n" | tail -n1 | sed 's/.img/.md5/'` ];then
		echo Skip `echo $FILENAME | tr "/" "\n" | tail -n1 | sed 's/.img/.md5/'`
	else
		echo "[UPDATE] rm $DIR"
		rm -r /tmp/$DIR
	fi
done

if [ "online" == `echo $FILENAME | cut -d "/" -f3` ];then
	echo "Download Image" > /dev/vfd
	killall infobox
	cd /tmp

	$CMD "$TMPNAME"/`echo $FILENAME | tr "/" "\n" | sed '/^ *$/d' | tail -n1`
	if [ "$ART" != "usb" ];then	
		if [ ! -e `echo $FILENAME | tr "/" "\n" | tail -n1` ]; then
			killall infobox
			infobox 20 UPDATE "Error img file missing" & 
			echo "[UPDATE] Error img file missing"
			echo "Download Error" > /dev/vfd
			sleep 20
			echo "Reboot" > /dev/vfd
			echo "[UPDATE] reboot"
			reboot -f
		fi

		$CMD "$TMPNAME"/`echo $FILENAME | tr "/" "\n" | sed '/^ *$/d' | tail -n1 | sed 's/.img/.md5/`
		if [ ! -e `echo $FILENAME | tr "/" "\n" | tail -n1 | sed 's/.img/.md5/'` ]; then
			killall infobox
			infobox 20 UPDATE "Error md5 file missing" & 
			echo "[UPDATE] Error md5 file missing"
			echo "Download Error" > /dev/vfd
			sleep 20
			echo "Reboot" > /dev/vfd
			echo "[UPDATE] reboot"
			reboot -f
		fi

	else
		if [ "$CMD" = "wget.info" ]; then
			$CMD "$TMPNAME"/`echo $FILENAME | tr "/" "\n" | sed '/^ *$/d' | tail -n1 | sed 's/.tar.gz/.md5/`
			if [ ! -e `echo $FILENAME | tr "/" "\n" | tail -n1 | sed 's/.tar.gz/.md5/'` ]; then
				killall infobox
				infobox 20 UPDATE "Error md5 file missing" & 
				echo "[UPDATE] Error md5 file missing"
				echo "Download Error" > /dev/vfd
				sleep 20
				echo "Reboot" > /dev/vfd
				echo "[UPDATE] reboot"
				reboot -f
			fi
		fi
	fi
	echo "Download done" > /dev/vfd
	sleep 2
	killall infobox
	infobox 20 UPDATE "Check Image" & 
	echo "Check Image" > /dev/vfd
	FILENAME=/tmp/`echo $FILENAME | tr "/" "\n" | sed '/^ *$/d' | tail -n1`
	echo "[UPDATE] remove /tmp/online"
	rm -r /tmp/online
	echo "[UPDATE] filename $FILENAME"
fi

if [ "$ART" == "usb" ] && [ "$CMD" = "wget.info" ]; then
	MD5=`/sbin/md5sum "$FILENAME" | cut -d"/" -f1`
	echo "[UPDATE] MD5 DOWN $MD5"
	MD5TMP=`echo $FILENAME | sed 's/.tar.gz/.md5/'`
	echo "UPDATE] MD5TMP $MD5TMP"
	MD5FILE=`cat $MD5TMP`
	echo "UPDATE] MD5FILE $MD5FILE"
	echo "[UPDATE] MD5 FILE $MD5"

	if [ "$MD5" == "$MD5FILE" ];then
		echo ART $ART MD5 $MD5 == $MD5FILE ok
		killall infobox
		infobox 20 UPDATE "MD5 OK" "MD5 DOWN: $MD5" "MD5 FILE: $MD5FILE" &
	else
		killall infobox
		infobox 20 UPDATE "MD5 ERROR" "MD5 DOWN: $MD5" "MD5 FILE: $MD5FILE" &
		echo ART $ART MD5 $MD5 <> $MD5FILE error exit backup
		echo MD5 ERROR reboot > /dev/vfd
		sleep 20
		echo "[UPDATE] reboot"
		reboot -f
		exit
	fi
	
elif [ "$ART" != "usb" ]; then
	echo "[UPDATE] FILENAME $FILENAME"
	MD5=`/sbin/md5sum "$FILENAME" | cut -d"/" -f1`
	echo "[UPDATE] MD5 DOWN $MD5"
	MD5TMP=`echo $FILENAME | sed 's/.img/.md5/'`
	MD5FILE=`cat $MD5TMP`
	echo "[UPDATE] MD5 FILE $MD5"	
fi

if [ "$ART" == "usb" ] && [ "$CMD" = "wget.info" ]; then
	if [ "$MD5" == "$MD5FILE" ];then
		echo ART $ART MD5 $MD5 == $MD5FILE ok
	else
		killall infobox
		infobox 20 UPDATE "Error MD5" "$MD5" "<>" "$MD5FILE" & 
		echo ART $ART MD5 $MD5 <> $MD5FILE error exit backup
		echo MD5 ERROR REBOOT >/dev/vfd
		sleep 20
		echo "UPDATE] reboot"
		reboot -f
		exit
	fi
	
elif [ "$ART" != "usb" ]; then
	if [ "$MD5" == "$MD5FILE" ];then
		echo ART $ART MD5 $MD5 == $MD5FILE ok
	else
		killall infobox
		infobox 20 UPDATE "Error MD5" "$MD5" "<>" "$MD5FILE" & 
		echo ART $ART MD5 $MD5 <> $MD5FILE error exit backup
		echo MD5 ERROR REBOOT > /dev/vfd
		sleep 20
		echo "[UPDATE] reboot"
		reboot -f
		exit
	fi
fi

#########################

if [ "tmp" == `echo $FILENAME | tr "/" "\n" | sed '/^ *$/d' | head -n1` ];then
	echo "/sbin flashutil $ART $FILENAME >/dev/vfd"
elif [ "$ART" == "usb" ];then
	echo "[UPDATE] tar ok"
else
	killall infobox
	infobox 10010 UPDATE "copy FILENAME" "$FILENAME" "to" "/tmp" &
	echo Copy to /tmp >/dev/vfd
	echo "[UPDATE] copy $FILENAME to /tmp"
	cp $FILENAME /tmp
	echo "[UPDATE] copy $MD5TMP to /tmp"
	cp $MD5TMP /tmp
	
	TMPFILENAME=/tmp/`echo $FILENAME | tr "/" "\n" | tail -n1`

	MD5=`/sbin/md5sum "$TMPFILENAME" | cut -d"/" -f1`
	MD5TMP=`echo $TMPFILENAME | sed 's/.img/.md5/'`
	MD5FILE=`cat $MD5TMP`
	
	if [ "$ART" != "usb" ];then
		if [ "$MD5" == "$MD5FILE" ];then
			echo ART $ART MD5 $MD5 == $MD5FILE ok
		else
			echo ART $ART MD5 $MD5 <> $MD5FILE error exit backup
			killall infobox
			infobox 20 UPDATE "Error MD5" "$MD5" "<>" "$MD5FILE" & 
			echo MD5 ERROR REBOOT >/dev/vfd
			sleep 20
			echo "[UPDATE] reboot"
			reboot -f
			exit
		fi
	fi

fi
sleep 3
killall infobox
infobox 20 UPDATE "Check OK" & 

echo Check OK >/dev/vfd
sleep 4

if [ "$ART" != "usb" ]; then
	if [ ! -e "/tmp/"`echo $FILENAME | tr "/" "\n" | tail -n1 | sed 's/.img/.md5/'` ]; then
		killall infobox
		infobox 20 UPDATE "Missing MD5" &
		echo "[UPDATE] Missing MD5"
		echo "Missing MD5" > /dev/vfd
		sleep 20
		echo "Reboot" > /dev/vfd
		echo "[UPDATE] reboot"
		reboot -f
	fi
	if [ ! -e "/tmp/"`echo $FILENAME | tr "/" "\n" | tail -n1` ]; then
		echo "[UPDATE] Missing img file"
		echo "Missing File IMG" > /dev/vfd
		killall infobox
		infobox 20 UPDATE "Missing IMG" & 
		sleep 20
		echo "Reboot" > /dev/vfd
		echo "[UPDATE] reboot"
		reboot -f
	fi

	echo Flashing !!! >/dev/vfd
	killall infobox
	
	cp /bin/busybox /tmp
	cp /bin/infobox /tmp
	cp /bin/flashcp /tmp
	cat /sbin/abfrage | sed "s#/usr/bin/awk#/tmp/awk#" > /tmp/abfrage
	chmod 777 /tmp/abfrage
	ln -s /tmp/busybox /tmp/reboot
	ln -s /tmp/busybox /tmp/killall
	ln -s /tmp/busybox /tmp/sleep
	ln -s /tmp/busybox /tmp/awk
	mknod /tmp/vfd c 147 0
	mknod /tmp/mtd1 c 90 2
	mknod /tmp/mtd2 c 90 4
	mknod /tmp/mtd3 c 90 6
	mknod /tmp/mtd4 c 90 8
	mknod /tmp/mtd5 c 90 10
	mknod /tmp/mtd6 c 90 12
	mknod /tmp/mtd7 c 90 14
	mknod /tmp/mtd8 c 90 16
	mknod /tmp/mtd9 c 90 18
	mknod /tmp/event0 c 13 64
	
	PATH="/tmp:$PATH"
	
	while true; do
		echo [UPDATE] [FLASH] /tmp/flashcp -v KERNEL "$boxtype" "$FILENAME" /tmp/mtd"$ART"
		/tmp/flashcp -v "$PART" "$boxtype" "$FILENAME" /tmp/mtd"$ART"
		if [ $? -eq 0 ]; then break; fi
		infobox 9999 "UPDATE" "ACHTUNG: Flash fehlgeschlagen" " " "OK = Weiter" "Blau = Flashen wiederholen" &
		echo "FB - ABFRAGE" > /tmp/vfd
		abfrage /tmp/event0; ret=$?
		killall infobox
		if [ $ret -eq 0 ]; then break; fi
	done
else
	if [ "$CMD" = "wget.info" ];then
		if [ ! -e `echo $FILENAME | tr "/" "\n" | tail -n1 | sed 's/.tar.gz/.md5/'` ]; then
			killall infobox
			infobox 20 UPDATE "Missing MD5" & 
			echo "[UPDATE] Missing MD5"
			echo "Missing MD5" > /dev/vfd
			sleep 20
			echo "Reboot" > /dev/vfd
			echo "[UPDATE] reboot"
			reboot -f
		fi
	fi
	echo [update] [usb] sync
	killall infobox
	infobox 20 UPDATE-USB "sync" & 
	sync
	echo [update] [usb] umount /dev/$DEVICE
	killall infobox
	infobox 20 UPDATE-USB "umount /dev/$DEVICE" & 
	umount /dev/$DEVICE
	sleep 2
	echo [update] [usb] mkfs.ext2 -L $LABEL -b 4096 /dev/$DEVICE
	mkfs.ext2 -L $LABEL -b 4096 /dev/$DEVICE
	sleep 2
	echo [update] [usb] mount /dev/$DEVICE /mnt
	killall infobox
	infobox 20 UPDATE-USB "mount /dev/$DEVICE /mnt" &
	sleep 2
	mount /dev/$DEVICE /mnt
	echo [update] [usb] tar -zxvf $FILENAME -C /mnt
	killall infobox
	tar.info -zxvf $FILENAME -C /mnt
	sleep 2
	echo [update] [usb] sync
	killall infobox
	infobox 10 UPDATE-USB "sync" &
	sync
	echo [update] [usb] sync
	sync
	echo [update] [usb] umount /dev/$DEVICE
	killall infobox
	infobox 10 UPDATE-USB "umount /dev/$DEVICE" &
	umount /dev/$DEVICE

	if [ "$boxtype" = "ufs910" ]; then

		hdd=`fw_printenv hdd | tr "=" "\n" | tail -n1`
		if [ -z "$hdd" ]; then
			hdd=no
		fi
		front=`fw_printenv front | tr "=" "\n" | tail -n1`
		if [ -z "$front" ]; then
			front=0
		fi
		backlower=`fw_printenv backlower | tr "=" "\n" | tail -n1`
		if [ -z "$backlower" ]; then
			backlower=2
		fi
		backupper=`fw_printenv backupper | tr "=" "\n" | tail -n1`
		if [ -z "$backupper" ]; then
			backupper=0
		fi
		rootdelay=`fw_printenv rootdelay | tr "=" "\n" | tail -n1`
		if [ -z "$rootdelay" ]; then
			rootdelay=0
		fi

		ethcat=`cat /var/etc/network/interfaces`
		ipaddr=`fw_printenv ipaddr | tr "=" "\n" | tail -n1`
		if [ -z "$ipaddr" ]; then
			ipaddr=`echo -e "$ethcat" | sed s/"^\s*"// | sed s/" \+"/" "/g | grep -m1 "^address" | cut -d " " -f2`
		fi
		if [ -z "$ipaddr" ]; then
			ipaddr=192.168.178.10
		fi

		serverip=`fw_printenv serverip | tr "=" "\n" | tail -n1`
		if [ -z "$serverip" ]; then
			serverip=`echo -e "$ethcat" | sed s/"^\s*"// | sed s/" \+"/" "/g | grep -m1 "^gateway" | cut -d " " -f2`
		fi
		if [ -z "$serverip" ]; then
			serverip=192.168.178.1
		fi

		gatewayip=`fw_printenv gatewayip | tr "=" "\n" | tail -n1`
		if [ -z "$gatewayip" ]; then
			gatewayip=`echo -e "$ethcat" | sed s/"^\s*"// | sed s/" \+"/" "/g | grep -m1 "^gateway" | cut -d " " -f2`
		fi
		if [ -z "$gatewayip" ]; then
			gatewayip=192.168.178.1
		fi

		gateway=`fw_printenv gateway | tr "=" "\n" | tail -n1`
		if [ -z "$gateway" ]; then
			gateway=`echo -e "$ethcat" | sed s/"^\s*"// | sed s/" \+"/" "/g | grep -m1 "^gateway" | cut -d " " -f2`
		fi
		if [ -z "$gateway" ]; then
			gateway=192.168.178.1
		fi

		ethaddr=`fw_printenv ethaddr | tr "=" "\n" | tail -n1`
		if [ -z "$ethaddr" ]; then
			ethaddr=`ifconfig | grep HWaddr | sed 's/ \+/ /g' | tr " " "\n" | sed '/^ *$/d' | tail -n1`
		fi
		if [ -z "$ethaddr" ]; then
			ethaddr=00:00:00:00:00:00
		fi

		DEV=`echo $DEVICE | cut -d "a" -f2`
		NUM=`echo $LABEL | cut -d "I" -f3`

		bootdesc=`fw_printenv bootdesc_$NUM | tr "=" "\n" | tail -n1`
		if [ -z "$bootdesc" ]; then
			if [ "$LABEL" == "MINI1" ]; then
				bootdesc="-USB-1-Speed-"
			else
				bootdesc="---USB-$NUM---"
			fi
		fi

		if [ "$hdd" = "yes" ]; then
			hdddev=b
		else
			hdddev=a
		fi

infobox 300 \
"ACHTUNG: Bootargs automatisch setzen ?" \
"Root: /dev/sd$hdddev$DEV ($LABEL) ($bootdesc)" \
"Kernel: 0:$DEV" \
"usbwait: $front:$backupper:$backlower" \
"Interne Hdd: yes" \
"" \
"[   OK   ]                                      [   EXIT   ]" &

		echo "Bootargs setzen ?" > /dev/vfd
		abfrage /dev/input/event0; ret=$?
		killall infobox
		if [ $ret -eq 1 ]; then
			echo "Reboot" > /dev/vfd
			infobox 9999 "UPDATE-USB" "Bootargs bleiben so !!!" &
			sleep 5
		else
			if [ ! -e "/var/swap/bootargs" ]; then mkdir -p "/var/swap/bootargs"; fi
			BTIME=`date +"%Y.%m.%d_%H.%M.%S"`
			fw_printenv > /var/swap/bootargs/"$BTIME"_bootargs_"$boxtype"
			echo "### OLD BOOTARGS (backup by update script) ####################" >> /var/swap/bootargs/"$BTIME"_bootargs_"$boxtype"

			echo [update] DEVICE $DEVICE
			echo [update] LABEL $LABEL
			echo [update] DEV $DEV
			echo [update] NUM $NUM	
			echo [update] fw_setenv front $front
			fw_setenv front $front
			echo [update] fw_setenv backlower $backlower
			fw_setenv backlower $backlower
			echo [update] fw_setenv backupper $backupper
			fw_setenv backupper $backupper
			echo [update] fw_setenv rootdelay $rootdelay
 			fw_setenv rootdelay $rootdelay
			echo [update] fw_setenv ipaddr $ipaddr
 			fw_setenv ipaddr $ipaddr
			echo [update] fw_setenv serverip $serverip
 			fw_setenv serverip $serverip
			echo [update] fw_setenv gatewayip $gatewayip
 			fw_setenv gatewayip $gatewayip
			echo [update] fw_setenv gateway $gateway
 			fw_setenv gateway $gateway
			echo [update] fw_setenv ethaddr $ethaddr
 			fw_setenv ethaddr $ethaddr
			echo [update] fw_setenv bootdesc_default $NUM
 			fw_setenv bootdesc_default $NUM 
	
			infobox 9999 "UPDATE-USB" "set bootargs /dev/$DEVICE" &


			if [ "$LABEL" == "MINI1" ]; then
				echo [update] fw_setenv bootdesc_$NUM "$bootdesc"
				fw_setenv bootdesc_$NUM "$bootdesc"
				echo [update] fw_setenv bootcmd_$NUM "run bootargs_$NUM;bootm a0040000"
				fw_setenv bootcmd_$NUM "run bootargs_$NUM;bootm a0040000"
			else
				echo [update] fw_setenv bootdesc_$NUM "$bootdesc"
				fw_setenv bootdesc_$NUM "$bootdesc"
				echo [update] fw_setenv bootcmd_$NUM "usb reset;ext2load usb 0:$DEV a5000000 /boot/uImage;run bootargs_$NUM;bootm a5000000"
				fw_setenv bootcmd_$NUM "usb reset;ext2load usb 0:$DEV a5000000 /boot/uImage;run bootargs_$NUM;bootm a5000000"
			fi
			echo [update] fw_setenv bootargs_$NUM "set bootargs console=ttyAS0,115200 root=/dev/sd$hdddev$DEV rw ip=\${ipaddr}:\${serverip}:${gatewayip}:\${netmask}:kathrein:eth0:off mem=64m coprocessor_mem=4m@0x10000000,4m@0x10400000 rootdelay=\${rootdelay} usb-storage.usbwait123=\${front}:\${backupper}:\${backlower} nwhwconf=device:eth0,hwaddr:\${ethaddr} init=/bin/devinit"
			fw_setenv bootargs_$NUM "set bootargs console=ttyAS0,115200 root=/dev/sd$hdddev$DEV rw ip=\${ipaddr}:\${serverip}:${gatewayip}:\${netmask}:kathrein:eth0:off mem=64m coprocessor_mem=4m@0x10000000,4m@0x10400000 rootdelay=\${rootdelay} usb-storage.usbwait123=\${front}:\${backupper}:\${backlower} nwhwconf=device:eth0,hwaddr:\${ethaddr} init=/bin/devinit"
			echo "### NEW BOOTARGS (autoset by update script) ####################" >> /var/swap/bootargs/"$BTIME"_bootargs_"$boxtype"
			fw_printenv >> /var/swap/bootargs/"$BTIME"_bootargs_"$boxtype"
			echo "### done ####################" >> /var/swap/bootargs/"$BTIME"_bootargs_"$boxtype"
		fi
	fi
fi

sleep 1
killall infobox

sleep 1
echo Done >/dev/vfd
sleep 4
infobox 10010 UPDATE "done Thx for waiting !!!" "Reboot in 10s" &
for i in 10 9 8 7 6 5 4 3 2 1; do
	echo "Reboot in $i sec" >/dev/vfd
	sleep 1
done

echo "[UPDATE] reboot"
/tmp/reboot -f
reboot -f
echo "[UPDATE] done"
