Oram/Pi5 Boot from NVMe?

Hello @le51,

I am giving some updates, about my attempt to start Oram from nvme on RPI 5.

I have checked that the right nvme partition (2) was pointed at in boot/firmware/cmdline.txt, and that bootloader and EEPROM were up-to-date.

I have been able to intercept, through video recording, a sequence of flashing screens which might indicate that the Zynthian OS is beginning to load, but I’m not sure about the meaning of the various system components being activated.

After a short while, the boot sequence falls in an endless blank screen, only to show messages about components termination when I physically switch off the Raspi.

At this point, I am running short of ideas or solutions. I reckon that, somewhere in the starting process of Oram/ZynthianOS, there must be a switch/variable/flag that could be set, in order to also allow nvme startup. I can’t see any reason why Zynthian should refuse to switch mass storage medium to boot. Might it be done somehow @jofemodo? :slightly_smiling_face:

Thanks for feedback and congrats for your perseverance.

Hurrah ! At least it boots on the NVME drive .
Damn it ! Zynthian won’t start.

I’m curious about the procedure you have followed To install Zynthian on the SSD

Thank you @le51 for the encouraging words!

I have got an excellent Argon Neo 5 M.2 full-aluminium RPI enclosure, with PCIe HAT board for nvme.

Since the assembly procedure requires to stick on the SSD drive a substantial strip of thermal paste, and to insure it is securely screwed inside its casing, once the whole kit is assembled you have to stay in Raspberry environment exclusively.

Moreover, you have to work with both an SD and nvme storage media in parallel, in order to be able to recover the system the (many) times it fails, while you attempt to boot either ZynthianOS or Oram from SSD.

Therefore, this has been my installation process:

1] Burning Raspberry OS with Raspberry Imager to an SD card, on an external computer.

2] Assembling the RPI 5 enclosure with the SD card with Raspberry OS in place, and the nvme drive mounted in its casing with thermal paste.

3] Starting the Raspi with Raspberry OS, according to the default boot sequence (SD first).

4] Updating the EEPROM from terminal, then evoking sudo raspi-config to set the boot sequence as option 2 (nvme first, then USB and SD).

5] Flashing ZyntianOS or Oram to NVMe (which by now is a visible storage drive in Raspberry OS), using either Raspberry Imager or Balena Etcher for aarch64 (I chose the latter).

6] Making sure that boot/firmware/cmdline.txt points in root= at the second nvme drive partition (the larger one with the Zynthian OS).

7] Rebooting the Rpi5, reciting a huge prayer for the boot process to possibly succeed! :wink:

I hope it may help, if someone wants to try to replicate the procedure!

After the firstboot it runs a few config steps and does a reboot. That might be causing it problems, especially if it’s rewriting config.txt. Try booting zynthian os on sdcard to see it it sucessfully boots. Then copying that to the nvme drive.

Then editing config.txt

Hi @Baggypants ,

Do you mean trying to copy, as it is, the Oram content of the SD to NVMe after the first boot attempt, further checking afterwards that cmdline.txt and config.text point to the right nvme partition with Oram?

Don’t we need to flash a system img to the SD storage drive, in order for it to be recognized as a legitimate bootable system unit? I believed that a burner app also marks or flags something, to make the content visible to the hardware as a startup drive. I might be wrong of course, and it is no big deal to try and perform this procedure :slightly_smiling_face:

Some suggested workflows I invented in my head.

  1. Write a fresh zynthian to an sdcard. Jam into the pi and boot normally untill all set up.
  2. Remove zynthian sd and boot pi using Raspberry Pi OS
  3. Stick zynthian sd in an sdcard reader on a usb port
  4. In Raspberry Pi OS low level copy the zynth sdcard device to the NVME device using dd
  5. Fix config.txt
  6. Remove Rasperry os and try booting from nvme.

Or you could try:

  1. Setup zynth os as you have done until failure.
  2. Somehow boot Raspberry Pi OS on sdcard and check config.txt for issues.

There’s no such thing as a startup drive for arm. The firmware just pokes devices in order until something happens.

Hi @Baggypants :slightly_smiling_face:. First off, thanks for the advice. And, can you expand a bit about the mentioned copying process please? What exactly is a low level copy and what means “dd” (maybe something like “direct to disk”?).

Concerning the second suggested procedure, I have already performed it, to unlock the pi after an Oram failure from nvme. I had to physically disconnect the SSD after opening the enclosure, which wasn’t fun at all! Before any further step, I will copy the content of config and cmdline and paste it here.

Kind regards

The procedure you have described seems correct to me.

1 Like

dd is well into the realms of linux cli nerdery and lot’s of potential for getting things wrong. Have a look around for some tutorials on it and see if you can learn about block device names and partitions.

1 Like

I never use anything else!

1 Like

Alright @Baggypants, I will investigate that as soon as I can. By now, I’m getting used to that certain whiff of mystery that linuxians like to bestow upon their computer practice :wink:

1 Like

Hi Guys,
any progress? I am somewhat successful.
I’ve flashed Zynthian OS via USB to NVME adapter directly on my nvme disk.
I am using Pimoroni’s NVME Base. I have also flashed Raspberry Pi OS onto a SD card. Booted from the sd card. NVME disk is visible via lsblk command. I mounted the 1. partition. Changed to cmdline.txt to point to a 2.partition of the nvme disk. Changed the bootloader to the latest. Shutdown the Pi. Removed the sc card and Zynthian booted, but ended up with following error. Zynthian is accessible via SSH and it seems to be working well. WebConf also works with no problem. But the UI keeps showing the ERROR message over and over.

1 Like

Excellent. Procedure is logic and straight forward.

You have to setup your audio device using webconf.

So the error is that is missing audio device? because RPI 5 has none?

Yes Zynthian UI won’t start if audio device isn’t configured.
Right now you can use “dummy device”. It should start. But with no sound.

if you have à HDMI display that offer headphone output, that may work

Not a problem, I have a Hifiberry DAC+ but I am waiting on GPIO extender because it wont fit with the PI5 fan on (without cutting the heatsink that is).

On the different note. I have changed display from default (generic HDMI) that worked with my 5inch display, to MIPI 800*480 and zynthian no longer boots at all. I have access to it from Raspberry PI OS. I can mount the disk same as before and access the /zynthian/config/zynthian_envars.sh
script, but I would need to know how does the config for generic hdmi output looks like, can anyone access the WebConf change it there and tell me how does it look in the script. I know for a fact that you dont have to save it for the changes to be visible inside the config. Just the section display would do nicely. I can burn the image again onto the NVME disk, but that would require disassembly (major PITA). Thanks

1 Like

Hey, that is amazing, and largely matches my own (failed) installation procedure!

I haven’t had time to retry this route, before attempting the harder way, that is cloning Oram from SD to nvme through the DD command, which looks a bit steeper if one is not familiar with the process.

I will have another go at the most straightforward solution, and let’s see what happens. I might have mistaken something while pointing root in cmdline at the right nvme partition.

Thanks for writing step by step your sequence of operations.

Turned out to be premature. After while Zynthian will no longer boot from the NVME, dont know what the problem is. I tried it again and it worked but after few reboots the green LED is full on, fan as well and it just does not boot. Checked the partition via Raspberry PI OS and it seems ok, but no luck. Reverted back to SD card. I am gonna have to rethink it. Maybe there will be some official procedure soon, remember PI 5 is not yet officially supported.

Ok, so situation is as follows:
You dont have to update bootloader it seems, just burn the ZynthOS onto the NVME.
Plug the SD card with Raspberry PI OS, go there mount the 1. nvme partition. Go there change the cmdline.txt to point to 2. NVME partiotion. Shut it down, remove the SD card and start the PI.
It starts the ZynthOS, but…
Everytime ZynthOS reboots - which happens pretty much always if you change something that requires a reboot. the cmdline.txt Root partition changes back and points to SD card. So shut it down, put back the SD card with PI OS, change the cmdline.txt back to nvme, shut it down, remove the SD card and here you go. That is until you reboot the Zynth again :frowning: There must be a way how to avoid for the cmdline.txt file being rewritten everytime.

Yes that is a correct and working procedure. I spent few hours just to avoid dd and it does not work without it.