Volumio not working on Raspberry Pi 4 rev 1.5 board - start4.elf not compatible

Thanks.

So yes, there’s no other choice for us. We need to update the kernel.

Sorry, this slipped off my radar. But the issue is the mistake I pointed out over at

Also spoke about the fix there, but here is the patch:

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"
 

However I think this is the better route - patching firmware like this is asking for head scratching trouble down the line.

Is this correct? You seem to be referring to KERNEL_SEMVER[2] twice. Should it be KERNEL_SEMVER[0], KERNEL_SEMVER[1] and KERNEL_SEMVER[2]?

:mag: Indeed. That should be 1. Here and in pi.sh#L332 as well.

Patch corrected :slight_smile:

Guys, one more test from you… I hope we are finally there:

Please test:
https://updates.volumio.org/pi/volumio/3.229/Volumio-3.229-2022-02-22-pi.zip

Especially, if it boots, use it with your I2S DAC and let us know if everything works as expected

Thanks!

Thanks! Will give it a try in the evening and report back then!

Hi @volumio - I have tested and all good.

  • Boots ok
  • Plays through IQAudio DAC+ card ok

Sources Tested: -

  • Web Radio
  • Media Server
  • Spotify Plugin
  • Local Library

Thanks!

If others can provide the same info, that will be very very useful… thanks a lot

I2S ChipDip-DAC works well. If add a string for ChipDip DAC in dacs.json file. DAC’s driver and overlay are already in the Kernel.

Thanks! Since we are moving forward with the kernel, I merged your pull request.

image
Works!

Just tested playback with a BubbleUPNP Stream (Qobuz) and some random picked Webradios. If you want me to test with Spotify or Qobuz (local) let me know.

I2S DAC is a IQAudio DAC Pro

On a sidenote: the download was ridiculously slow (~110-150 kb/s) and took me about an hour. My internetconnection was OK (did a speedtest while downloading), so maybe you have a bottleneck in your servers?

Since the launch of Volumio 3 we saw a great spike in usage on all our servers…
So we are upgrading all of them and scaling them up…

Yes!

Just tested v3.229 on my PI2 with the USB-WIFI Dongle. As expected: works except for WIFI :sleepy:

Which dongle please?

DLINK DWA131 using rtl8192eu driver

I knew that the driver was not available anymore with the new kernel…still wanted to test somehow…

At some point it would be good to have a list of compatible dongles with the new kernel once it moves to stable…

HI! How did you recognize those 16 files, you needed to replace? Thanks, I’m going crazy over this issue

Hi @kozmo, are you on the latest version? It was reported that that this was now fixed in v.3.229 and later.


If I use the most recent version, or the test zip linked above, I’m getting this screen. If I use rasbian, or ubuntu server, the board boots. This is my first experience with volumio so I may be expecting something different, or missing a step. Let me know if you think of anything odd I may be doing wrong. /proc/info indicated the version was 1.5.

edit: what I’ve tried a) 3 different sd card b) 2 different PSUs powered via the amp2 1.1. c) 2 seperate usb-c power supplies powering just the pi with no amp2 connected.

Now that I think of it, the ribbon cable to the official pi touch screen is still connected, though the screen is not powered. perhaps that’s where I goofed.

I feel quite silly, and feel free to shred on an old guy, but here’s what I did…

Usually I use Balena Etcher, but this time I read in the Volumio docs to use the raspberry pi imager. I think, yeah baby, let’s get randy, and try something different…

I open imager, choose custom, and select the zip file… (Balena normally chooses the img file inside, and carries on). The pi imager extracted the zip onto the card. Both are valid results, it’s the user’s expectation which was broken :slight_smile: .