Good to see that I'm not alone in having a Rockpro64 board that does not behave properly. Here's a writeup of where I am in my investigation work. Patience is running low
Reading about ARM trusted firmware, a part of it appears to be related to power management ARM Power State Coordination Interface - Platform Design Document.
While you could build a u-boot for the device, pre-build binaries seems to be available here: Arm Trusted Firmware (TF-A) for rk3399, as well as from Sigmaris.
I'm running OpenWrt (22.x), and it uses arm-trusted-firmware-rockchip version 2.3, whereas the latest version is 2.6. When I've tried running something different than OpenWrt, the LAN port didn't work reliably (i.e. using Armbian).
I've added a PCIE Intel I350-T4 NIC to my Rockpro64. And bought a RTC battery (RTC BACKUP BATTERY HOLDER - CR-2032), because I read someone had success enabling automatic resume from power failure using it. But it didn't work. Raised a support ticket to pin64, which is still in progress.
In the Manjaro release, they make use of atf 2.6, and a patch that would enable suspend/resume (not sure it has any impact on this issue though).
Here's instructions to patch u-boot from OpenWrt (not specific to rockpro64). However, these instructions from Manjaro to patch u-boot I guess could be adopted to patch u-boot in OpenWrt.
And here's info from Manjaro community how the RockPro64 has a built in BOOTROM, which checks for valid boot sectors on different devices.
Rockpro64 uses rk808 for managing RTC, you could instruct it to create a wake-alarm every 30 second, that (I assume) would try to wake the device in case it gets into a shutdown state due to a power failure. I haven't tried, but perhaps if there is no power at the time of a wake-alarm, then the device may not boot, and perhaps there's no functionality to retry missed alarms. To be tried though.
Read more about how RTC wake-alarms works at firefly wiki.
EDIT: Also wanted to add a link to Automatically run after power recovery - but it is way too advanced for me.
Reading about ARM trusted firmware, a part of it appears to be related to power management ARM Power State Coordination Interface - Platform Design Document.
While you could build a u-boot for the device, pre-build binaries seems to be available here: Arm Trusted Firmware (TF-A) for rk3399, as well as from Sigmaris.
I'm running OpenWrt (22.x), and it uses arm-trusted-firmware-rockchip version 2.3, whereas the latest version is 2.6. When I've tried running something different than OpenWrt, the LAN port didn't work reliably (i.e. using Armbian).
I've added a PCIE Intel I350-T4 NIC to my Rockpro64. And bought a RTC battery (RTC BACKUP BATTERY HOLDER - CR-2032), because I read someone had success enabling automatic resume from power failure using it. But it didn't work. Raised a support ticket to pin64, which is still in progress.
In the Manjaro release, they make use of atf 2.6, and a patch that would enable suspend/resume (not sure it has any impact on this issue though).
Here's instructions to patch u-boot from OpenWrt (not specific to rockpro64). However, these instructions from Manjaro to patch u-boot I guess could be adopted to patch u-boot in OpenWrt.
And here's info from Manjaro community how the RockPro64 has a built in BOOTROM, which checks for valid boot sectors on different devices.
Rockpro64 uses rk808 for managing RTC, you could instruct it to create a wake-alarm every 30 second, that (I assume) would try to wake the device in case it gets into a shutdown state due to a power failure. I haven't tried, but perhaps if there is no power at the time of a wake-alarm, then the device may not boot, and perhaps there's no functionality to retry missed alarms. To be tried though.
Read more about how RTC wake-alarms works at firefly wiki.
EDIT: Also wanted to add a link to Automatically run after power recovery - but it is way too advanced for me.