diff --git a/modules b/modules
index bd51fd0682fef441c21ba88bad358fd8dc62b3fc..13a627e8597f76be2c3b2e4abc7353f1a388a42f 100644
--- a/modules
+++ b/modules
@@ -8,7 +8,7 @@ PACKAGES_OPENWRT_COMMIT=62037ba35fda4ae07e89c33946f229da2a941d47
 PACKAGES_OPENWRT_BRANCH=for-15.05
 
 PACKAGES_GLUON_REPO=git://github.com/freifunk-gluon/packages.git
-PACKAGES_GLUON_COMMIT=7d11ce79ed17c83afffc8395e8d21554a8d1f1a5
+PACKAGES_GLUON_COMMIT=5f0c86212d33d7c285197c67d288af4872d44d51
 
 PACKAGES_ROUTING_REPO=git://github.com/openwrt-routing/packages.git
 PACKAGES_ROUTING_COMMIT=6c78c2ac2cb9ec3be25e68b1cef7b2e2e0e4a346
diff --git a/patches/openwrt/0016-brcm2708-Implement-sysupgrade.patch b/patches/openwrt/0016-brcm2708-Implement-sysupgrade.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7c69c554b79fbc79321de7c3bbbc4e5b772740d3
--- /dev/null
+++ b/patches/openwrt/0016-brcm2708-Implement-sysupgrade.patch
@@ -0,0 +1,89 @@
+From: blogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>
+Date: Tue, 14 Jul 2015 07:39:10 +0000
+Subject: brcm2708: Implement sysupgrade
+
+Implement sysupgrade for Raspberry Pi, similar to the way it is done on x86:
+The config files are saved in the boot partition and moved to where they are
+normally expected in preinit.
+
+Also add optional gzip compression for the SD card image, since this can save
+a lot of space (76M vs 6M), also similar to x86.
+
+Signed-off-by: Bruno Randolf <br1@einfach.org>
+
+git-svn-id: svn://svn.openwrt.org/openwrt/trunk@46347 3c298f89-4303-0410-b956-a3cf2f4a3e73
+
+diff --git a/target/linux/brcm2708/Makefile b/target/linux/brcm2708/Makefile
+index 30f6e1d..015aa9c 100644
+--- a/target/linux/brcm2708/Makefile
++++ b/target/linux/brcm2708/Makefile
+@@ -19,7 +19,7 @@ SUBTARGETS:=bcm2708 bcm2709
+ KERNEL_PATCHVER:=3.18
+ 
+ include $(INCLUDE_DIR)/target.mk
+-DEFAULT_PACKAGES += brcm2708-gpu-fw kmod-usb-hid kmod-sound-core kmod-sound-arm-bcm2835
++DEFAULT_PACKAGES += brcm2708-gpu-fw kmod-usb-hid kmod-sound-core kmod-sound-arm-bcm2835 kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1
+ 
+ define Target/Description
+ 	Build firmware image for Broadcom BCM2708/BCM2709 SoC devices.
+diff --git a/target/linux/brcm2708/base-files/lib/preinit/79_move_config b/target/linux/brcm2708/base-files/lib/preinit/79_move_config
+new file mode 100644
+index 0000000..7bcea7b
+--- /dev/null
++++ b/target/linux/brcm2708/base-files/lib/preinit/79_move_config
+@@ -0,0 +1,18 @@
++#!/bin/sh
++# Copyright (C) 2015 OpenWrt.org
++
++BOOTPART=/dev/mmcblk0p1
++
++move_config() {
++	if [ -b $BOOTPART ]; then
++		insmod nls_cp437
++		insmod nls_iso8859-1
++		insmod fat
++		insmod vfat
++		mount -t vfat -o rw,noatime $BOOTPART /mnt
++		[ -f /mnt/sysupgrade.tgz ] && mv -f /mnt/sysupgrade.tgz /
++		umount /mnt
++	fi
++}
++
++boot_hook_add preinit_mount_root move_config
+diff --git a/target/linux/brcm2708/base-files/lib/upgrade/platform.sh b/target/linux/brcm2708/base-files/lib/upgrade/platform.sh
+new file mode 100644
+index 0000000..3e1ee00
+--- /dev/null
++++ b/target/linux/brcm2708/base-files/lib/upgrade/platform.sh
+@@ -0,0 +1,17 @@
++platform_check_image() {
++	# i know no way to verify the image
++	return 0;
++}
++
++platform_do_upgrade() {
++	sync
++	get_image "$1" | dd of=/dev/mmcblk0 bs=2M conv=fsync
++	sleep 1
++}
++
++platform_copy_config() {
++	mount -t vfat -o rw,noatime /dev/mmcblk0p1 /mnt
++	cp -af "$CONF_TAR" /mnt/
++	sync
++	umount /mnt
++}
+diff --git a/target/linux/brcm2708/image/Makefile b/target/linux/brcm2708/image/Makefile
+index e70bdd0..0dd7b7d 100644
+--- a/target/linux/brcm2708/image/Makefile
++++ b/target/linux/brcm2708/image/Makefile
+@@ -28,6 +28,9 @@ define Image/Build/RaspberryPi
+ 	mcopy -i $(KDIR)/boot.img $(KDIR)/Image ::kernel.img  # Copy OpenWrt built kernel
+ 	./gen_rpi_sdcard_img.sh $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img $(KDIR)/boot.img $(KDIR)/root.$(1) \
+ 		$(CONFIG_BRCM2708_SD_BOOT_PARTSIZE) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
++  ifneq ($(CONFIG_TARGET_IMAGES_GZIP),)
++	gzip -k -f9 $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img
++  endif
+ endef
+ 
+ define Image/Build
diff --git a/patches/openwrt/0016-brcm2708-respect-CONFIG_TARGET_IMAGES_GZIP.patch b/patches/openwrt/0016-brcm2708-respect-CONFIG_TARGET_IMAGES_GZIP.patch
deleted file mode 100644
index 2b083cb91079417d97fa5ee0a6b45cbbe84fb2d8..0000000000000000000000000000000000000000
--- a/patches/openwrt/0016-brcm2708-respect-CONFIG_TARGET_IMAGES_GZIP.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From: Matthias Schiffer <mschiffer@universe-factory.net>
-Date: Fri, 10 Jul 2015 18:41:11 +0200
-Subject: brcm2708: respect CONFIG_TARGET_IMAGES_GZIP
-
-As the brcm2708 images use ext4, they will be huge when uncompressed.
-
-diff --git a/target/linux/brcm2708/image/Makefile b/target/linux/brcm2708/image/Makefile
-index e70bdd0..be667f3 100644
---- a/target/linux/brcm2708/image/Makefile
-+++ b/target/linux/brcm2708/image/Makefile
-@@ -28,6 +28,10 @@ define Image/Build/RaspberryPi
- 	mcopy -i $(KDIR)/boot.img $(KDIR)/Image ::kernel.img  # Copy OpenWrt built kernel
- 	./gen_rpi_sdcard_img.sh $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img $(KDIR)/boot.img $(KDIR)/root.$(1) \
- 		$(CONFIG_BRCM2708_SD_BOOT_PARTSIZE) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
-+
-+  ifneq ($(CONFIG_TARGET_IMAGES_GZIP),)
-+	gzip -f9 $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img
-+  endif
- endef
- 
- define Image/Build
diff --git a/targets/brcm2708-bcm2708/profiles.mk b/targets/brcm2708-bcm2708/profiles.mk
index 8aedd8104ea708b06acdce043ca1724801c0029a..4261913ab2be641e5833b0eb327025c69fcb698a 100644
--- a/targets/brcm2708-bcm2708/profiles.mk
+++ b/targets/brcm2708-bcm2708/profiles.mk
@@ -1,4 +1,4 @@
 $(eval $(call GluonProfile,RaspberryPi))
 $(eval $(call GluonProfileFactorySuffix,RaspberryPi,-vfat-ext4,.img.gz))
-$(eval $(call GluonProfileSysupgradeSuffix,RaspberryPi))
+$(eval $(call GluonProfileSysupgradeSuffix,RaspberryPi,-vfat-ext4,.img.gz))
 $(eval $(call GluonModel,RaspberryPi,sdcard,raspberry-pi))
diff --git a/targets/brcm2708-bcm2709/profiles.mk b/targets/brcm2708-bcm2709/profiles.mk
index 64f6168e2d03ccb0f4d2f641abf871bbd46bea0c..74b172152fa5d8a962f5335c89f7c8a62d00c7d6 100644
--- a/targets/brcm2708-bcm2709/profiles.mk
+++ b/targets/brcm2708-bcm2709/profiles.mk
@@ -1,4 +1,4 @@
 $(eval $(call GluonProfile,RaspberryPi2))
 $(eval $(call GluonProfileFactorySuffix,RaspberryPi2,-vfat-ext4,.img.gz))
-$(eval $(call GluonProfileSysupgradeSuffix,RaspberryPi2))
+$(eval $(call GluonProfileSysupgradeSuffix,RaspberryPi2,-vfat-ext4,.img.gz))
 $(eval $(call GluonModel,RaspberryPi2,sdcard,raspberry-pi-2))
diff --git a/targets/targets.mk b/targets/targets.mk
index afe52c0b856b03c683213c5d5b894ca175107f08..c9aa03827d3c258a77f1819f9a24c9a199919b9d 100644
--- a/targets/targets.mk
+++ b/targets/targets.mk
@@ -7,6 +7,6 @@ $(eval $(call GluonTarget,x86,64))
 
 ifneq ($(BROKEN),)
 $(eval $(call GluonTarget,ramips,rt305x)) # BROKEN: No AP+IBSS support
-$(eval $(call GluonTarget,brcm2708,bcm2708)) # BROKEN: Untested, no sysupgrade support
-$(eval $(call GluonTarget,brcm2708,bcm2709)) # BROKEN: Untested, no sysupgrade support
+$(eval $(call GluonTarget,brcm2708,bcm2708)) # BROKEN: Needs more testing
+$(eval $(call GluonTarget,brcm2708,bcm2709)) # BROKEN: Needs more testing
 endif