diff --git a/image_build/bbb-4.9.0.tar.gz b/image_build/bbb-4.9.0.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..526550cb46e74059dac910a3468ae8b95dc66c26
Binary files /dev/null and b/image_build/bbb-4.9.0.tar.gz differ
diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise
index bda31e96b3a6f81a6f0b49449beb218bea066a0f..7ec5abb80f54c7086cd215fc54d2cb4f21e3c446 100755
--- a/src/freedombone-image-customise
+++ b/src/freedombone-image-customise
@@ -1298,6 +1298,7 @@ git clone $PROJECT_REPO /root/$PROJECT_NAME
 cd /root/$PROJECT_NAME
 git checkout bashrc/stretch
 make install
+cp image_build/bbb-4.9.0.tar.gz /boot/bbb.tar.gz
 EOF
 
 chroot "$rootdir" ${PROJECT_NAME}-image-hardware-setup 2>&1 | \
diff --git a/src/freedombone-image-hardware-setup b/src/freedombone-image-hardware-setup
index f3d24fe80d53f4b9c2b6bca094677f606baf04a7..83e1a4404999c497de23f4842bd7c501e57afb71 100755
--- a/src/freedombone-image-hardware-setup
+++ b/src/freedombone-image-hardware-setup
@@ -128,6 +128,19 @@ beaglebone_repack_kernel() {
     initRd=initrd.img-$version
     vmlinuz=vmlinuz-$version
 
+    # optionally use a separately compiled kernel
+    bbb_dtb_file=/usr/lib/$kernelVersion/${bbb_dtb}.dtb
+    if [ -f /boot/bbb.tar.gz ]; then
+        cd /boot
+        tar -xzvf /boot/bbb.tar.gz
+        if [ -f /boot/bbb/dtbs/${bbb_dtb}.dtb ]; then
+            if [ -f /boot/bbb/zImage ]; then
+                bbb_dtb_file=/boot/bbb/dtbs/${bbb_dtb}.dtb
+                vmlinuz=/boot/bbb/zImage
+            fi
+        fi
+    fi
+
     mkdir /tmp/initrd-repack
 
     (cd /tmp/initrd-repack ; \
@@ -139,7 +152,7 @@ beaglebone_repack_kernel() {
     rm -rf /tmp/initrd-repack
 
     (cd /boot ; \
-     cp /usr/lib/$kernelVersion/${bbb_dtb}.dtb dtb ; \
+     cp ${bbb_dtb_file} dtb ; \
      cat $vmlinuz dtb >> temp-kernel ; \
      mkimage -A arm -O linux -T kernel -n "Debian kernel ${version}" \
              -C none -a 0x82000000 -e 0x82000000 -d temp-kernel uImage ; \