Rock 5B constantly crashing

I want to run some compute and I/O intensive P2P software. However, no matter what I do the system can’t run stable for more than 30 minutes. I have also tried copying data from another machine using rsync. That also leads to a crash eventually (<30 minutes).

My hardware config:

  • Radxa Rock 5B
  • Radxa power adapter (I tried a variety of others but bought the official one eventually just to be sure)
  • WD Black SN850X 4TB NVME
  • OS running on microSD (I tried running the OS from NVME as well, doesn’t make a difference)

I tried various OS images:

  • rock-5b_debian_bullseye_cli_b39
  • rock-5b-archlinux-installer
  • Armbian_23.2.1_Rock-5b_jammy_legacy_5.10.160 (<-- most stable so far)

Observations:

  • Power meter at power socket seems to suggest power consumption usually doesn’t exceed 12W
  • CPU and NVME temperature doesn’t usually exceed 70˚C (I have also tried throttling the system and maintaining <40˚C as well but that doesn’t help either)
  • Not running anything (idle system) seems ‘stable’

Tried (without effect?):

  • Throttling mem clock: echo 1560000000 | sudo tee /sys/class/devfreq/dmc/max_freq
  • Throttling CPU clock: echo 408000 | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_setspeed
  • Setting affinity of my processes to ensure only 4 out 8 cores are being used heavily to reduce overall load

No matter what I do the system eventually crashes. Symptoms vary. Sometimes it’s a core dump. Often the OS becomes corrupted/unusable: for example, my P2P processes are still running alongside other things such as htop but entering new commands in the terminal result in ‘Segmentation Fault’ or other weird errors (e.g., shared libraries are corrupted etc…). Shortly after the whole system crashes.

I am really frustrated right now and could use some help.

This sounds like faulty hardware. Which 5B model do you have?

Radxa ROCK 5B Blue Edition. 32 GB. Not sure if there is a more detailed model description/number. Let me know if you need more details.

Even though U-Boot and BL31 is different on the SD card, the SPL on SPI-NOR flash (if present) will always have precedence. So if your board does not like the ddr binairy that is on SPI-NOR flash that much, it does not matter which boot medium you use, you’re always using that ddr binairy.

So install 2400Mhz newest ddr binairy on SPI-NOR flash and see if that helps.

Also make sure your power cable wires (copper) is thick enough, although I found that the problem here results in sudden reboots.

1 Like

@Eric_Woudstra: I have flashed the SPI-NOR once before using the method described here: https://docs.radxa.com/en/rock5/rock5b/low-level-dev/bootloader_spi_flash?method=advanced. I used this image: rock-5b-spi-image-gbf47e81-20230607.img

However, I think you may be referring to something different that I haven’t tried yet. Would you mind pointing me at the relevant docs or where to find the 2400 MHz DDR binary?

Thank you!

BTW, the cable I use is the one that comes with the official Radxa power adapter. So I am assuming that’s fine.

Build instructions (EDITED):

[u-boot/doc/board/rockchip/rockchip.rst at master · u-boot/u-boot (github.com)](https://github.com/u-boot/u-boot/blob/master/doc/board/rockchip/rockchip.rst)

With this binairy:

https://github.com/rockchip-linux/rkbin/blob/master/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v1.16.bin

And this elf:
https://github.com/rockchip-linux/rkbin/blob/master/bin/rk35/rk3588_bl31_v1.45.elf

Make sure you have the needed packages installed:
https://github.com/u-boot/u-boot/blob/master/doc/build/gcc.rst

Then build the u-boot-rockchip-spi.bin

git clone --depth 1 https://github.com/rockchip-linux/rkbin
git clone --depth 1 https://source.denx.de/u-boot/u-boot.git
cd u-boot
export BL31=../rkbin/bin/rk35//rk3588_bl31_v1.45.elf
export ROCKCHIP_TPL=../rkbin/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v1.16.bin
make rock5b-rk3588_defconfig
make CROSS_COMPILE=aarch64-linux-gnu-

If you have a /dev/mtdblock0 (not /dev/mtd0) (when running on the rock5b) then you can just use dd to write the file to it:

dd if=u-boot-rockchip-spi.bin of=/dev/mtdblock0

Edit:

I guess 2700/2400Mhz does not matter, as it is ddr4 on rock5b, so 2112Mhz. Just try this SPL anyway, as it has the newest binairy and elf.

4 Likes

Thank you very much! This seems to have solved the problem. I have been running my system under full load for 10+ hours now and it’s been stable. :slight_smile:

1 Like

Great.

I found an image I compiled as such that I couldn’t access earlier.

For anyone else who experiences this problem, be sure to update the image on SPI-NOR, even though booting from another medium:

Image to flash to SPI-NOR flash: u-boot-rockchip-spi-rk3588-rock5b.zip (624.8 KB)

That should fix booting from any source, since the ddr binairy will be loaded from spi-nor if present.

Just for anyone interested, here is the other image:

Image to flash to SD / EMMC: u-boot-rockchip-rk3588-rock5b.zip (633.7 KB)

4 Likes

@Eric_Woudstra
How would you write it to SD/eMMC with dd ?
And does it search for /extlinux/exlinux.conf ? and the contents is the same as radxa extlinux?

See above using mtdblock0, or follow any guide on Radxa wiki.

Yes, in the boot partition it finds, using predefined order of devices.

Yes, existing extlinux.conf should still be usable, if this is what you want to know.