diff --git a/device/device-samsung-hero2lte/APKBUILD b/device/device-samsung-hero2lte/APKBUILD
index bb188c5831fb59401ea5f82d09f22d17fd8eb1f7..92ca01c6aba13db1d636a1ff849108fe6e858d0d 100644
--- a/device/device-samsung-hero2lte/APKBUILD
+++ b/device/device-samsung-hero2lte/APKBUILD
@@ -7,9 +7,9 @@ url="https://postmarketos.org"
 license="MIT"
 arch="aarch64"
 options="!check !archcheck"
-depends="postmarketos-base linux-samsung-hero2lte mkbootimg mesa-dri-swrast"
+depends="postmarketos-base linux-samsung-hero2lte mkbootimg mesa-dri-swrast msm-fb-refresher"
 makedepends="devicepkg-dev"
-source="deviceinfo"
+source="deviceinfo initfs-hook.sh"
 
 build() {
 	devicepkg_build $startdir $pkgname
@@ -17,7 +17,10 @@ build() {
 
 package() {
 	devicepkg_package $startdir $pkgname
+	install -Dm644 "$srcdir"/initfs-hook.sh \
+		"$pkgdir"/etc/postmarketos-mkinitfs/hooks/00-${pkgname}.sh
 }
 
 
-sha512sums="e3940229b39354c1e479d826c0a04d109a79298afb546cd7944ca3b856d94277d142e3c1fdce5909c7f52e0ea3e0c0b00c9a9dde522e4824c892b792de61a053  deviceinfo"
+sha512sums="e3940229b39354c1e479d826c0a04d109a79298afb546cd7944ca3b856d94277d142e3c1fdce5909c7f52e0ea3e0c0b00c9a9dde522e4824c892b792de61a053  deviceinfo
+5a7be3cb8835ffb3783fcd4539de04f7f006c726ac9aea35cdca9e90b2877dc36cf4e314851bf9078f4b2dac061b7265866792d92a79f5232c56a0e17f7910b1  initfs-hook.sh"
diff --git a/device/device-samsung-hero2lte/deviceinfo b/device/device-samsung-hero2lte/deviceinfo
index 50aa61412481148a9309c249cbce6c5d8dd3833d..e6c62d46dac722e580aa14519e0ee9655523fb4e 100644
--- a/device/device-samsung-hero2lte/deviceinfo
+++ b/device/device-samsung-hero2lte/deviceinfo
@@ -30,6 +30,7 @@ deviceinfo_flash_offset_ramdisk="0x01000000"
 deviceinfo_flash_offset_second="0x00f00000"
 deviceinfo_flash_offset_tags="0x00000100"
 deviceinfo_flash_pagesize="2048"
-deviceinfo_flash_heimdall_partition_kernel=""
-deviceinfo_flash_heimdall_partition_system=""
+deviceinfo_flash_heimdall_partition_kernel="BOOT"
+deviceinfo_flash_heimdall_partition_system="SYSTEM"
+deviceinfo_flash_sparse="true"
 
diff --git a/device/device-samsung-hero2lte/initfs-hook.sh b/device/device-samsung-hero2lte/initfs-hook.sh
new file mode 100644
index 0000000000000000000000000000000000000000..32ef9b6d5860257bf9d65b0762075fccf9b64ca5
--- /dev/null
+++ b/device/device-samsung-hero2lte/initfs-hook.sh
@@ -0,0 +1,8 @@
+# Set 16bpp fb mode and ensure size is set
+echo 16 > /sys/class/graphics/fb0/bits_per_pixel
+echo 1440,2560 > /sys/class/graphics/fb0/virtual_size
+
+# Blank and unblank
+echo 1 > /sys/class/graphics/fb0/blank
+echo 0 > /sys/class/graphics/fb0/blank
+
diff --git a/device/linux-samsung-hero2lte/01-remove-android-defines.patch b/device/linux-samsung-hero2lte/01-remove-android-defines.patch
new file mode 100644
index 0000000000000000000000000000000000000000..b517a05641d87deece1628e45424ee1462b8ef55
--- /dev/null
+++ b/device/linux-samsung-hero2lte/01-remove-android-defines.patch
@@ -0,0 +1,24 @@
+# This patch removes the __ANDROID__ defines that activate the macros needed for
+# the connection gadget system in the kernel.
+# Needed for very obvious reasons.
+
+diff --git a/drivers/usb/gadget/function/f_conn_gadget.ioctl.h b/drivers/usb/gadget/function/f_conn_gadget.ioctl.h
+index aed3e027..3486e7a3 100644
+--- a/drivers/usb/gadget/function/f_conn_gadget.ioctl.h
++++ b/drivers/usb/gadget/function/f_conn_gadget.ioctl.h
+@@ -25,8 +25,6 @@ enum {
+ 	CONN_GADGET_IOCTL_BIND_STATUS_UNBIND = 2
+ };
+ 
+-#if defined(__ANDROID__)||defined(__TIZEN__)
+-
+ enum { 
+ 	CONN_GADGET_IOCTL_NR_0 = 0,
+ 	CONN_GADGET_IOCTL_NR_1,
+@@ -42,6 +40,5 @@ enum {
+ #define CONN_GADGET_IOCTL_BIND_WAIT_NOTIFY	_IOR(CONN_GADGET_IOCTL_MAGIC_SIG, CONN_GADGET_IOCTL_NR_1, int)
+ #define CONN_GADGET_IOCTL_BIND_GET_STATUS	_IOR(CONN_GADGET_IOCTL_MAGIC_SIG, CONN_GADGET_IOCTL_NR_2, int)
+ #define CONN_GADGET_IOCTL_MAX_NR			CONN_GADGET_IOCTL_NR_MAX
+-#endif
+ 
+ #endif
diff --git a/device/linux-samsung-hero2lte/02-fix-dtbtool.patch b/device/linux-samsung-hero2lte/02-fix-dtbtool.patch
new file mode 100644
index 0000000000000000000000000000000000000000..681b6ee8677c7f660662738467d9e1e4d92b43b4
--- /dev/null
+++ b/device/linux-samsung-hero2lte/02-fix-dtbtool.patch
@@ -0,0 +1,31 @@
+Exynos devices have a special device tree image format, which the built in
+script in this kernel source facilitates.
+Unfortunately, the script is badly written in the part where command line
+arguments are parsed, so this fixes it to create a valid dtb.
+
+diff --git a/scripts/dtbtool_exynos/dtbtool.c b/scripts/dtbtool_exynos/dtbtool.c
+index f72fe8662ee..cacd8c69a32 100644
+--- a/scripts/dtbtool_exynos/dtbtool.c
++++ b/scripts/dtbtool_exynos/dtbtool.c
+@@ -378,13 +378,14 @@ int main(int argc, char **argv)
+ 			dt_subtype_code = strtoul(val, 0, 16);
+ 		} else if (*arg != '-') {
+ 			/* skip over already allocated file names */
+-			for (; dtb_files[dt_count]; dt_count++)
+-				if (dt_count >= DTB_MAX)
+-					fail("reached dtb file limit (%d)", DTB_MAX);
+-
+-			dtb_files[dt_count] = strdup(arg);
+-			if (!dtb_files[dt_count])
+-				fail("failed to allocate memory");
++			for (; dtb_files[dt_count]; dt_count++) {
++                if (dt_count >= DTB_MAX) {
++                    fail("reached dtb file limit (%d)", DTB_MAX);
++                } else {
++                    dtb_files[dt_count] = strdup(arg);
++                    if (!dtb_files[dt_count]) fail("failed to allocate memory");
++                }
++            }
+ 		} else
+ 			usage();
+ 	}
diff --git a/device/linux-samsung-hero2lte/APKBUILD b/device/linux-samsung-hero2lte/APKBUILD
index cf41bb805ee963b158b64abb3ef865e1c0d18b55..17c9c12f4fb0e1fae8ea76fb2d0e401c28eea24c 100644
--- a/device/linux-samsung-hero2lte/APKBUILD
+++ b/device/linux-samsung-hero2lte/APKBUILD
@@ -2,7 +2,7 @@
 # Kernel config based on: arch/arm64/configs/exynos8890-hero2lte_defconfig
 
 pkgname="linux-samsung-hero2lte"
-pkgver=3.18.132
+pkgver=3.18.133
 pkgrel=0
 pkgdesc="Samsung Galaxy S7 edge kernel fork"
 arch="aarch64"
@@ -19,12 +19,13 @@ HOSTCC="${HOSTCC#${CROSS_COMPILE}}"
 
 # Source - use Ivan Meler's 3.18 upstream kernel
 _repository="android_kernel_samsung_herolte"
-_commit="11a3d8fa2d3cf3d1918ac1c94ee7fd7659957e23"
+_commit="24b577569468748591f7be6435af67e17b532886"
 _config="config-${_flavor}.${arch}"
 source="
 	$pkgname-$_commit.tar.gz::https://github.com/ivanmeler/${_repository}/archive/${_commit}.tar.gz
 	$_config
-	remove-android-defines.patch
+	01-remove-android-defines.patch
+	02-fix-dtbtool.patch
 "
 builddir="$srcdir/${_repository}-${_commit}"
 
@@ -37,10 +38,7 @@ build() {
 	unset LDFLAGS
 	make ARCH="$_carch" CC="${CC:-gcc}" \
 		KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS"
-
-	# What is below requires some special steps for exynos, use prebuilt dtb for now
-	# Generate master DTB (deviceinfo_bootimg_qcdt)
-	# dtbTool -s 2048 -p "scripts/dtc/" -o "arch/arm64/boot/dt.img" "arch/arm64/boot/"
+	# Note: the DTB for this kernel is built in tree, we just need to copy it.
 }
 
 package() {
@@ -62,14 +60,12 @@ package() {
 		return 1
 	fi
 
-	# Master DTB (deviceinfo_bootimg_qcdt)
-	#install -Dm644 "$builddir/arch/arm64/boot/dt.img" \
-	#	"$pkgdir/boot/dt.img"
-
-	# Install our prebuilt dtb instead of the built one above
-	install -Dm644 "$startdir/dt-prebuilt.img" "$pkgdir/boot/dt.img"
+	# Copy the in-tree DTBH block image
+	install -Dm644 "$builddir/arch/arm64/boot/dtb.img" \
+		"$pkgdir/boot/dt.img"
 }
 
-sha512sums="11821ea7a8c156403ec34caf9a1a3e9da4a20d8a8f9f2d4f112bccbb575c4dcec3c173d78aae9fef007f70299e41e4ced65ab3d9f18abb084abf25dc19f01d68  linux-samsung-hero2lte-11a3d8fa2d3cf3d1918ac1c94ee7fd7659957e23.tar.gz
-7716a5def522d910e13d0edf2cbd64ad12c6cdd31eb2a4c85873a53c69f94c0bc74dc6917459d14cd321c0c7c5c151845497541753ac7164e624a26e5d60a1d7  config-samsung-hero2lte.aarch64
-6aab3805ec561c4e7df2e89f83dc34bb9d5a8b4f017c4c3f5a0926211eaebcf6d6df0096f4ad34f54ae8fc8d2eadb6e2c1e3f1ae07e34a9d729a5ef3ea5b0119  remove-android-defines.patch"
+sha512sums="59c128754698259ad7f759def8a82b3f0756404bfe8b474df375c6af0a45b9875ba9a00acca5605b8dcebff4fa5ca1cd20d84d3f398999fe38c3f5837690848c  linux-samsung-hero2lte-24b577569468748591f7be6435af67e17b532886.tar.gz
+5d70395fec802bc2f925ec2b5f2f138ae988aa61720c82b986310a23ed401949bdca263401918a4f769a477aa98ca4ec2aab1b3dbe0eabfbb856af9f2d99e129  config-samsung-hero2lte.aarch64
+66e27a174e12d56f5b77932985f0001b551c834d68b2a1bcc1d0b7d04e555757fc9137c182bd4cf5ffd57bf2cb0918d758dfe153a6140b77f02e7b9f33ecfb2c  01-remove-android-defines.patch
+59b7151edece9fec879c12fe53fa4a7d34563c9b7ed45fa5e96036bde7616cac0976adeef54a5f36d883d51747831881b2586ac02ac47db4123c399cf98e93d8  02-fix-dtbtool.patch"
diff --git a/device/linux-samsung-hero2lte/config-samsung-hero2lte.aarch64 b/device/linux-samsung-hero2lte/config-samsung-hero2lte.aarch64
index b1bf8dd90f926bf4797443b2fd29c4ee73b9620d..acd3536ac10acf7a18039db3132b54445c574f82 100644
--- a/device/linux-samsung-hero2lte/config-samsung-hero2lte.aarch64
+++ b/device/linux-samsung-hero2lte/config-samsung-hero2lte.aarch64
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm64 3.18.132 Kernel Configuration
+# Linux/arm64 3.18.133 Kernel Configuration
 #
 CONFIG_ARM64=y
 CONFIG_64BIT=y
@@ -563,7 +563,10 @@ CONFIG_EXYNOS_BIG_FREQ_BOOST=y
 # Control Flow Protection
 #
 CONFIG_RKP_CFP_JOPP_MAGIC=0xb3ea3bad
-# CONFIG_EXYNOS_DTBTOOL is not set
+CONFIG_EXYNOS_DTBTOOL=y
+CONFIG_EXYNOS_DTBH_PLATFORM_CODE=0x50a6
+CONFIG_EXYNOS_DTBH_SUBTYPE_CODE=0x217584da
+CONFIG_EXYNOS_DTBH_PAGE_SIZE=2048
 CONFIG_NET=y
 CONFIG_COMPAT_NETLINK_MESSAGES=y
 
@@ -1387,8 +1390,6 @@ CONFIG_DM_CRYPT=y
 # CONFIG_DM_UEVENT is not set
 # CONFIG_DM_FLAKEY is not set
 CONFIG_DM_VERITY=y
-# CONFIG_DM_VERITY_HASH_PREFETCH_MIN_SIZE_128 is not set
-CONFIG_DM_VERITY_HASH_PREFETCH_MIN_SIZE=1
 # CONFIG_DM_VERITY_FEC is not set
 # CONFIG_DM_SWITCH is not set
 # CONFIG_DM_LOG_WRITES is not set
@@ -2818,7 +2819,7 @@ CONFIG_DSIM_ESD_REMOVE_DISP_DET=y
 CONFIG_CHECK_OCTA_CHIP_ID=y
 # CONFIG_LCD_RES is not set
 # CONFIG_DECON_SELF_REFRESH is not set
-# CONFIG_LOGGING_BIGDATA_BUG is not set
+CONFIG_LOGGING_BIGDATA_BUG=y
 # CONFIG_DUMPSTATE_LOGGING is not set
 CONFIG_EXYNOS_VPP=y
 CONFIG_EXYNOS_DECON_LCD=y