 +#wifi_mode=ap
 +# wifi channel, only used in AP mode
 +#wifi_channel=6
-Index: target/linux/brcm2708/image/gen_rpi_sdcard_img.sh
-===================================================================
---- target/linux/brcm2708/image/gen_rpi_sdcard_img.sh	(revision 36720)
-+++ target/linux/brcm2708/image/gen_rpi_sdcard_img.sh	(working copy)
-@@ -12,7 +12,7 @@
- BOOTFSSIZE="$4"
- ROOTFSSIZE="$5"
- 
--head=4
-+head=255
- sect=63
- 
- set `ptgen -o $OUTPUT -h $head -s $sect -l 4096 -t c -p ${BOOTFSSIZE}M -t 83 -p ${ROOTFSSIZE}M`
++
++hdmi_cvt=1024 600 60 5
++hdmi_blanking=1
++

+	  mount -t ext4 -o remount,rw,noatime /dev/mmcblk0p2 /mnt && \
+	  cp -af "$CONF_TAR" /mnt/ && \
+	  umount /mnt
+}
+
+platform_do_upgrade() {
+	sync
+	# If not saving the configuration, wipe the config partition
+	[ $SAVE_CONFIG -eq 0 -a -b /dev/mmcblk0p4 ] && {
+  	  # Should do mkfs.ext4 here but isn't on ramdisk
+  	  dd if=/dev/zero of=/dev/mmcblk0p4 bs=1M count=1 conv=fsync
+	}
+	dd if=/dev/zero of=/dev/mmcblk0 bs=4M count=10 conv=fsync
+	get_image "$@" | dd of=/dev/mmcblk0 bs=4M conv=fsync
+	sleep 1
+}
+
+bcm2708_umount_all() {
+	cd /tmp
+	echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

diff --git a/target/linux/brcm2708/base-files/etc/board.d/02_network b/target/linux/brcm2708/base-files/etc/board.d/02_network
index 7642c06..372302f 100755
--- a/target/linux/brcm2708/base-files/etc/board.d/02_network
+++ b/target/linux/brcm2708/base-files/etc/board.d/02_network
@@ -15,7 +15,14 @@ rpi-b |\
 rpi-b-plus |\
 rpi-2-b |\
 rpi-3-b)
-	ucidef_set_interface_lan "eth0"
+	ucidef_set_interface_lan "eth0" "dhcp"
+
+	ucidef_set_interface_raw "fallback" "eth0" "static"
+	json_select_object network
+	  json_select_object fallback
+	  json_add_string ipaddr "192.168.200.1"
+	  json_select_object ..
+	json_select_object ..
 	;;
 esac
 
diff --git a/target/linux/brcm2708/base-files/etc/diag.sh b/target/linux/brcm2708/base-files/etc/diag.sh
index 2a866e4..db902ab 100644
--- a/target/linux/brcm2708/base-files/etc/diag.sh
+++ b/target/linux/brcm2708/base-files/etc/diag.sh
@@ -8,12 +8,12 @@ set_state() {
 	case "$(brcm2708_board_name)" in
 	rpi-b |\
 	rpi-cm |\
-	rpi-zero)
+	rpi-zero |\
+	rpi-3-b)
 		status_led="led0"
 		;;
 	rpi-b-plus |\
-	rpi-2-b |\
-	rpi-3-b)
+	rpi-2-b)
 		status_led="led1"
 		;;
 	esac
@@ -29,6 +29,7 @@ set_state() {
 		status_led_blink_preinit_regular
 		;;
 	done)
+		status_led_off
 		status_led_on
 		;;
 	esac
diff --git a/target/linux/brcm2708/base-files/lib/upgrade/platform.sh b/target/linux/brcm2708/base-files/lib/upgrade/platform.sh
index 1d4b694..c293f0f 100644
--- a/target/linux/brcm2708/base-files/lib/upgrade/platform.sh
+++ b/target/linux/brcm2708/base-files/lib/upgrade/platform.sh
@@ -1,18 +1,50 @@
+USE_REFRESH=1
+RAMFS_COPY_BIN=/usr/sbin/partprobe
+
 platform_check_image() {
-	# i know no way to verify the image
-	return 0;
+	[ "$ARGC" -gt 1 ] && return 1
+
+	case "$(get_magic_word "$1")" in
