Package: raspi-firmware
Followup-For: Bug #948712
X-Debbugs-Cc: [email protected]

Dear maintainer,

using a simple modification of two postinst scripts, it it easily possible to 
avoid unnecessary grief for users of the Pinebook Pro and possibly other PINE64 
devices.

The proposed modification consists of an additional check to verify if the 
platfom actually is an RPI before raising an error condition just because 
/boot/firmware is not a mount point.

On Pinebook Pro and some other PINE64 devices, /boot/firmware is usually just a 
subdirectory and there is no need to complicate things by insisting it to be a 
mount point.

See attached diffs for how this was resolved for our own use.

Best regards,
Paul Seelig

-- System Information:
Debian Release: 13.2
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 
'proposed-updates'), (500, 'stable')
Architecture: arm64 (aarch64)

Kernel: Linux 6.17.8+deb13-arm64 (SMP w/6 CPU threads; PREEMPT)
Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages raspi-firmware depends on:
ii  dosfstools  4.2-1.2
ii  dpkg        1.22.21

raspi-firmware recommends no packages.

Versions of packages raspi-firmware suggests:
ii  bluez-firmware         1.2-13
ii  firmware-brcm80211     20251021-1~bpo13+1
ii  firmware-misc-nonfree  20251021-1~bpo13+1

-- no debconf information
--- 
raspi-firmware-1.20240424+ds.orig/debian/kernel/postinst.d/z50-raspi-firmware   
    2025-01-05 08:48:37.000000000 +0100
+++ raspi-firmware-1.20240424+ds/debian/kernel/postinst.d/z50-raspi-firmware    
2025-12-11 19:54:04.569732557 +0100
@@ -48,7 +48,7 @@
   true # chroot detected - skip mount point check
 elif [ -e /usr/bin/systemd-detect-virt ] && systemd-detect-virt -q ; then
   true # virtualization detected - skip mount point check
-elif ! mountpoint -q /boot/firmware ; then
+elif pi_4_family && ! mountpoint -q /boot/firmware ; then
   echo "raspi-firmware: missing /boot/firmware, did you forget to mount it?" 
>&2
   exit 1
 fi
--- raspi-firmware-1.20240424+ds.orig/debian/raspi-firmware.postinst    
2025-01-05 08:48:37.000000000 +0100
+++ raspi-firmware-1.20240424+ds/debian/raspi-firmware.postinst 2025-12-11 
19:56:50.118938275 +0100
@@ -3,6 +3,13 @@
 
 set -e
 
+pi_4_family() {
+  # This matches all RPi4 boards ("Raspberry Pi 4 Model B Rev 1.4"),
+  # Pi400 full computer systems ("Raspberry Pi 400 Rev 1.0"), and
+  # CM4 compute modules ("Raspberry Pi Compute Module 4 Rev 1.0").
+  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)
@@ -26,7 +33,7 @@
       true # chroot detected - skip mount point check
     elif test -e /usr/bin/systemd-detect-virt && systemd-detect-virt -q ; then
       true # virtualization detected - skip mount point check
-    elif ! mountpoint -q /boot/firmware; then
+    elif pi_4_family && ! mountpoint -q /boot/firmware; then
       echo "Error: missing /boot/firmware, did you forget to mount it?" >&2
       exit 1
     fi

Reply via email to