diff --git a/scripts/iopupgrade.sh b/scripts/iopupgrade.sh
index f6fce8ba3d677e8366984fbfb11ce3d80d3d5292..f4385602052f7f6434eebf0a4ac8b42cbcb1610c 100644
--- a/scripts/iopupgrade.sh
+++ b/scripts/iopupgrade.sh
@@ -1,58 +1,123 @@
 # this is a developer helper script to install firmware on a remote host with SSH
 
-function usagee {
-    echo "usage: $0 iopupgrade -h <host> -f <file> "
+function upd_usage {
+    echo "usage: $0 iopupgrade -t <host> -f <file> [opts] "
     echo ""
     echo "   Default host is 192.168.1.1"
+    echo "   Default firmware file is the newest one found"
+    echo "   Default is to not keep configuration"
+    echo "opts:"
+    echo ""
+    echo "	-i	Interactive use, Allows to select firmware file"
+    echo "	-n	Do not do the final reboot of the target board"
+    echo "	-c	Keep configuration"
+    echo "	-x	Force install even if firmware is not for this board"
+    echo "	-b	Force install of bootloader regardless of version installed"
 }
 
 function set_config_string {
     eval `grep $1 .config`
 }
 
+function upd_ask_ok {
+    echo "Will Continue with the following settings"
+    echo "-----------------------------------------"
+    printf "%20s: %s\n"  "Firmare file" "$upd_fw_base"
+    printf "%20s: %s\n"  "Host ip" "$upd_host"
+    printf "%20s: " "Reboot";               if [ "$upd_noreboot"   == "0" ] ;then printf "Yes\n" ;else printf "No\n";fi
+    printf "%20s: " "Keep config";          if [ "$upd_keepconf"   == "1" ] ;then printf "Yes\n" ;else printf "No\n";fi
+    printf "%20s: " "Force bootloader";     if [ "$upd_forceboot"  == "1" ] ;then printf "Yes\n" ;else printf "No\n";fi
+    printf "%20s: " "Force image upgrade";  if [ "$upd_forceimage" == "1" ] ;then printf "Yes\n" ;else printf "No\n";fi
+    echo "-----------------------------------------"
+
+    echo -n "Continue? [Y/n]:"
+    read answer
+
+    case $answer in
+	n|N)
+	    return 1;;
+	y|Y|*)
+	    return 0;;
+    esac
+}
+
 function ssh_upgrade {
+    upd_noreboot=0
+    upd_forceboot=0
+    upd_keepconf=0
+    upd_forceimage=0
+    upd_fw_base=""
+    upd_fw=""
+    upd_host="192.168.1.1"
 
-    set_config_string CONFIG_TARGET_BOARD
-    firmwares=$(cd bin/targets/$CONFIG_TARGET_BOARD/generic/; ls -t *[0-9].y[3])
-    echo "--------------"
-    for latest in $firmwares
-    do
-	#echo "firmware $latest"
-	break
+    while getopts "f:hnxt:" opt; do
+	case $opt in
+	    n)
+		upd_noreboot=1
+		;;
+	    x)
+		upd_forceimage=1
+		;;
+	    b)
+		upd_forceboot=1
+		;;
+	    c)
+		upd_keepconf=1
+		upd_keepconf=0 # not yet supported
+		;;
+	    v)
+		verbose=$OPTARG
+		;;
+	    f)
+		upd_fw=$OPTARG
+		;;
+	    t)
+		upd_host=$OPTARG
+		;;
+	    h)
+		upd_usage
+		exit 1
+		;;
+	    \?)
+		echo "Invalid option: -$OPTARG" >&2
+		exit 1
+		;;
+	esac
     done
-    echo "latest firmware is $latest"
-    firmware="bin/targets/$CONFIG_TARGET_BOARD/generic/$latest"
-    if [ ! -f $firmware ]
+
+    if [ -n "upd_fw" ]
+    then
+	upd_fw_base=$(basename $upd_fw);
+    else
+	set_config_string CONFIG_TARGET_BOARD
+	firmwares=$(cd bin/targets/$CONFIG_TARGET_BOARD/generic/; ls -t *[0-9].y[3])
+
+	for upd_fw_base in $firmwares
+	do
+	    #echo "firmware $upd_fw"
+	    break
+	done
+	upd_fw="bin/targets/$CONFIG_TARGET_BOARD/generic/$upd_fw_base"
+    fi
+
+    if ! upd_ask_ok
+    then
+	echo "Aborting"
+	exit 1
+    fi
+
+    if [ ! -f $upd_fw ]
     then
 	echo "firmware file $firmware do not exist"
 	exit 1
     fi
-    file_size_kb=`du -k "$firmware" | cut -f1`
+    file_size_kb=`du -k "$upd_fw" | cut -f1`
 
-    cat $firmware | pv -s ${file_size_kb}k   | ssh root@192.168.1.1 iopu
-    exit 0
-    echo "--------------"
     
-	if [ -z "$1" ] ; then
-		usagee
-		echo "Error: host required"
-		exit 1
-	fi
-	if [ -z "$2" ] ; then
-		usagee
-		echo "Error: firmware filename required"
-		exit 1
-	fi
-	if [ ! -e $2 ] ; then
-		usagee
-		echo "Error: firmware file does not exist"
-		exit 1
-	fi
-	IMAGE=`basename $2`
-	echo "sysupgrade host: $1 with file $IMAGE"
-	[ "$2" ] && [ -e "$2" ] && scp $2 root@$1:/tmp/ && ssh -o ConnectTimeout=60 root@$1 "sysupgrade -v $3 /tmp/$IMAGE" && echo "sysupgrade done!"
+    cat $upd_fw | pv -s ${file_size_kb}k   | ssh root@192.168.1.1 iopu
+    exit 0
 }
 
-register_command "ssh_upgrade" "-h <host> <file> [opts]  Install firmware on remote host with SSH"
+register_command "ssh_upgrade" "-h <host> -f <file> [opts]  Install firmware on remote host with SSH"