#! /bin/sh
##################################################################################


kernel_update_device=""
kernel_update_start=0
kernel_update_len=0
name_list=""

get_kernel_mtd() {
    kernel_image_size=$1
    state=0
    name_start=""
    device=""

    for i in `cat /proc/mtd`; do
        case $i in
            mtd*:)
                device=${i%%:}
                state=0
                name_start=""
                ;;
            00*)
                if [ $state -eq 0 ]; then
                    size=$((0x${i}))
                    state=1
                fi
                ;;
            \"*\")
                name=${i%%\"}
                name=${name##\"}
#                echo "name=$name"
                eval "${name}_device=$device"
                eval "${name}_size=$size"
                name_list="$name_list ${name}"
                ;;
            \"*)
                name_start="${i##\"}"
#                echo "(start) name_start=$name_start"
                ;;
            \(*\)\")
                i=${i%%\)\"}
                i=${i##\(}
                name=${name_start}_${i%%\"}
#                echo "name (combined 2)=$name"
                eval "${name}_device=$device"
                eval "${name}_size=$size"
                name_list="$name_list ${name}"
                ;;
            *\")
                name=${name_start}_${i%%\"}
#                echo "name (combined)=$name"
                eval "${name}_device=$device"
                eval "${name}_size=$size"
                name_list="$name_list ${name}"
                ;;
            *)
                name_start="${name_start}_${i}"
#                echo "(middle) name_start=$name_start"
                ;;
        esac
    done

    for i in $name_list ; do
        exec_str="echo ${i}_device=\$${i}_device"
        eval $exec_str
        exec_str="echo ${i}_size=\$${i}_size"
        eval $exec_str
    done
    
    if [ -z "$Kernel_without_jffs2_size" ]; then  
        Kernel_without_jffs2_size=$kernel_image_size 
    fi
    echo Kernel_Start_Add=$((0x10000000 + $bootloader_size))
    echo Kernel_End_Addr=$((0x10000000 + $bootloader_size + $kernel_image_size))
    echo Kernel_without_jffs2_Addr=$((0x10000000 + $bootloader_size + $Kernel_without_jffs2_size))

    if [ $kernel_image_size -le $Kernel_without_jffs2_size ] ; then
        kernel_update_device=$Kernel_without_jffs2_device
        kernel_update_start=$((0x10000000 + $bootloader_size))
        kernel_update_len=$Kernel_without_jffs2_size
        return 0
    fi

    kernel_update_device=$kernel_device
    kernel_update_start=$((0x10000000 + $bootloader_size))
    kernel_update_len=$kernel_image_size
    return 0
}


#. /etc/init.d/rc.conf

##################################################################################
# install results:
##################################################################################
export INSTALL_SUCCESS_NO_REBOOT=0
export INSTALL_SUCCESS_REBOOT=1
export INSTALL_WRONG_HARDWARE=2
export INSTALL_KERNEL_CHECKSUM=3
export INSTALL_FILESYSTEM_CHECKSUM=4
export INSTALL_URLADER_CHECKSUM=5
export INSTALL_OTHER_ERROR=6
export INSTALL_FIRMWARE_VERSION=7
export INSTALL_DOWNGRADE_NEEDED=8

force_update=n
for i in $* ; do
    case $i in
        -f)
            force_update=y
        ;;
    esac
done

##################################################################################
# get Kernelversion for further handling (update 2.4<->2.6)
##################################################################################
case `uname -r` in
    2.4*)
        echo "install: have Kernel 2.4";
        kversion=24
        ;;
    2.6*)
        echo "install: have Kernel 2.6";
        kversion=26
        ;;
    *)
        exit $INSTALL_OTHER_ERROR
        ;;
esac

##################################################################################
echo "install: check and install new firmware ..."
##################################################################################

LED_DEVICE=/proc/led_mod/led
if [ ! -f /proc/led_mod/led  ] ; then
    LED_DEVICE=/var/led 
    echo "set led: ${LED_DEVICE}"
fi

need_reboot=$INSTALL_SUCCESS_NO_REBOOT
korrekt_version=0

##################################################################################
# Power LED blinken lassen
##################################################################################
echo "set INFO led to blink (modul=7, state=4)"
echo 7,4>${LED_DEVICE}


if [ ${kversion} = 24 ] ; then
	##################################################################################
	# ACHTUNG ACHTUNG ACHTUNG Memory Layout prfen Entfaellt!!!
	# Ggfs. ist ein Urlader- bzw. Memorylayout-Update erforderlich!
	##################################################################################
	#
	# ANM.: Das Handling von alten Gerten ohne Installtype ist nunmehr etwas intransparent...
	#
	#       Erluterung:
	#           Updateversuche auf alte Gerte ohne Installtype erzeugen bereits bei der
	#           Memorylayoutprfung einen Fehler, falls diese Firmware die Falsche fr das alte Gert ist!
	#
	#       Fehlerdetektion:
	#           1.) Es gibt zwei Arten von altem Memorylayout mit jeweils eindeutigem Merkmal (s.u.).
	#               Wenn das Gert eines mit altem Layout ist, mu auch die fr das Merkmal erwartete
	#               "install-XMB-urlader" Datei in der ankommenden FW vorliegen.
	#           2.) Falls es daran nicht scheitert so stimmt der erwartete Urlader nicht mit
	#               dem mitgelieferten berein. (In der "install-XMB-urlader" Datei wird der erwartete
	#               aus der HWRevision des alten Gertes ermittelt und als verfgbar vorausgesetzt).
	#               [ Dieser Fall knnte bei hausinternen verwendeten alten 'FRITZ!Box FON' - mit FW die
	#                 nicht aus echten Releases stammt - auftreten, da diese dasselbe Merkmal
	#                 wie alte 'FRITZ!Box' haben.]
	#
	#       Voraussetzung fr diese Vorgehensweise ist:
	#           Nur Gerte mit altem Memorylayout haben ggfs. keinen Installtype.
	#           Das trifft auf echte Releases von 'FRITZ!Box' (< 05.02.78) und 'FRITZ!Box SL' (< 05.01.70) zu.
	#           Alle echten Releases anderer Gerte haben bereits einen Installtype.
	#
	#       >>> Somit darf die nachfolgende Installtype-Prfung
	#       >>> immer von der Existenz des Installtypes ausgehen!
	#
	##################################################################################
	if [ -e /dev/mtdblock/5 ] ; then
		echo "altes 4MB Memory layout, mtd5 existiert"
		exit $INSTALL_FIRMWARE_VERSION	# altes MemoryLayout wird nicht mehr untersttzt, Umweg ueber Zwischenupdate (dieses update verhindern)
	fi

	if [ ! -e /dev/mtdblock/4 ] ; then
		echo "altes 2MB Memory layout, mtd4 existiert nicht"
		exit $INSTALL_FIRMWARE_VERSION	# altes MemoryLayout wird nicht mehr untersttzt, Umweg ueber Zwischenupdate (dieses update verhindern)
	fi
fi





##################################################################################
#       Die nachfolgende Installtype-Prfung darf
#       immer von der Existenz des Installtypes ausgehen! (s.o.)
#
#       ANM.: Bei alten Gerten ohne Installtype, welche mit korrekter FW geupdatet werden sollen
#       liefert die nachfolgende Installtype-Prfung via '/etc/version --install=xyz'  immer 'TRUE', 
#       da sich in /etc/version der CASE ohne default-Tag bei nichtexistentem Tag leider so verhlt.
#       Das ist bei alten FW-Versionen noch der Fall und wird hiermit toleriert.
##################################################################################
################################
# list of accepted installtypes:
################################
echo OEM=$OEM
# get annex from Kernel dep env path
if [ "${kversion}" = 24 ] ; then
    export ANNEX=`cat /proc/sys/dev/adam2/annex`
else
    export ANNEX=`cat /proc/sys/urlader/annex`
fi
if [ -z "${ANNEX}" ] ; then echo ANNEX=${ANNEX} not supported ; exit $INSTALL_WRONG_HARDWARE ; fi
echo ANNEX=$ANNEX
# Fritz_Box_WLAN
if [ -z "$DISABLE_Fritz_Box_WLAN" ] ; then
   echo testing acceptance for device Fritz_Box_WLAN ...
   if /etc/version --install=ar7_4MB_1eth_2ab_isdn_pots_wlan_43040 ; then
       echo device has installtype ar7_4MB_1eth_2ab_isdn_pots_wlan_43040
       # passt der ANNEX ?
       accept_annex=B
       echo assumed ANNEX ${accept_annex} -- found ANNEX "${ANNEX}"
       if [ "${accept_annex}" = "${ANNEX}" ] ; then
           echo device has ANNEX ${ANNEX}
           # passt der OEM ?
           if [ ! -z "${OEM}" ] ; then
               oem_found=0
               for i in  avm 1und1 aol ; do
                   if [ "$i" = "${OEM}" ] ; then
                       echo "OK - OEM ${OEM} is supported"
                       oem_found=1
                       break
                   fi
               done
               if [ "$oem_found" = "0" ] ; then 
                   echo "OEM ${OEM} not supported"
                   exit $INSTALL_WRONG_HARDWARE
               fi
           fi
           echo OK - accept this update for device Fritz_Box_WLAN ...
           korrekt_version=1
       fi
   fi
   echo testing acceptance for device Fritz_Box_WLAN done
fi

kernel_start=0x90010000
kernel_size=3866624
filesystem_start=0x90000000
filesystem_size=0
urlader_start=0x90000000
urlader_size=65536
newFWver=04.34
#! /bin/sh
#! /bin/sh
if [ $korrekt_version = 0 ] ; then
    echo "error: installype not korrket"
    echo "set INFO led to off (modul=7, state=1)"
    echo 7,1>${LED_DEVICE}
    exit $INSTALL_WRONG_HARDWARE # warum auch immer: fr diese Gert wird die FW abgelehnt
fi
##################################################################################
# Rcksprung nur fr die 11.01.xx verhindern
#
# FW Version Muster: xx.BB.CC  --  der Nummernkreis BB muss bereinstimmen und CC grer oder gleich sein
#
##################################################################################
currFWver=`/etc/version -v`
echo "curr: ${currFWver}  new: xx.${newFWver}"
# Version AA.BB.CC zerlegen
major_currFWver=${currFWver%%.*} # bis zum ersten Punkt
middle_currFWver=${currFWver%.*}; middle_currFWver=${middle_currFWver#*.} # dazwischen
minor_currFWver=${currFWver##*.} # ab dem letzten Punkt
echo "debug: curr: ${major_currFWver}.${middle_currFWver}.${minor_currFWver}"
middle_newFWver=${newFWver%.*}; middle_newFWver=${middle_newFWver#*.} # dazwischen
minor_newFWver=${newFWver##*.} # ab dem letzten Punkt
echo "debug: new: \"XX.${middle_newFWver}.${minor_newFWver}\""
##################################################################################
#  fhrenden Nullen beseitigen damit die Werte zur Berechnung genutzt werden
#  knnen
##################################################################################
major_currFWver=${major_currFWver##0}
middle_currFWver=${middle_currFWver##0}
minor_currFWver=${minor_currFWver##0}
major_newFWver=${major_newFWver##0}
middle_newFWver=${middle_newFWver##0}
minor_newFWver=${minor_newFWver##0}
echo "major_currFWver=$major_currFWver"
echo "middle_currFWver=$middle_currFWver"
echo "minor_currFWver=$minor_currFWver"
echo "middle_newFWver=$middle_newFWver"
echo "minor_newFWver=$minor_newFWver"
##################################################################################
# update verhindern
##################################################################################
if [ -z "${middle_currFWver}" ] || [ -z "${minor_currFWver}" ] || [ -z "${middle_newFWver}" ] || [ -z "${minor_newFWver}" ] ; then
    echo "error: could not resolve Firmwareversion"
    echo "set INFO led to off (modul=7, state=1)"
    echo 7,1>${LED_DEVICE}
    exit $INSTALL_FIRMWARE_VERSION
fi
##################################################################################
# Downgrade with factorysettings or normal update ?
##################################################################################
if [ "${force_update}" = "y" ] ; then
    echo "Force: Accept Firmware Version: xx.${newFWver} "
    echo "Force: factorysettings ..."
    ##################################################################################
    # factorysettings
    ##################################################################################
    id=$((0x10))
    while [ $id -le 255 ] ; do
        echo "clear_id $id" >/proc/tffs
        id=$(($id + 1))
    done
    id=$((0x4000))
    while [ $id -le $((0x4040)) ] ; do
        echo "clear_id $id" >/proc/tffs
        id=$(($id + 1))
    done
    id=$((0x4400))
    while [ $id -le $((0x4440)) ] ; do
        echo "clear_id $id" >/proc/tffs
        id=$(($id + 1))
    done
    echo "Force: factorysettings done."
else
    echo "check Firmware Version: xx.${newFWver}"
    ##################################################################################
    #    BB (neu) < BB (aktuell) :   update rueckfrage anstossen
    #    BB (neu) = BB (aktuell) &&  CC (neu) < CC (aktuell) :   update rueckfrage anstossen
    ##################################################################################
    if [ "$middle_newFWver" -lt "$middle_currFWver" ] ; then
        echo "warning: Firmware downgrade detected"
        echo "set INFO led to off (modul=7, state=1)"
        echo 7,1>${LED_DEVICE}
        # behaviour for devices which basically are downgradable
        exit $INSTALL_DOWNGRADE_NEEDED
    else
        echo "DEBUG: $middle_newFWver >= $middle_currFWver"
    fi
    if [ "$middle_newFWver" -eq "$middle_currFWver" ] ; then
        if [ "$minor_newFWver" -lt "$minor_currFWver" ] ; then
            echo "warning: Firmware downgrade detected"
            echo "set INFO led to off (modul=7, state=1)"
            echo 7,1>${LED_DEVICE}
            # behaviour for devices which basically are downgradable
            exit $INSTALL_DOWNGRADE_NEEDED
        else
            echo "DEBUG: $minor_newFWver >= $minor_currFWver"
        fi
    else
        echo "DEBUG: $middle_newFWver > $middle_currFWver"
    fi
    echo "Accept Firmware Version: xx.${newFWver}"
fi
echo install: ${kversion} check files...
##################################################################################
# firmware Files pruefen
##################################################################################
# skip filesystem if empty
if [ -f /var/tmp/filesystem.image ] && [ $filesystem_size -ne 0 ] ; then
    if ! /var/chksum /var/tmp/filesystem.image ; then
        echo "chksum for file /var/tmp/filesystem.image failed."
        echo "set INFO led to off (modul=7, state=1)"
        echo 7,1>${LED_DEVICE}
        exit $INSTALL_FILESYSTEM_CHECKSUM
    fi
    echo chksum for file /var/tmp/filesystem.image ok
fi
if [ -f /var/tmp/kernel.image ] ; then
    if ! /var/chksum /var/tmp/kernel.image ; then
        echo "chksum for file /var/tmp/kernel.image failed."
        echo "set INFO led to off (modul=7, state=1)"
        echo 7,1>${LED_DEVICE}
        exit $INSTALL_KERNEL_CHECKSUM
    fi
    echo chksum for file /var/tmp/kernel.image ok
fi
if [ ${kversion} = 24 ] ; then
	if [ -f /var/tmp/urlader.image ] ; then
	# awaiting whole package of files
		if ! /var/chksum /var/tmp/urlader.image ; then
			echo "chksum for file /var/tmp/urlader.image failed."
			echo "set INFO led to off (modul=7, state=1)"
			echo 7,1>${LED_DEVICE}
			exit $INSTALL_URLADER_CHECKSUM
		fi
		if [ ! -f /var/urlader.config ] ; then
			echo "file /var/urlader.config missing."
			echo "set INFO led to off (modul=7, state=1)"
			echo 7,1>${LED_DEVICE}
			exit $INSTALL_URLADER_CHECKSUM
		fi
		if [ ! -f /var/urlader.setconfig${kversion} ] ; then
			echo "file /var/urlader.setconfig${kversion} missing."
			echo "set INFO led to off (modul=7, state=1)"
			echo 7,1>${LED_DEVICE}
			exit $INSTALL_URLADER_CHECKSUM
		fi
		echo bootstrap file-check  ok
	fi
fi
##################################################################################
# prepare install
##################################################################################
rm -f /var/post_install
echo "#! /bin/sh" >/var/post_install
echo 'echo $0: start' >>/var/post_install
# LED blink
echo "echo 7,4>${LED_DEVICE}" >>/var/post_install
# LED- und Betriebsstundenzaehler- Demon stoppen
echo "sleep 1" >>/var/post_install
echo "killall run_clock" >>/var/post_install
echo "if ps | grep -v grep | grep -q telefon ; then killall telefon ; fi" >>/var/post_install
echo "if ps | grep -v grep | grep -q telnetd ; then killall telnetd ; fi" >>/var/post_install
# ueberfluessigen urlader-env eintrag entsorgen
if [ ${kversion} = 24 ] ; then
  echo "echo language > /proc/sys/dev/adam2/environment" >>/var/post_install
else
  echo "echo language > /proc/sys/urlader/environment" >>/var/post_install
echo "echo MODE=update > /dev/avm_power" >>/var/post_install
fi
# unmittelbar vor dem Flashen den Watchdog ausschalten
if [ -e /dev/watchdog ] ; then >>/var/post_install
  echo "echo \"disable\" > /dev/watchdog" >>/var/post_install
fi >>/var/post_install
# wer luft jetzt noch ?
echo "echo still running:" >>/var/post_install
echo "ps" >>/var/post_install
echo "lsmod" >>/var/post_install
echo "sleep 1" >>/var/post_install
##################################################################################
# setting files to install
##################################################################################
if [ ${kversion} = 24 ] ; then
    echo install: ${kversion} setting files to install...
    # variable to hold mtd number - used for bootstrap-upgrade and later on for possible emergency-fallback.
    umtd=""
    # at least this two images must be present - or bootstrap-upgrade makes no sense.
    if [ -f /var/tmp/urlader.image ] && [ -f /var/tmp/kernel.image ] ; then
        # test: update needed?
        bootver=`cat /proc/sys/dev/adam2/environment | grep bootloaderVersion`;
        bootver=`echo ${bootver##bootloaderVersion} | tr -d ' '`;
        if [ "${bootver}" = "0.18.01" ] ; then
            # adam2 found, need upgrade!
            echo "install: need bootstrap upgrade"
            chmod +x /var/urlader.setconfig${kversion}
            chmod +w /var/tmp/urlader.image
            # test for mtd2
            umtd=`cat /proc/mtd | grep "00010000 00010000"`; umtd=${umtd%%:*}; umtd=${umtd##mtd};
            if [ "$umtd" -ne 2 ] ; then
                echo "install: abort bootstrap upgrade - mtd2 assumed, but mtd${umtd} found."
                echo "set INFO led to off (modul=7, state=1)"
                echo 7,1>${LED_DEVICE}
                exit $INSTALL_URLADER_CHECKSUM
            fi
            # abort if default maca found in env (prevent persistent storing).
            umaca=`cat /proc/sys/dev/adam2/environment | grep maca`;
            umaca=`echo ${umaca##maca} | tr -d ' '`;
            if [ "${umaca}" = "00:04:0E:FF:FF:01" ] || [ "${umaca}" = "00:04:7F:FF:FF:01" ] ; then
                echo "install: abort bootstrap upgrade - default maca found: ${umaca}"
                echo "set INFO led to off (modul=7, state=1)"
                echo 7,1>${LED_DEVICE}
                exit $INSTALL_URLADER_CHECKSUM
            fi
            ####################################################################
            # straight forward (if write config fails we'll be dead) ...
            # enable emergency-fallback: if we need to restore later, the original bootstrap is available.
            echo "install: prepare fallback with mtd${umtd}"
            echo "cat /dev/mtdblock/${umtd} > /var/tmp/urlader.image.saved" >>/var/post_install
            # write new bootstrap
            echo "install: write bootstrap upgrade to mtd${umtd}"
            echo "cat /var/tmp/urlader.image > /dev/mtdblock/${umtd}" >>/var/post_install
            echo "/var/urlader.setconfig${kversion} -i /var/urlader.config -u  /dev/mtdblock/${umtd}" >>/var/post_install
            # skip any setting of $need_reboot - further images needed.
        else
            echo "install: skip bootstrap update"
        fi
    fi
    if [ -f /var/tmp/kernel.image ] ; then
        crc_param=1
        echo "install: /var/tmp/kernel.image to mtd1"
        echo "update_parameter=flash_update_file0=\"/var/tmp/kernel.image,$kernel_start,$kernel_size,crc=${crc_param}\"" >>/var/post_install
        need_reboot=$INSTALL_SUCCESS_REBOOT
    fi
# skip filesystem if empty
    if [ -f /var/tmp/filesystem.image ] && [ $filesystem_size -ne 0 ] ; then
        echo "install: /var/tmp/filesystem.image to mtd0"
        echo "update_parameter=\"\$update_parameter flash_update_file1=\"/var/tmp/filesystem.image,$filesystem_start,$filesystem_size,crc=1\"\"" >>/var/post_install
        need_reboot=$INSTALL_SUCCESS_REBOOT
    fi
    if [ $need_reboot -eq $INSTALL_SUCCESS_REBOOT ] ; then
        echo "insmod /var/flash_update.o \$update_parameter" >>/var/post_install
        ####################################################################
        # emergency-fallback: restore saved bootstrap-image on return of flash_update (normally does NEVER return)        
        #       --- In this case, we cannot return any error ---
        #       
        # Fbox may not boot up fully (i.e. hang after bootstrap is up), but recover.exe
        # based on FW less or equal version 'currFWver' found at start of this update
        # should still work with this 'unchanged' bootstrap.
        echo "if [ -f /var/tmp/urlader.image.saved ] ; then " >>/var/post_install
        echo "    cat /var/tmp/urlader.image.saved > /dev/mtdblock/${umtd} " >>/var/post_install
        echo "fi" >>/var/post_install
    fi
else
    ###########################################
    echo install: ${kversion} getting mtd to install...
    echo install: -----------------------------------------------------
    get_kernel_mtd ${kernel_size}
    echo install: -----------------------------------------------------
    echo install: Result for ${kernel_size}
    echo install: kernel_update_device=${kernel_update_device}
    echo install: kernel_update_start=${kernel_update_start}
    echo install: kernel_update_len=${kernel_update_len}
    ###########################################
    echo install: ${kversion} setting files to install...
    if [ -f /var/tmp/kernel.image ] ; then
        crc_param=1
        echo "install: /var/tmp/kernel.image to start($kernel_update_start) size($kernel_update_len)"
        echo "update_parameter=flash_update_file0=\"/var/tmp/kernel.image,$kernel_update_start,$kernel_update_len,crc=${crc_param}\"" >>/var/post_install
        need_reboot=$INSTALL_SUCCESS_REBOOT
    fi
#TODO: get_kernel_mtd() liefert falsche?! $filesystem_size (sollte '0' sein)- daher erstmal alles weglassen
# skip filesystem if empty
    if [ -f /var/tmp/filesystem.image ] ; then
        act_fs_size=`ls -l /var/tmp/filesystem.image | sed -e 's/[^0-9]/#/g' | sed -e 's/#\+[0-9]\+#\+\([0-9]\+\).*/\1/'`
        if [ $act_fs_size -ne 0 ] ; then
            echo "WARNING: /var/tmp/filesystem.image with size $act_fs_size"
            # it is not validated, that backupdate with filesystem.image works!
            # need_reboot=$INSTALL_SUCCESS_REBOOT
            need_reboot=$INSTALL_FILESYSTEM_CHECKSUM
        fi
    fi
    if [ $need_reboot -eq $INSTALL_SUCCESS_REBOOT ] ; then
        echo "insmod /var/flash_update.ko \$update_parameter" >>/var/post_install
    fi
fi
chmod +x /var/post_install
##################################################################################
# Spezialbehandlungen - aber nur wenn bis hierhin alles gut ist!
##################################################################################
if [ $need_reboot -eq $INSTALL_SUCCESS_REBOOT ] ; then
    ##################################################################################
    # suche & entferne _alte_ persistente Debugsettings um CAPIoTCP zu starten (/var/flash/debug.cfg, /var/rc.user)
    echo "install: check for old settings ..."
    OLD_SETTINGS_FILE="#! /bin/sh major=\`grep tffs /proc/devices\` tffs_major=\${major%%tffs} telnetd -l /sbin/ar7login killall capiotcp_server sleep 5 /usr/bin/capiotcp_server -p5031 -m3 &"
    cmp_file(){
        for i in $OLD_SETTINGS_FILE; do
            if [ ! "$1" = "$i" ] ; then echo "'$1' differs from '$i' - abweichung und raus ..."; return 1; fi
            shift
        done
        if [ ! -z "$1" ] ; then echo "'$1' following last member '$i' - abweichung und raus ..."; return 1; fi
        return 0;
    }
    if [ -f /var/rc.user ] ; then
        if cmp_file `cat /var/rc.user` ; then
            echo +++ nodes 61,62 komplett entsorgen
            echo clear_id $((0x61)) >/proc/tffs
            echo clear_id $((0x62)) >/proc/tffs
            rm -rf /var/rc.user
        fi
    fi
    ##################################################################################
    # Wahlregel-Konverter
    ##################################################################################
    if [ -x /var/regelex ] && [ -e /var/flash/fx_lcr ] ; then
      case ${OEM} in
          1und1)
              if [ -f /etc/default.${Country}/fx_lcr.${OEM} ]; then
                  # nur bis Version 04.25 laufen lassen, inkompatibel mit Labor
                  if [ "$middle_currFWver" -le "4" ] && [ "$minor_currFWver" -le "25" ]; then
                      echo konvertiere Wahlregeln: ./var/regelex 2 /var/flash/fx_lcr /etc/default.${Country}/fx_lcr.${OEM} /var/flash/fx_lcr
                      /var/regelex 2 /var/flash/fx_lcr /etc/default.${Country}/fx_lcr.${OEM} /var/flash/fx_lcr 2>/dev/null
                  fi
              fi
              ;;
      esac
    fi
fi
##################################################################################
if [ $need_reboot -eq $INSTALL_SUCCESS_REBOOT ] ; then
    echo "set INFO led to blink (modul=7, state=4)"
    echo 7,4>${LED_DEVICE}
else
    echo "set INFO led to off (modul=7, state=1)"
    echo 7,1>${LED_DEVICE}
fi
##################################################################################
#  returnwerte:  0 kein reboot,  1 reboot
##################################################################################
exit $need_reboot
##################################################################################
echo "****INSTALLSCRIPT STOPPED ON DEVICE FOR TESTING (disabling watchdog)****"
if [ -e /dev/watchdog ] ; then
    echo "disable" > /dev/watchdog
fi
echo "****$need_reboot****"
exit 0
##################################################################################
