volumio / volumio3-os

GNU General Public License v2.0
55 stars 38 forks source link

Pi 5.4.xx kernels don't boot.. #36

Closed ashthespy closed 2 years ago

ashthespy commented 2 years ago

Green led flashed a few times, and then stops.. Haven't connected a screen/UART to check the actual output. I am guessing @volumio you might have some hints?

volumio commented 2 years ago

Pi version? Volumio version?

ashthespy commented 2 years ago

Volumio version?

Fresh build from master, Pi 4 1.5 rev

Ah, found the error - https://github.com/volumio/volumio3-os/commit/2e3149f9e2dd0578e36cfb9ce7325cbbf260be06

https://github.com/volumio/volumio3-os/blob/2e3149f9e2dd0578e36cfb9ce7325cbbf260be06/recipes/devices/pi.sh#L196-L197

You are testing the string $ KERNEL_VERSION against the string 5.4.83 Typo? $KERNEL_VERSION is the variable

EDIT: Clarified rev

ashthespy commented 2 years ago

PS: Look a bit further in the file, there are similar kernel version shenanigans for the compat_alsa stuff.. You can reuse that logic to be a bit more flexible..

volumio commented 2 years ago

Shall it become if [[ $KERNEL_VERSION == 5.4.83 ]]; then

?

Also, I don't get why it fails on you... I managed to do a couple of builds with it...

ashthespy commented 2 years ago

Sorry, this slipped off my radar. The board was actually a Rev 1.5, I got confused with multiple ones that were being tested. Mentioned in the forum post Here is a patch to fix the typo.

diff --git a/recipes/devices/pi.sh b/recipes/devices/pi.sh
index 52284d7..26614a8 100644
--- a/recipes/devices/pi.sh
+++ b/recipes/devices/pi.sh
@@ -193,33 +193,24 @@ device_chroot_tweaks_pre() {
        rm /boot/kernel8.img
        rm -rf "/lib/modules/${KERNEL_VERSION}-v8+"
    fi
-
-        if [ "$ KERNEL_VERSION" = "5.4.83" ]; then
-          ### Temporary fix for Rasbperry PI 1.5
-          ### We use this as kernel 5.10.89 does not work with some USB DACs preventing latest kernel to be used
-          log "Downloading Firmware to support PI4 v 1.5"
-                   ### DTBs not included in 5.4.83
-                   wget -O /boot/bcm2710-rpi-zero-2-w.dtb https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/bcm2710-rpi-zero-2-w.dtb
-                   wget -O /boot/bcm2710-rpi-zero-2.dtb https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/bcm2710-rpi-zero-2.dtb
-                   wget -O /boot/bcm2711-rpi-cm4s.dtb https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/bcm2711-rpi-cm4s.dtb
-                   ### ELFs to support new PI versions
-                   wget -O /boot/fixup.dat https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/fixup.dat
-                   wget -O /boot/fixup4.dat https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/fixup4.dat
-                   wget -O /boot/fixup4cd.dat https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/fixup4cd.dat
-                   wget -O /boot/fixup4db.dat https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/fixup4db.dat
-                   wget -O /boot/fixup4x.dat https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/fixup4x.dat
-                   wget -O /boot/fixup_cd.dat https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/fixup_cd.dat
-                   wget -O /boot/fixup_db.dat https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/fixup_db.dat
-                   wget -O /boot/fixup_x.dat https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/fixup_x.dat
-                   wget -O /boot/start.elf https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/start.elf
-                   wget -O /boot/start4.elf https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/start4.elf
-                   wget -O /boot/start4cd.elf https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/start4cd.elf
-                   wget -O /boot/start4db.elf https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/start4db.elf
-                   wget -O /boot/start4x.elf https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/start4x.elf
-                   wget -O /boot/start_cd.elf https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/start_cd.elf
-                   wget -O /boot/start_db.elf https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/start_db.elf
-                   wget -O /boot/start_x.elf https://github.com/raspberrypi/firmware/raw/9c04ed2c1ad06a615d8e6479806ab252dbbeb95a/boot/start_x.elf
-        fi
+   if [[ ${KERNEL_SEMVER[0]} == 5 ]] && [[ ${KERNEL_SEMVER[1]} -le 4 ]] && [[ ${KERNEL_SEMVER[2]} -le 83 ]]; then
+       # Temporary fix for Pi 4 Rev 1.5
+       # We use this as kernel < 5.10.89 does not work with some USB DACs preventing latest kernel to be used
+       log "Downloading Firmware to support PI 4 Rev v1.5"
+       ### DTBs not included in 5.4.83
+       gitHash=9c04ed2c1ad06a615d8e6479806ab252dbbeb95a
+       firmwareFiles=(
+           # Dtb's
+           "bcm2710-rpi-zero-2-w.dtb" "bcm2710-rpi-zero-2.dtb" "bcm2711-rpi-cm4s.dtb"
+           # fixup's
+           "fixup.dat" "fixup4.dat" "fixup4cd.dat" "fixup4db.dat" "fixup4x.dat" "fixup_cd.dat" "fixup_db.dat" "fixup_x.dat"
+           # Elf's
+           "start.elf" "start4.elf" "start4cd.elf" "start4db.elf" "start4x.elf" "start_cd.elf" "start_db.elf" "start_x.elf"
+       )
+       for fwFile in "${firmwareFiles[@]}"; do
+           wget -O "/boot/${fwFile}" "https://github.com/raspberrypi/firmware/raw/${gitHash}/boot/${fwFile}"
+       done
+   fi

    log "Finished Kernel installation" "okay"
ashthespy commented 2 years ago

Btw, this is why you should use a CI to check you commits before building them.. Would have saved you quite some dev/tester resources!