ROCK(Pro)64 won't boot with Linux 6.12

Creating a bug report/issue

I have searched the existing open and closed issues

Required Information

  • DietPi version | cat /boot/dietpi/.version v9.12
  • Distro version | echo $G_DISTRO_NAME $G_RASPBIAN
  • Kernel version | uname --all
  • Architecture | dpkg --print-architecture
  • SBC model | echo $G_HW_MODEL_NAME or (EG: RPi3) Rock64
  • Power supply used | (EG: 5V 1A RAVpower) 5v 3A
  • SD card used | (EG: SanDisk ultra) sandisk ultra 32gb (tried 2 different ones)

Additional Information (if applicable)

  • Software title | (EG: Nextcloud)
  • Was the software title installed freshly or updated/migrated?
  • Can this issue be replicated on a fresh installation of DietPi? yes
    ← If you sent a β€œdietpi-bugreport”, please paste the ID here β†’
  • Bug report ID | echo $G_HW_UUID

Steps to reproduce

  1. 1st time it was an update
  2. 2nd time i reflashed sd card, it updated, and reboot

Expected behaviour

  • boot after update

Actual behaviour

  • updates fine, and reboots. all the lights come on and then the ethernet activity light goes off

Extra details

  • this Rock64 has been working very good for about 5 years. i only use it for pihole/unbound. after the last Dietpi update it does’nt come online after rebooting. all the lights are on then the ethernet light goes out.

i have tried Bullseye, and Bookworm. the same thing hapens

Same problem here with Rock64.
I even created a new SDCard with the latest download, v9.12. The board boots up, then it goes through set up. When apt finishes updates and goes in to reboot, it is just blank.
I tried booting newly flashed Armbian (25.2.1_Rock64_bookworm_current_6.12.13_minimal), and that will boot either now.

You mean the Armbian image won’t boot either? probably an issue with latest kernel then.

You cannot access via HDMI either, or is it Ethernet only?

EDIT: Report at Armbian forum, seems to affect some revisions only. One comment suggests it broke not between 6.6 and 6.12 but 6.12.13 and 6.12.20: Rock64 - not booting after Armbian update - Rockchip - Armbian Community Forums
There were two changes in the kernel related to Ethernet somewhere until latest 6.12: ethernet* aliases moves from base device tree includes to individual board device trees, and changes/new methods for doing Ethernet resets at boot in PHY anstead of GMAC. The first can lead to changing MAC addresses if the mainline device tree is not used or patched falsely, the second broke Ethernet im general at least for one other SBC. But this is Ethernet only. For now I’ll take down the latest kernel for ROCK64 and check for changes in the kernel which might be relevant.

Does someone have a UART adapter to check serial console output?

3 Likes

My board is Rock64 ver.2 1GB.
I had HDMI connected to monitor the output.
The latest Armbian image won’t boot at all.
Fresh install DietPi 9.12 Bookworm would freeze after the (self) setup ran apt and installed new kernel.
Downloaded DietPi Bullseye, flashed the SDcard and ran that; it did let me finish setting it up. That is until reboot, then it stopped again, only the Red LED flashing twice.
With the UART connected, it seems to interrupt the booting after loading the kernel, with both versions of DietPi.
I went ahead and flashed LibreELEC onto another SDCard, and that seems to be running without any issues. Because of the different kernel, most likely.

As said, I took the new kernel out of our APT repo for now, so it won’t break anymore after first boot updates.

The Debian version (Bullseye vs Bookworm) ist generally irrelevant for all but x86_64 and RPi images, as they ship with the same kernel and bootloader builds, being distro agnostic.

We narrowed down the Linux version which broke it, but I need to find time to check the commit logs.

2 Likes

Thank you for your help on this. I will be glad to get my rock64 up and running again. Probably time for an upgrade

Fresh install of DietPi_ROCKPro64-ARMv8-Bookworm. It went through the initial setup fine, including apt updates and kernel installation. But after the reboot, the board doesn’t boot anymore..

As stated in a post

The new kernel has been removed from the repository. You’ll need to start from scratch, flashing the sdcard. It works now, I went through the whole process, and the Rock64 has been running for 72hrs+.

Thanks for the follow-up. Just to clarify, I did perform a fresh install after the kernel was supposedly removed from the APT repo, but the Rock64 still wouldn’t boot β€” same issue as before. It would go through the initial setup, reboot itself as expected, and then fail to boot after that first reboot. So unless it somehow pulled the new kernel again by mistake, it seems the problem persists for me even with a clean image.

Will try again and report back later.

Did you redownload the image from dietpi? I just got mine working.

1 Like

ROCK64 or ROCKPro64? The new kernel is still on the ROCKPro64 repo. Be sure to use the correct image on the correct SBC. They might boot with vice versa, but not assured to remain like that through different kernel and bootloader versions.

Sorry for the confusion, my device is the ROCKPro64 and i used the ROCKPro64 image.

Okay, that mystery solved. So both PINE64 Rockchip SBCs affected it seems?

We really need someone with a UART adapter to check serial console logs. If there is no output on HDMI, we otherwise have no real chance to check what is going wrong. So far I could not find any matching report at Armbian or commit there or upstream.

If you have time to test, I created new U-Boot builds. E.g. my ROCK Pi S required a new U-Boot binary to accept the device tree of Linux 6.12:

On ROCK64:

cd /tmp
wget https://dietpi.com/downloads/binaries/testing/linux-u-boot-rock64-current.deb
dpkg -i linux-u-boot-rock64-current.deb
/boot/dietpi/func/dietpi-set_hardware flash-uboot-mmc
reboot

On ROCKPro64:

cd /tmp
wget https://dietpi.com/downloads/binaries/testing/linux-u-boot-rockpro64-current.deb
dpkg -i linux-u-boot-rockpro64-current.deb
/boot/dietpi/func/dietpi-set_hardware flash-uboot-mmc
reboot

If you boot from USB or similar via SPI bootloader, flash that as well:

source /usr/lib/u-boot/platform_install.sh
write_uboot_platform_mtd "$DIR"

EDIT: Now found a topic at Armbian forum, which suggest that there might be some overlap between the memory spaces used by kernel, dtb, and initramfs: rock64: "Wrong Ramdisk Image Format" after upgrade to 6.12.9 - Rockchip - Armbian Community Forums
Maybe the size has increased a bit too much, so the addresses need to be set with larger offset between each other. This might be even fixed in newer U-Boot, since that is what sets these addresses. Our boot script does not override them for Rockchip SBCs. And the OP from the Armbian forum thread really used an ancient U-Boot build from 2017.

I can check the addresses on my NanoPi R4S (same kernel), which are hopefully the same on other Rockchip SBCs, and see whether they are possibly too close.

1 Like

The bootloader update might indeed be the solution: rockchip: rk3399: expand space for decompressed kernel Β· u-boot/u-boot@ddb3d7e Β· GitHub

Old memory addresses in MiB:

  • 30 device tree
  • 32.5 (compressed) kernel
  • 96 initramfs
  • 128 decompressed kernel, with a max size of 32 => until 160
  • 144 env file and overlays (we overwrite it). It is not a problem that this overlaps with the decompressed kernel, since this space is only needed before the kernel is decompressed.

So (decompressed) kernel and initamfs both can only be 32 MiB in size.

New memory addresses in MiB:

  • 32 (compressed) kernel
  • 144 env file and overlays
  • 160 decompressed kernel, with a max size of 128 => until 288
  • 288 device tree
  • 289.5 initramfs

So 128 MiB space for the kernel, and the initramfs can reach until the end of the physical RAM size, theoretically.

This change was done just with the last/current U-Boot release. As far as I can see, for 64-bit Rockchip SBCs, Armbian uses latest upstream U-Boot. I’ll verify the new layout is used on my R4S already, or whether it fits regardless.

EDIT: Yeah this is pretty exactly the issue, and should affect all 64-bit Rockchip systems:
New kernel above 32 MiB size:


Old kernel:
image

Luckily, we actually only need to raise kernel_comp_size, since the initramfs is small enough and with the old layout, the compressed kernel address comes last (aside of env file address), hence has no real limits. We can set this via /boot/dietpiEnv.txt as well, so no new bootloader needs to be flashed:

G_CONFIG_INJECT 'kernel_comp_size=' 'kernel_comp_size=0x8000000' /boot/dietpiEnv.txt

And that should fix the boot issues.

EDIT2: Ah, hmm, for RK3328 it is still 32 MiB for kernel decompression: u-boot/include/configs/rk3328_common.h at e04d137231f2e9e14708a32448c879125b8e308f Β· u-boot/u-boot Β· GitHub
And it does work on my NanoPi R2S and NEO3, which both have this SoC as well. I do remember now this kernel image, despite named vmlinuz (β€œz” for zip/compressed), is actually not compressed. In that case, the decompression address is not used at all, and the uncompressed kernel fits well between 32.5 MiB and 96 MiB. So wrong track. But still good to keep this in mind, in case it becomes a problem on other SBCs.

1 Like

My rockpro64 and rock64 have been going through updates without issue, both boards are dietpi 9.13.2.

Linux DietPi 6.12.25-current-rockchip64 #1 SMP PREEMPT Fri Apr 25 08:48:08 UTC 2025 aarch64 GNU/Linux
1 Like

The ROCKPro64 is at Linux 6.12, and the ROCK64 at Linux 6.6, right?

uname -a

Just logged into the rock64

lee@HPLee:~$ ssh dietpi@10.0.100.10
dietpi@10.0.100.10's password: 
Linux DietPi 6.12.25-current-rockchip64 #1 SMP PREEMPT Fri Apr 25 08:48:08 UTC 2025 aarch64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
 ─────────────────────────────────────────────────────
 DietPi v9.13.2 : 8 APT updates available
 ─────────────────────────────────────────────────────
 - Device model : ROCK64 (aarch64)
 - CPU temp : 40 Β°C / 104 Β°F : Optimal temperature
 - LAN IP : 10.0.100.10 (eth0)
 - MOTD : DietPi v9.13 has been released. Check out all changes:
          https://dietpi.com/docs/releases/v9_13/
 ─────────────────────────────────────────────────────

 DietPi Team     : https://github.com/MichaIng/DietPi#the-dietpi-project-team
 Patreon Legends : Chris Gelatt, ADSB.im
 Website         : https://dietpi.com/ | https://x.com/DietPi_ | Bsky: @dietpi.com
 Contribute      : https://dietpi.com/contribute.html
 Web Hosting by  : https://login-online.com/

 apt upgrade     : Run now to apply 8 available APT package upgrades

 dietpi-launcher : All the DietPi programs in one place
 dietpi-config   : Feature rich configuration tool for your device
 dietpi-software : Select optimised software for installation
 htop            : Resource monitor
 cpu             : Shows CPU information and stats

dietpi@DietPi:~$ uname -a
Linux DietPi 6.12.25-current-rockchip64 #1 SMP PREEMPT Fri Apr 25 08:48:08 UTC 2025 aarch64 GNU/Linux
dietpi@DietPi:~$ whoami
dietpi
dietpi@DietPi:~$ 

here is the rockpro64

─────────────────────────────────────────────────────
 DietPi v9.13.2 : 21:31 - Sat 05/31/2025
 ─────────────────────────────────────────────────────
 - Device model : ROCKPro64 (aarch64)
 - CPU temp : 36 Β°C / 96 Β°F : Cool runnings
 - LAN IP : 10.0.100.19 (eth0)
 - MOTD : DietPi v9.13 has been released. Check out all changes:
          https://dietpi.com/docs/releases/v9_13/
 ─────────────────────────────────────────────────────

 DietPi Team     : https://github.com/MichaIng/DietPi#the-dietpi-project-team
 Patreon Legends : Chris Gelatt, ADSB.im
 Website         : https://dietpi.com/ | https://x.com/DietPi_ | Bsky: @dietpi.com
 Contribute      : https://dietpi.com/contribute.html
 Web Hosting by  : https://login-online.com/

 dietpi-launcher : All the DietPi programs in one place
 dietpi-config   : Feature rich configuration tool for your device
 dietpi-software : Select optimised software for installation
 htop            : Resource monitor
 cpu             : Shows CPU information and stats

dietpi@DietPi:~$ uname -a
Linux DietPi 6.12.25-current-rockchip64 #1 SMP PREEMPT Fri Apr 25 08:48:08 UTC 2025 aarch64 GNU/Linux
dietpi@DietPi:~$ 

Ah nice, both on Linux 6.12. Did you flash the new bootloader with above commands first or did this work for you right away? If so, do you remember how long ago you flashed the images? Quite possible that only somewhat old bootloaders running into this issue. They are never flashed automatically, so a 5 years old image usually means a 5 years old bootloader.