Rock 3C won't boot from NVMe SSD

I can’t get my new Rock 3C to boot from an NVMe SSD. I looked at the instructions in this post and this post but nothing so far has worked. My board says ROCK 3C V1.32. Here is what I have tried:

  • Installed latest b39 version of Debian desktop from GitHub - radxa-build/rock-3c/releases on SD card (SanDisk Extreme Pro 32GB) and booted successfully
  • sudo apt update and sudo apt upgrade
  • Shutdown Rock 3C, installed SSD (Kingston 128GB, OM3PGP4128P-AH), booted from SD card successfully
  • Downloaded Debian desktop image, installed Balena Etcher per post linked above. Tried writing image to SSD but Etcher hung then errored out.
  • Shutdown Rock 3C, removed SSD, used Balena Etcher on PC to write Debian desktop image to SSD, reinstalled SSD, booted Rock 3C successfully from SD card
  • Ran rsetup and selected “Update Bootloader” and “Update SPI Bootloader.” Both responded with “No compatible bootloader is available.”
  • Shutdown Rock 3C, removed SD card, turned on Rock 3C. No blue heartbeat LED. No output to HDMI.
  • Shutdown Rock 3C, removed SSD, used Balena Etcher on PC to write Debian CLI image to SSD, reinstalled SSD, turned on Rock 3C. No blue heartbeat LED. No output to HDMI.
  • Booted from SD card, mounted partition from NVMe which contains expected folders for Linux install (bin, boot, config, etc)
  • lsblk shows 16MB SPI memory and NVMe:
rock@rock-3c:~$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
mtdblock0    31:0    0    16M  0 disk
mmcblk1     179:0    0  29.7G  0 disk
├─mmcblk1p1 179:1    0    16M  0 part
├─mmcblk1p2 179:2    0   300M  0 part /boot/efi
└─mmcblk1p3 179:3    0  29.4G  0 part /
zram0       254:0    0 991.8M  0 disk [SWAP]
nvme0n1     259:0    0 119.2G  0 disk
├─nvme0n1p1 259:1    0    16M  0 part
├─nvme0n1p2 259:2    0   300M  0 part
└─nvme0n1p3 259:3    0   1.8G  0 part
  • 16MB SPI memory appears to be installed above. dmesg to double check:
rock@rock-3c:~$ sudo dmesg | grep spi
[   13.942269] spi-nor spi4.0: gd25lq128d (16384 Kbytes) read_data x4
  • Shutdown Rock 3C, connected serial cable, reinserted SD card, booted successfully, lots of output over serial which I can share here if it’s useful
  • Shutdown Rock 3C, removed SD card, turned on Rock 3C to boot from SSD. No blue heartbeat LED. No output to HDMI. No output to serial.
  • Switched 5V@3A power adapter for 5V@5.5A adapter. No change.
  • Looked at last two years of traffic on #rock3c-cm3 channel on radxa Discord. No answers. Posted question there but no answer yet.

The 3C uses a different boot loader if I’m not completely wrong. Have you looked at the serial output? The boot loader also writes a lot. Does it try to boot from?

Right, it uses a different bootloader from the 3A so I didn’t use any of the process from that. Yes, as you can see in my first post, I get good serial output when booting from SD but nothing at all when booting from SSD. Just to check, I tried booting without SD or SSD thinking the bootloader might say device not found and also got nothing. Serial can be a bit finnicky on Windows so I tried switching from SD to SSD a few times to make sure the serial connection hadn’t stopped working and got good serial output booting from SD every time.

Then something is wrong on your side. I tried to compile my own kernel for the 3C (without success), but got messages from the boot loading, including the menu. Unfortunately I deleted the logs, but maybe it is time to retry. To my knowledge it is not completely the same BL as in 3A, but the difference might really be only ram initialization…

Interesting. I could see a different kernel outputting something over serial whereas mine doesn’t. What do you get over serial when you try to boot from SSD with the b39 image?

Hi Druzyek,

This works:

  1. flash img to SD card (I used this image (b39): https://github.com/radxa-build/rock-3c/releases/download/b39/rock-3c_debian_bullseye_xfce_b39.img.xz ).

  2. mount ssd and the flashed SD card.

  3. run rsetup -> system maintenance: system update + after update SPI bootloader.

  4. reboot

  5. download the image file to the ROCK 3C

  6. go to download folder (cd Downloads) , run: sudo xz -d < img.file.xz | sudo dd of=/dev/nvme0n1 status=progress

  7. power off.

  8. remove SD card

  9. power on.

Please reply back if it worked for you.

1 Like

It worked! Thanks for your help. I would add one extra thing which is that I answered yes to all the questions during the system update. Thanks again!

1 Like

Now that it’s working, do I need to use system update in rsetup for regular updates or can I just use sudo apt update as usual?

@druzyek could you share the model/part number of your SPI flash installed? mine don’t have SPI factory installed and can’t find any official info what part should go in there to make it work…

Base on another post, I tried sudo dmesg | grep spi and got spi-nor spi4.0: gd25lq128d (16384 Kbytes) read_data x4 so I think gd25lq128d might be the name.

@druzyek , please kindly provide more detail about @OKdoOAV step 5/ download the image file to the ROCK 3C and step 6/ go to download folder by cd Download, run sudo xz -d < img.file.xz | sudo dd of=/dev/nvme0n1 status=progress.

It is because I do not know how to process step 5 and step 6.

@druzyek, additional about my Rock3C as follow:

1/ version before running rsetup: Linux rock-3c 5.10.160-26-rk356x #bfb9351f3 SMP Wed Jan 10 07:01:50 UTC 2024 aarch64

2/ version after running rsetpu: Linux rock-3c 5.10.160-33-rk356x #a2c6058d5 SMP Fri Apr 26 10:05:00 UTC 2024 aarch64

3/ result of running command lsblk:

rock@rock-3c:/$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mtdblock0 31:0 0 16M 0 disk
mmcblk1 179:0 0 14.8G 0 disk
├─mmcblk1p1 179:1 0 16M 0 part /config
├─mmcblk1p2 179:2 0 300M 0 part /boot/efi
└─mmcblk1p3 179:3 0 14.5G 0 part /
zram0 254:0 0 489.4M 0 disk [SWAP]
nvme0n1 259:0 0 57.6G 0 disk
└─nvme0n1p1 259:1 0 57.6G 0 part

Hi @S_F_Chan,

step 5, you download the same image that you used to flash the SD Card to the ROCK 3C (Use the link in step 1), when it’s downloaded it will be in the Downloads folder (that’s why first step in step 6 is to change to Downloads directory.

Just to clearify step 6, has to be done in a terminal:
cd Downloads
sudo xz -d < img.file.xz | sudo dd of=/dev/nvme0n1

(where “img.file.xz” is the filename of the image you downloaded in step 5).

/OKdoOAV

Hi, @OKdoOAV, thank you for your clarification and assistance.

I can successfully boot from NVMe SSD now.

Only a comment for noobs like me:

If you have flashed the image to the SSD using yout PC you dont need to download and run the Xz code (sugestions 5. and 6. )

I only updated the SPI bootloader and got it working.

Thanks

2 Likes