Rock Pi 4C update bootloader severely broken when using eMMC + not working on samsung evo!

TL;DR; don’t but the Rock Pi 4 a/b/c if you plan on using it with ANY samsung evo. You will quite likely not get it working at all.

Hi,

I’ve been trying for months to get this damn board to work properly.
After installing the normal debian images provided by you guys on an eMMC, the process of updating the bootloader is just stupidly broken.

There are a load of issues with the script with the wiki not helping one bit in making it any easier to understand. Information seems to be scattered everywhere and i fully realize that my post is going to help in making it just a little worse still.

First, the wiki page: https://wiki.radxa.com/Rockpi4/install/NVME
It’s about as bad as you can get it.
If you follow everything to the letter, it fails on:
wget -O - apt.radxa.com/$DISTRO/public.key | sudo apt-key add -
becaue, after getting your debian, you don’t have wget yet.
So you first need to do sudo apt-get update && sudo apt-get upgrade
then

sudo apt-get install -y wget

Next: these steps are completely redundant (the update already takes care of them)

$ sudo apt-get install -y rockchip-fstab
$ sudo apt-get install -y rockchip-overlay
$ sudo apt-get install -y rockpi4-dtbo

Then you get sudo apt-get install -y rockpi4c-rk-u-boot-latest
Where the real trouble starts.

This install is “supposedly” executing 2 steps.

Step 1 is never executed. Never!
Because it is commented out in /usr/local/sbin/rockpi4c_upgrade_bootloader.sh
Why? Really, why?

So half of the script is already dead on arrival.
Perhaps step 2 works?
Nope. It’s professionally wrecked like hell.
It should backup your boot but instead backs up your whole drive on the drive itself because of this:

MNT_DEV=$(findmnt / -n -o SOURCE)

That command evaluates to my “/” partition and finds /dev/mmcblk1p2.
That is the whole eMMC device.
The script then goes on to “happily” dd (disk dump) the whole drive on the drive itself and obviously fails because it runs out of space.

Now i manually modified the script to just use /dev/mtd0. That made the flashing work, my SPI now has the “latest” u-boot version (it claims to have U-Boot 2017.09-2699-gf18abd08ab (May 24 2021 - 01:11:42 +0000), Build: jenkins-linux-build-release-590 on the serial console, yes i connected a serial console to debug).

So, with my hopes up, flashed an EVO 960 500GB NVMe to hopefully finally get the darn device to boot.
Just to end up with:

1:      kernel-4.4.154-112-rockchip-gfdb18c8bab17
Retrieving file: /initrd.img-4.4.154-112-rockchip-gfdb18c8bab17
reading /initrd.img-4.4.154-112-rockchip-gfdb18c8bab17
Error reading cluster
** Unable to read file /initrd.img-4.4.154-112-rockchip-gfdb18c8bab17 **
Skipping kernel-4.4.154-112-rockchip-gfdb18c8bab17 for failure retrieving initrd
SCRIPT FAILED: continuing...
 ** fs_devread read error - block
Failed to mount ext2 filesystem...
** Unrecognized filesystem type **
 ** fs_devread read error - block
Failed to mount ext2 filesystem...
** Unrecognized filesystem type **
 ** fs_devread read error - block
Failed to mount ext2 filesystem...
** Unrecognized filesystem type **
MMC: no card present
mmc_init: -123, time 0
Card did not respond to voltage select!
mmc_init: -95, time 26

Like… WTF…

After a lot more digging i finally found out why.
The EVO 960 is not supported, neither is the 970.
Which i found out from this topic: SPI + NVMe booting(beta)
Along with the FAQ that happily states EVO NVMe’s are working. Just not these two.
It would be an understatement to say that i’m mad at this point.

Now i tried a couple different EVO’s (960, 970 both in 500GB and 1TB versions) and none seems to work. Pathetic, Radxa. Really pathetic! And the way you describe it on your site makes one think that it works. There are u-boot versions (armbian and mainline) that do seem to work. I haven’t tried them as it likely (assumption) cripples other features.

Radxa, please make an u-Boot that WORKS with these drives! It has been done before so what’s holding you back?

I’m totally done with this SBC. I regret buying it. The annoying thing is that i could’ve never known this because Radxa is stupendously bad at telling it’s potential user that it’s not going to work in certain common cases (the Samsung NVMe’s are very common). My EVO 960 is still, to this day, not on the FAQ.

A waste, i really like the hardware.

You may want to try Armbian with mainline kernels instead. Armbian runs great on RK3399 hardware BTW.

1 Like

Sorry, that’s a solid no.
http://opensource.rock-chips.com/wiki_Status_Matrix

Look at the support matrix. No GPU support at all. No VPU either (that’s hardware video decoding). I’m fine with “reduced functionality” as in some percentages slower. Or some exotic features not implemented yet. Missing these two would just be self inflicted torture (software video decoding… no thank you). Also, it means apps that use the GPU (like browsers) will feel sluggish.

Note that this is not some assumption i have. I tried it with an image and i didn’t like it.

You can try TwisterOS Armbian also, which has GPU HW acceleration(Panfrost) on linux desktop but not VPU obviously since it uses mainline(Currently VPU Software based only) and browsing on Chromium, Vivaldi or Firefox is very fast and smooth. Anyway, there are always choices and don’t forget these are low cost arm64 development boards. If you feel like you need a polished product, you should probably get a PC. Cheers.

FYI, this is from Chromium browser on latest TwisterOS Armbian:

1 Like

Heh :slight_smile:
I have a pc, but i’d love to downgrade it to an ARM “pc”. This is, by now, technically very possible. It’s the driver department where things can use some love. In the case of Radxa, a lot of love. I just don’t get why a company like this is so capable in making awesome hardware but so lacking in the driver side of things. That’s just such a waste.

Drivers are made by chip vendor (Rockchip in this case) and other larger software vendors such as Collabora, few smaller ones, special distributions such as Armbian and others. Hundreds to thousands of people are involved in this process. Chip integrators with a few engineers are typically integrating what they get from chip vendor.

Software is different league.

1 Like

@markg85, erm, you do understand, that you are are referring to a page about 4.4, while @jtremblant posted MAINLINE kernel…
Also, they do provide information regarding “common cases”, something-something

Check the FAQs page for compatible SSD models.
https://wiki.radxa.com/Rockpi4/Linux_system_runs_on_M.2_NVME_SSD#Step_2_Install_ROCK_Pi_4_system_image_to_M.2_NVME_SSD

Or IMAGINE IT:

Known working under Linux kernel but not directly in bootloader(uSD/eMMC + NVMe booting)
Samsung EVO series(M key, NVMe), work well on ROCK Pi 4, fast speed <-- Warning nvme boot via SPI is not possible (970 EVO Plus)"
https://wiki.radxa.com/Rockpi4/FAQs#Which_M.2_SSD_are_supported.3F

Unbelievable, you bought SBC without reading wiki and now blame Radxa, like radxa is full-software team, that sells software.