I have been using RADXA QuadSata HATs with RPI 4B for couple of years now and had no issues, recently bought the Penta SATA HAT for RPI 5 and ran into a strange issue so first time registered with RADXA community and posting my first topic.
Core Idea: The bootloader loads kernel from MicroSD, then the kernel mounts root=PARTUUID= and continues to boot from the SSD.
-
Prepare MicroSD with Raspberry Pi OS 64-Bit(Full Media with Desktop) rootfs & /boot: Flash the full OS to the MicroSD using Raspberry Pi Imager.
-
Prepare SSD with Raspberry Pi OS(Full Media with Desktop) rootfs & /boot: Flash the full OS to the SSD using Raspberry Pi Imager.
-
Make sure SSD is not connected to the HAT, Insert the MicroSD card into the RPI-5 and power up.
-
Make sure the RPI-5 is connected to the internet, perform apt update and apt full-upgrade
sudo apt update && sudo apt full-upgrade -y -
To use the SATA HAT on RPI-5, Edit /boot/firmware/config.txt file(on /boot/firmware/ of microSD card) and enable the pcie gen 1 by adding the “dtparam=pciex1” parameter under [All] section and save the file.
-
Power up the RPI-5 with SATA HAT attached along with the SSD (with the OS)
-
Get the SSD root ( / ) PARTUUID with following command:
lsblk -o NAME,TYPE,UUID,PARTUUID,SIZE -
Point the kernel at the SSD root (/): Edit MicroSD’s /boot/firmware/cmdline.txt to use the SSD’s root PARTUUID.
e.g.: console=serial0,115200 console=tty1 root=PARTUUID=796ebf23-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=IN -
Power on the RPI-5 and align the fstab: On the SSD’s /etc/fstab, ensure entries reference the SSD’s own PARTUUIDs:
• / on PARTUUID= 796ebf23-02
• Do not mount /boot/firmware from SSD; the SD provides it. Either remove that line or point /boot/firmware to the SD only if you plan to mount it post-boot for edits.
/etc/fstab looks like below after commenting the /boot/firmware line:
proc /proc proc defaults 0 0
#PARTUUID=796ebf23-01 /boot/firmware vfat defaults 0 2
PARTUUID=796ebf23-02 / ext4 defaults,noatime 0 1 -
First boot and verification
• Power off, insert SD, connect SSD, power on.
• Check root device & /boot device with lsblk -f; it displayed the /boot/firmware is booted from /dev/mmcblk0p1 (Micros SD card) and rootfs ( / ) is pointed to /dev/sda2
This is exactly how I want my RPI-5 load and run, /boot/firmware to load from MicroSD card at all times and use the SSD as rootfs ( / ).
RPI-5 works from 30mins to an hour with multiple reboots, shutdown and turn off power supply and turn on power supply, however randomly while I am working in terminal I start getting “exec format error” for system commands such as lsblk, blkid or even for ls command and when I reboot the RPI-5 loads into initramfs.
I have tried multiple times and run into similar situation every time and unable to identify the pattern or root cause for the issue.
RPI-5 Details:
Raspberry Pi 5
RADXA PenTA SATA HAT
1 x MicroSD card is SANDISK Extreme 128GB A2 V30
1 x SSD is Seagate Barracuda Compute Q1 SSD 240GB SATA 6GBPS and power required is +5VDC 0.20A => This is the drive to be used as rootfs ( / )
3 x SSDs for Data are Seagate Barracuda Compute with each disk of 2TB capacity and power required as +5VDC 1.0A
1 x Raspberry Pi Original 27W USB-C Power Supply
Assuming it could be power related issue, I tried powering up the RPI-5 with the different power adapters with different combinations, while repeating the entire process mentioned above for each combination and the results were same.
Power Supply Combinations Tested:
- Only Raspberry Pi Original 27W USB-C Power Supply
- Only FEDUS AC Adapter Model: FE-12V5AMP
Input: 90-240~, 50Hz, 1.5A
Output: 12V 5AMP - Only KENTO AC Adapter Model: EA1050D~240
Input: 100-240~1.8A, 50-60Hz
Output: 12V 5A - 60W Max - Tested with 1(RPI Original) connected to RPI-5 Type-C port & 2 (FEDUS) connected to SATA HAT’s 12V DC power input port
- Tested with 1(RPI Original) connected to RPI-5 Type-C port & 3 (KENTO) connected to SATA HAT’s 12V DC power input port
Thanks
Srini T