diff --git a/boot/bootcode.bin b/boot/bootcode.bin
index c701fe43ded808062adf37d747ef66264b336e88..9e831a2739767f9d7204f5d90dd8d352f11b7daa 100644
Binary files a/boot/bootcode.bin and b/boot/bootcode.bin differ
diff --git a/boot/fixup.dat b/boot/fixup.dat
index 45e9fedac3961ec9ccf7c9284c96f5d9c04b8b41..c0f623f63344af0eb116d1f80203312c63074f9e 100644
Binary files a/boot/fixup.dat and b/boot/fixup.dat differ
diff --git a/boot/fixup4.dat b/boot/fixup4.dat
index a6c32ed5a0a2731f3c64520231e4682daa08044a..4723d584cde2640c4723f03f7dc1fb42fefa70eb 100644
Binary files a/boot/fixup4.dat and b/boot/fixup4.dat differ
diff --git a/boot/fixup4cd.dat b/boot/fixup4cd.dat
index e9b92fb8e372467826aade8f6d545950a8f4be16..9f288e009d5b52358465103db458f5f85af9cd89 100644
Binary files a/boot/fixup4cd.dat and b/boot/fixup4cd.dat differ
diff --git a/boot/fixup4db.dat b/boot/fixup4db.dat
index 38f0929a7d74a645a3771a66420860fd82f4ed2e..612f555f4d986625016428b8c4d33327af02a47c 100644
Binary files a/boot/fixup4db.dat and b/boot/fixup4db.dat differ
diff --git a/boot/fixup4x.dat b/boot/fixup4x.dat
index f86bb15974bc9a6ea8aaec60a23608935e4e255a..5a6b4d65eec2d12aab565e98733bbb206a923238 100644
Binary files a/boot/fixup4x.dat and b/boot/fixup4x.dat differ
diff --git a/boot/fixup_cd.dat b/boot/fixup_cd.dat
index e9b92fb8e372467826aade8f6d545950a8f4be16..9f288e009d5b52358465103db458f5f85af9cd89 100644
Binary files a/boot/fixup_cd.dat and b/boot/fixup_cd.dat differ
diff --git a/boot/fixup_db.dat b/boot/fixup_db.dat
index ad5b84fbe94b118bd9f4553f0c51c3e7570e3267..842261618d517f4ef7f7c0e2b047db28b95a9b7e 100644
Binary files a/boot/fixup_db.dat and b/boot/fixup_db.dat differ
diff --git a/boot/fixup_x.dat b/boot/fixup_x.dat
index 34523ad3cd50ad0b477a000b5e18b98d279cc92d..42e011b5321925535b376a27b8f6a596a59eb17a 100644
Binary files a/boot/fixup_x.dat and b/boot/fixup_x.dat differ
diff --git a/boot/start.elf b/boot/start.elf
index 1558db154def57c524587f12d86794a82914ac64..12b20663d30fc0618ad15cf886dcc71cb0e6bf18 100644
Binary files a/boot/start.elf and b/boot/start.elf differ
diff --git a/boot/start4.elf b/boot/start4.elf
index 9ab82a7143fc7d53eb8f94d6629a1492c186845e..2f03cf5bcba6cd75a3170ec2e9d301bf73bad089 100644
Binary files a/boot/start4.elf and b/boot/start4.elf differ
diff --git a/boot/start4cd.elf b/boot/start4cd.elf
index 6b5a160a73a9cfddc19ddc2a9d8d7df8f5157a0f..88d42375b44326bc14e14f44d78f01c45fd8b264 100644
Binary files a/boot/start4cd.elf and b/boot/start4cd.elf differ
diff --git a/boot/start4db.elf b/boot/start4db.elf
index 43fe947efbab3302a8508ec7d7d098fa82d76568..f3d678eae50e07005f5635350c681cd84c467b48 100644
Binary files a/boot/start4db.elf and b/boot/start4db.elf differ
diff --git a/boot/start4x.elf b/boot/start4x.elf
index 597a60518b329d9624813d5a23963fb33079b443..76f6cb0b7b493d1eb8ec86654f1a789da8f9be42 100644
Binary files a/boot/start4x.elf and b/boot/start4x.elf differ
diff --git a/boot/start_cd.elf b/boot/start_cd.elf
index 26ff7d1f0714257dc240d10a2d46662e173f8326..1e37bccf6337a88c46ed40d1e67fef6cede12582 100644
Binary files a/boot/start_cd.elf and b/boot/start_cd.elf differ
diff --git a/boot/start_db.elf b/boot/start_db.elf
index 39e4f587191f0b068c44df0fdb516f59cb28ff23..ba1a6317a51db8e228aa774707ab92133ac61703 100644
Binary files a/boot/start_db.elf and b/boot/start_db.elf differ
diff --git a/boot/start_x.elf b/boot/start_x.elf
index 065ce803fc136c187b086cef5b1dc984dc6f95c8..a95b9b6e475117526ffcf4315b3aa2acdfdcbe53 100644
Binary files a/boot/start_x.elf and b/boot/start_x.elf differ
diff --git a/debian/changelog b/debian/changelog
index c13c1858c0223ce314feb9df321e66d0fbd1a470..a0a02a2574d0e140c5ecdbbdd2793327ed1690de 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,65 @@
+raspi-firmware (1.20240424+ds-6) unstable; urgency=medium
+
+  * Fix building device tree overlays
+
+ -- Jochen Sprickerhof <jspricke@debian.org>  Sun, 05 Jan 2025 08:48:37 +0100
+
+raspi-firmware (1.20240424+ds-5) unstable; urgency=medium
+
+  [ Sjoerd Simons ]
+  * Run firmware install after dh_install (Closes: #1091551)
+
+ -- Jochen Sprickerhof <jspricke@debian.org>  Sat, 04 Jan 2025 19:04:25 +0100
+
+raspi-firmware (1.20240424+ds-4) unstable; urgency=medium
+
+  * Simplify copying firmware files in postinst
+  * Use execute_after_dh_auto_install in d/rules
+  * Add Hifiberry device tree overlays
+
+ -- Jochen Sprickerhof <jspricke@debian.org>  Sat, 21 Dec 2024 21:59:55 +0100
+
+raspi-firmware (1.20240424+ds-3) unstable; urgency=medium
+
+  [ sulincix ]
+  * fix non-arm but chrooted postinst issue
+
+ -- Jochen Sprickerhof <jspricke@debian.org>  Thu, 05 Dec 2024 16:14:08 +0100
+
+raspi-firmware (1.20240424+ds-2) unstable; urgency=medium
+
+  [ Daniel Moran ]
+  * Ensure kernel and initrd names are set, even on remove (Closes: #1041096)
+
+  [ Jochen Sprickerhof ]
+  * Add dh-sequence-movetousr (Closes: #1071913)
+  * Add myself to uploaders
+
+ -- Jochen Sprickerhof <jspricke@debian.org>  Wed, 29 May 2024 15:13:05 +0200
+
+raspi-firmware (1.20240424+ds-1) unstable; urgency=medium
+
+  * New upstream release
+
+ -- Gunnar Wolf <gwolf@debian.org>  Fri, 26 Apr 2024 19:33:42 -0600
+
+raspi-firmware (1.20230405+ds-2) unstable; urgency=medium
+
+  * Skip running postinst if installing on a system that's not arch:arm*
+    (Closes: #1040896, #1040485, #1042070, #1040669)
+
+ -- Gunnar Wolf <gwolf@debian.org>  Wed, 26 Jul 2023 12:39:57 -0600
+
+raspi-firmware (1.20230405+ds-1) unstable; urgency=medium
+
+  * New upstream version
+  * Fixed typo in brcm_firmware patch (not-needd → not-needed)
+  * Don't copy files to /boot/firmware on remove (Closes: #1032186)
+  * Updated standards-version 4.6.0→4.6.2 (no changes)
+  * Updated Lintian overrides
+
+ -- Gunnar Wolf <gwolf@debian.org>  Wed, 05 Jul 2023 13:17:20 -0600
+
 raspi-firmware (1.20220830+ds-1) unstable; urgency=medium
 
   [ Gunnar Wolf ]
diff --git a/debian/control b/debian/control
index 2b6ea2f549ffbd02691908fd9208c39c55408d42..734984a63d00522065cdf560d6b66fd5c0d3dcb7 100644
--- a/debian/control
+++ b/debian/control
@@ -5,9 +5,12 @@ Priority: optional
 Maintainer: pkg-raspi <pkg-raspi-maintainers@lists.alioth.debian.org>
 Uploaders: Michael Stapelberg <stapelberg@debian.org>,
  Gunnar Wolf <gwolf@debian.org>,
- Romain Perier <romain.perier@gmail.com>
-Build-Depends: debhelper-compat (= 13)
-Standards-Version: 4.6.0
+ Romain Perier <romain.perier@gmail.com>,
+ Jochen Sprickerhof <jspricke@debian.org>,
+Build-Depends: debhelper-compat (= 13),
+ dh-sequence-movetousr,
+ device-tree-compiler,
+Standards-Version: 4.6.2
 Homepage: https://github.com/raspberrypi/firmware
 Vcs-Git: https://salsa.debian.org/debian/raspi-firmware.git
 Vcs-Browser: https://salsa.debian.org/debian/raspi-firmware
diff --git a/debian/dtso/Makefile b/debian/dtso/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..21b6bee80ea8c80933c75e89db661cd9e8287ccc
--- /dev/null
+++ b/debian/dtso/Makefile
@@ -0,0 +1,7 @@
+all: $(patsubst %.dtso,%.dtbo,$(wildcard *.dtso))
+
+%.dtbo: %.dtso
+	dtc -@ $< -o $@
+
+clean:
+	rm -f *.dtbo
diff --git a/debian/dtso/README.md b/debian/dtso/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..b98ed6eac34bf92480c333595d5c943c241a0bff
--- /dev/null
+++ b/debian/dtso/README.md
@@ -0,0 +1,16 @@
+Device Tree Overlays
+--------------------
+
+How to use
+==========
+
+Add dtoverlay=<overlay> (without the .dtbo) to /etc/default/raspi-firmware-custom and run:
+
+DEB_MAINT_PARAMS=configure /etc/kernel/postinst.d/z50-raspi-firmware
+
+Hifiberry Beocreate
+===================
+
+force_eeprom_read=0
+dtoverlay=pi4-spidev
+dtoverlay=hifiberry-dac
diff --git a/debian/dtso/hifiberry-dac.dtso b/debian/dtso/hifiberry-dac.dtso
new file mode 100644
index 0000000000000000000000000000000000000000..45c7836be4e72c3b40c6a9fefec8ec1e8c523751
--- /dev/null
+++ b/debian/dtso/hifiberry-dac.dtso
@@ -0,0 +1,27 @@
+/dts-v1/;
+/plugin/;
+
+/ {
+	compatible = "brcm,bcm2835";
+};
+
+&{/} {
+	pcm5102a: pcm5102a {
+		#sound-dai-cells = <0>;
+		compatible = "ti,pcm5102a";
+	};
+
+	sound {
+		compatible = "simple-audio-card";
+		simple-audio-card,name = "HiFiBerry sndrpihifiberry";
+		simple-audio-card,format = "i2s";
+
+		simple-audio-card,cpu {
+			sound-dai = <&i2s>;
+		};
+
+		simple-audio-card,codec {
+			sound-dai = <&pcm5102a>;
+		};
+	};
+};
diff --git a/debian/dtso/pi4-spidev.dtso b/debian/dtso/pi4-spidev.dtso
new file mode 100644
index 0000000000000000000000000000000000000000..3662f87415bef306877c3bcdb4793f484b77f0fb
--- /dev/null
+++ b/debian/dtso/pi4-spidev.dtso
@@ -0,0 +1,58 @@
+// https://www.evolware.org/2021/02/21/using-spidev-with-mainline-linux-kernel-on-the-raspberry-pi-4/
+// adopted to the definitions in the raspberrypi kernel
+/dts-v1/;
+/plugin/;
+
+/ {
+	compatible = "brcm,bcm2835";
+};
+
+&gpio {
+	// from bcm2711-rpi-ds.dtsi
+	spi0_pins: spi0_pins {
+		brcm,pins = <9 10 11>;
+		// bcm2835.h: #define BCM2835_FSEL_ALT0 4
+		brcm,function = <4>;
+	};
+
+	spi0_cs_pins: spi0_cs_pins {
+		brcm,pins = <8 7>;
+		// bcm2835.h:#define BCM2835_FSEL_GPIO_OUT 1
+		brcm,function = <1>;
+	};
+};
+
+&spi {
+	status = "okay";
+	// from bcm2711-rpi-4-b.dts
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
+	cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
+
+	spidev0: spidev@0 {
+		compatible = "lwn,bk4";  // "spidev";
+		reg = <0>;	/* CE0 */
+		#address-cells = <1>;
+		#size-cells = <0>;
+		spi-max-frequency = <125000000>;
+	};
+
+	spidev1: spidev@1 {
+		compatible = "lwn,bk4";  // "spidev";
+		reg = <1>;	/* CE1 */
+		#address-cells = <1>;
+		#size-cells = <0>;
+		spi-max-frequency = <125000000>;
+	};
+};
+
+&i2s {
+	status = "okay";
+	// from bcm270x.dtsi
+	#sound-dai-cells = <0>;
+	dmas = <&dma 2>, <&dma 3>;
+	dma-names = "tx", "rx";
+	// from bcm2711-rpi-4-b.dts
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcm_gpio18>;  // <&i2s_pins>;
+};
diff --git a/debian/kernel/postinst.d/z50-raspi-firmware b/debian/kernel/postinst.d/z50-raspi-firmware
index 1d3ae161c299c32b9e0824e4a5cc25e699c676c9..3cd33d2eaf9437d072b7ec022ecb247bdd0b5df0 100755
--- a/debian/kernel/postinst.d/z50-raspi-firmware
+++ b/debian/kernel/postinst.d/z50-raspi-firmware
@@ -27,6 +27,22 @@ pi_4_family() {
   grep -q 'Raspberry Pi \(Compute Module \)*4' /sys/firmware/devicetree/base/model 2>/dev/null
 }
 
+is_arm_system() {
+  # Check to see if the host is running an arm-based system
+  # (i.e. whether the raspi-firmware package is useful)
+  DPKG_ARCH=$(dpkg --print-architecture)
+  case "$DPKG_ARCH" in
+    arm64|armel|armhf)
+      return 0;;
+    *)
+      return 1;;
+  esac
+}
+
+if ! is_arm_system ; then
+  # Not running on an arm-based system, skip postinst.
+  exit 0
+fi
 
 if ischroot ; then
   true # chroot detected - skip mount point check
@@ -116,17 +132,20 @@ else
 fi
 
 if [ "$KERNEL" = "auto" ] ; then
-  for dtb in "${dtb_path}"/bcm*.dtb; do
-    [ -e "${dtb}" ] || continue
-    cp "${dtb}" /boot/firmware/
-  done
-
   latest_kernel_basename=$(basename "$latest_kernel")
   latest_initrd_basename=$(basename "$latest_initrd")
   KERNEL=${latest_kernel_basename}
 
-  cp "$latest_kernel" /boot/firmware/
-  cp "$latest_initrd" /boot/firmware/
+  # Do not copy DTBs or kernel/initramfs when removing packages (#1032186)
+  if [ "$1" != "remove" ]; then
+    for dtb in "${dtb_path}"/bcm*.dtb; do
+      [ -e "${dtb}" ] || continue
+      cp "${dtb}" /boot/firmware/
+    done
+
+    cp "$latest_kernel" /boot/firmware/
+    cp "$latest_initrd" /boot/firmware/
+  fi
 fi
 
 
diff --git a/debian/patches/brcm_firmware b/debian/patches/brcm_firmware
index 52fe33dabcb16e8917c4d1ae6bc952f8537273e6..8f6b4c7a5f87cf05986f84c45591d07d3b26b9f3 100644
--- a/debian/patches/brcm_firmware
+++ b/debian/patches/brcm_firmware
@@ -1,5 +1,5 @@
 Origin: https://github.com/RPi-Distro/firmware-nonfree/tree/master/brcm
-Forwarded: not-needd
+Forwarded: not-needed
 Last-Update: 2022-04-07
 Reviewed-by: Gunnar Wolf <gwolf@debian.org>
 Description: Add a Raspberry-specific firmware file not included upstream
diff --git a/debian/raspi-firmware.install b/debian/raspi-firmware.install
index afdc23659d8daf6d02d670296186b03e512ab602..a5076d408de22d03ede2ab2e32dab09cee573de3 100644
--- a/debian/raspi-firmware.install
+++ b/debian/raspi-firmware.install
@@ -1,4 +1,6 @@
 boot/* usr/lib/raspi-firmware
+debian/dtso/*.dtbo usr/lib/raspi-firmware/overlays
+debian/dtso/README.md usr/lib/raspi-firmware/overlays
 brcm80211/brcmfmac43430-sdio.txt lib/firmware/brcm
 brcm80211/brcmfmac43455-sdio.txt lib/firmware/brcm
 brcm80211/brcmfmac43456-sdio.txt lib/firmware/brcm
diff --git a/debian/raspi-firmware.lintian-overrides b/debian/raspi-firmware.lintian-overrides
index 83cda73a839fbad38f76a64d3618f119b37879c4..e1b03d7a6cd820ac07288fa8375aa565c288b633 100644
--- a/debian/raspi-firmware.lintian-overrides
+++ b/debian/raspi-firmware.lintian-overrides
@@ -1,49 +1,26 @@
 # The package distributes non-free binaries (for which the source is not
 # public) and contains bootloader code, so override a bunch of lintian warnings
-raspi-firmware: arch-independent-package-contains-binary-or-object usr/lib/raspi-firmware/start.elf
-raspi-firmware: arch-independent-package-contains-binary-or-object usr/lib/raspi-firmware/start4.elf
-raspi-firmware: arch-independent-package-contains-binary-or-object usr/lib/raspi-firmware/start_cd.elf
-raspi-firmware: arch-independent-package-contains-binary-or-object usr/lib/raspi-firmware/start4cd.elf
-raspi-firmware: arch-independent-package-contains-binary-or-object usr/lib/raspi-firmware/start_db.elf
-raspi-firmware: arch-independent-package-contains-binary-or-object usr/lib/raspi-firmware/start4db.elf
-raspi-firmware: arch-independent-package-contains-binary-or-object usr/lib/raspi-firmware/start_x.elf
-raspi-firmware: arch-independent-package-contains-binary-or-object usr/lib/raspi-firmware/start4x.elf
+raspi-firmware: arch-independent-package-contains-binary-or-object [usr/lib/raspi-firmware/start.elf]
+raspi-firmware: arch-independent-package-contains-binary-or-object [usr/lib/raspi-firmware/start4.elf]
+raspi-firmware: arch-independent-package-contains-binary-or-object [usr/lib/raspi-firmware/start_cd.elf]
+raspi-firmware: arch-independent-package-contains-binary-or-object [usr/lib/raspi-firmware/start4cd.elf]
+raspi-firmware: arch-independent-package-contains-binary-or-object [usr/lib/raspi-firmware/start_db.elf]
+raspi-firmware: arch-independent-package-contains-binary-or-object [usr/lib/raspi-firmware/start4db.elf]
+raspi-firmware: arch-independent-package-contains-binary-or-object [usr/lib/raspi-firmware/start_x.elf]
+raspi-firmware: arch-independent-package-contains-binary-or-object [usr/lib/raspi-firmware/start4x.elf]
 
-raspi-firmware: embedded-library usr/lib/raspi-firmware/start.elf: libpng
-raspi-firmware: embedded-library usr/lib/raspi-firmware/start4.elf: libpng
-raspi-firmware: embedded-library usr/lib/raspi-firmware/start4db.elf: libpng
-raspi-firmware: embedded-library usr/lib/raspi-firmware/start4x.elf: libpng
-raspi-firmware: embedded-library usr/lib/raspi-firmware/start_db.elf: libpng
-raspi-firmware: embedded-library usr/lib/raspi-firmware/start_x.elf: libpng
+raspi-firmware: embedded-library libpng [usr/lib/raspi-firmware/start.elf]
+raspi-firmware: embedded-library libpng [usr/lib/raspi-firmware/start4.elf]
+raspi-firmware: embedded-library libpng [usr/lib/raspi-firmware/start4db.elf]
+raspi-firmware: embedded-library libpng [usr/lib/raspi-firmware/start4x.elf]
+raspi-firmware: embedded-library libpng [usr/lib/raspi-firmware/start_db.elf]
+raspi-firmware: embedded-library libpng [usr/lib/raspi-firmware/start_x.elf]
 
-raspi-firmware: statically-linked-binary usr/lib/raspi-firmware/start.elf
-raspi-firmware: statically-linked-binary usr/lib/raspi-firmware/start4.elf
-raspi-firmware: statically-linked-binary usr/lib/raspi-firmware/start_cd.elf
-raspi-firmware: statically-linked-binary usr/lib/raspi-firmware/start4cd.elf
-raspi-firmware: statically-linked-binary usr/lib/raspi-firmware/start_db.elf
-raspi-firmware: statically-linked-binary usr/lib/raspi-firmware/start4db.elf
-raspi-firmware: statically-linked-binary usr/lib/raspi-firmware/start_x.elf
-raspi-firmware: statically-linked-binary usr/lib/raspi-firmware/start4x.elf
-
-raspi-firmware: binary-has-unneeded-section usr/lib/raspi-firmware/start.elf .comment
-raspi-firmware: binary-has-unneeded-section usr/lib/raspi-firmware/start_cd.elf .comment
-raspi-firmware: binary-has-unneeded-section usr/lib/raspi-firmware/start_db.elf .comment
-raspi-firmware: binary-has-unneeded-section usr/lib/raspi-firmware/start_x.elf .comment
-
-raspi-firmware: spelling-error-in-binary usr/lib/raspi-firmware/start.elf Recyling Recycling
-raspi-firmware: spelling-error-in-binary usr/lib/raspi-firmware/start.elf rountine routine
-raspi-firmware: spelling-error-in-binary usr/lib/raspi-firmware/start.elf recieved received
-
-raspi-firmware: spelling-error-in-binary usr/lib/raspi-firmware/start_db.elf postion position
-raspi-firmware: spelling-error-in-binary usr/lib/raspi-firmware/start_db.elf trucate truncate
-raspi-firmware: spelling-error-in-binary usr/lib/raspi-firmware/start_db.elf calulated calculated
-raspi-firmware: spelling-error-in-binary usr/lib/raspi-firmware/start_db.elf Recyling Recycling
-raspi-firmware: spelling-error-in-binary usr/lib/raspi-firmware/start_db.elf rountine routine
-raspi-firmware: spelling-error-in-binary usr/lib/raspi-firmware/start_db.elf recieved received
-
-raspi-firmware: spelling-error-in-binary usr/lib/raspi-firmware/start_x.elf postion position
-raspi-firmware: spelling-error-in-binary usr/lib/raspi-firmware/start_x.elf trucate truncate
-raspi-firmware: spelling-error-in-binary usr/lib/raspi-firmware/start_x.elf calulated calculated
-raspi-firmware: spelling-error-in-binary usr/lib/raspi-firmware/start_x.elf Recyling Recycling
-raspi-firmware: spelling-error-in-binary usr/lib/raspi-firmware/start_x.elf rountine routine
-raspi-firmware: spelling-error-in-binary usr/lib/raspi-firmware/start_x.elf recieved received
+raspi-firmware: statically-linked-binary [usr/lib/raspi-firmware/start.elf]
+raspi-firmware: statically-linked-binary [usr/lib/raspi-firmware/start4.elf]
+raspi-firmware: statically-linked-binary [usr/lib/raspi-firmware/start_cd.elf]
+raspi-firmware: statically-linked-binary [usr/lib/raspi-firmware/start4cd.elf]
+raspi-firmware: statically-linked-binary [usr/lib/raspi-firmware/start_db.elf]
+raspi-firmware: statically-linked-binary [usr/lib/raspi-firmware/start4db.elf]
+raspi-firmware: statically-linked-binary [usr/lib/raspi-firmware/start_x.elf]
+raspi-firmware: statically-linked-binary [usr/lib/raspi-firmware/start4x.elf]
diff --git a/debian/raspi-firmware.postinst b/debian/raspi-firmware.postinst
index 8ecc5f330ab938e7723a47d831e6f62ad4418d36..7dfa2ba60b88b7c5d1eb1447874599079fd07b11 100644
--- a/debian/raspi-firmware.postinst
+++ b/debian/raspi-firmware.postinst
@@ -3,8 +3,24 @@
 
 set -e
 
+is_arm_system() {
+  # Check to see if the host is running an arm-based system
+  # (i.e. whether the raspi-firmware package is useful)
+  DPKG_ARCH=$(dpkg --print-architecture)
+  case "$DPKG_ARCH" in
+    arm64|armel|armhf)
+      return 0;;
+    *)
+      return 1;;
+  esac
+}
+
 case "$1" in
   configure)
+    if ! is_arm_system ; then
+      # Not running on an arm-based system, skip the postinst
+      exit 0
+    fi
 
     if ischroot ; then
       true # chroot detected - skip mount point check
@@ -18,14 +34,8 @@ case "$1" in
     # Ensure the target directory exists. See https://bugs.debian.org/887062
     mkdir -p /boot/firmware
 
-    for file in /usr/lib/raspi-firmware/*
-    do
-      file=$( basename "$file" )
-      cp "/usr/lib/raspi-firmware/$file" "/boot/firmware/$file"
-      # sync might fail when running under qemu, which, as of version 2.7,
-      # has not implemented the syncfs syscall.
-      sync -f "/boot/firmware/$file" || true
-    done
+    cp -r /usr/lib/raspi-firmware/* /boot/firmware/
+    sync -f /boot/firmware || true
 
     # Manually trigger the kernel postinst hook when raspi-firmware is first
     # installed (or upgraded), as the kernel package might already be installed
diff --git a/debian/rules b/debian/rules
index bb4e5258bd8a9ba449e682d11a7f06fb349e8582..11d4d5efebd4a03b502d77115af726c401bc6ad3 100755
--- a/debian/rules
+++ b/debian/rules
@@ -21,8 +21,10 @@ include /usr/share/dpkg/default.mk
 %:
 	dh $@
 
-override_dh_install:
-	dh_install
+execute_after_dh_auto_install:
+	$(MAKE) -C debian/dtso
+
+execute_after_dh_install:
 	# Affected paths exist only when building the binary packages;
 	# the conditionals will avoid FTBFS
 	[ ! -f  debian/raspi-firmware/usr/lib/raspi-firmware/LICENCE.broadcom ] || rm debian/raspi-firmware/usr/lib/raspi-firmware/LICENCE.broadcom
diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides
index 775dbe7497f3875c40cf58979bc297ada06f6b1d..e7f5c959c66961885784cd6384094bf4baa26ac7 100644
--- a/debian/source/lintian-overrides
+++ b/debian/source/lintian-overrides
@@ -1,18 +1,9 @@
 # This is non-free firmware, sourceless files are allowed
-raspi-firmware source: source-is-missing boot/start.elf
-raspi-firmware source: source-is-missing boot/start4.elf
-raspi-firmware source: source-is-missing boot/start4cd.elf
-raspi-firmware source: source-is-missing boot/start4db.elf
-raspi-firmware source: source-is-missing boot/start4x.elf
-raspi-firmware source: source-is-missing boot/start_cd.elf
-raspi-firmware source: source-is-missing boot/start_db.elf
-raspi-firmware source: source-is-missing boot/start_x.elf
-raspi-firmware source: source-contains-prebuilt-binary boot/start.elf
-raspi-firmware source: source-contains-prebuilt-binary boot/start_cd.elf
-raspi-firmware source: source-contains-prebuilt-binary boot/start_db.elf
-raspi-firmware source: source-contains-prebuilt-binary boot/start_x.elf
-raspi-firmware source: source-contains-prebuilt-binary boot/start4.elf
-raspi-firmware source: source-contains-prebuilt-binary boot/start4cd.elf
-raspi-firmware source: source-contains-prebuilt-binary boot/start4db.elf
-raspi-firmware source: source-contains-prebuilt-binary boot/start4x.elf
-raspi-firmware source: debian-watch-does-not-check-gpg-signature
+source-is-missing [boot/start.elf]
+source-is-missing [boot/start4.elf]
+source-is-missing [boot/start4cd.elf]
+source-is-missing [boot/start4db.elf]
+source-is-missing [boot/start4x.elf]
+source-is-missing [boot/start_cd.elf]
+source-is-missing [boot/start_db.elf]
+source-is-missing [boot/start_x.elf]