Zero/install/Boot Troubleshooting
Radxa Zero > Installation > Boot troubleshooting
An detailed guide for troubleshooting Radxa Zero's boot issue
This is a more advanced guide aiming to help user fix their boot related issues. Due to how Zero's bootloader can be stored at various locations and how each distro usually has their own quirk about how bootloader is configured, user may find it confusing why the board is not booting as they are expected. This guide will help you understand how Zero decided which bootloader to boot, the current available bootloaders from Radxa, and how to wipe and reinstall any bootloader.
Experience with Linux, maskrom, and Android fastboot
tool is highly recommended.
Contents
Amlogic's boot logic
When you boot a bare board without any bootloader, you will see the following string printed on your serial console:
G12A:BL:0253b8:61aa2d;FEAT:E0F83180:2000;POC:F;RCY:0;EMMC:0;READ:0;CHK:1F;READ:0;CHK:1F;READ:0;CHK:1F;SD?:0;SD:0;READ:0;CHK:1F;USB:8;
This is how the SoC finds the boot target. It will search eMMC first with 3 read instructions, each for mmcblk0
, mmcblk0boot0
, and mmcblk0boot1
. If it fails to boot from eMMC it will search microSD card next, and finally the USB devices.
This means, to boot off any given storage media, you need to make sure bootloaders stored before this chain get wiped. Otherwise a different boot configuration will be used, instead of the one that came with your installation media.
Some extra messages when boot from eMMC:
# boot from mmcblk0 G12A:BL:0253b8:61aa2d;FEAT:E0F83180:2000;POC:F;RCY:0;EMMC:0;READ:0;0.0 # boot from mmcblk0boot0 after mmcblk0 is wiped G12A:BL:0253b8:61aa2d;FEAT:E0F83180:2000;POC:F;RCY:0;EMMC:0;READ:0;CHK:1F;READ:0;0.0 # boot from mmcblk0boot1 after mmcblk0 and mmcblk0boot0 are wiped G12A:BL:0253b8:61aa2d;FEAT:E0F83180:2000;POC:F;RCY:0;EMMC:0;READ:0;CHK:1F;READ:0;CHK:1F;READ:0;0.0
You can read more about eMMC's hardware partitions from here.
Modify bootloader on eMMC
TL;DR
We have updated our eMMC erase guide, which does the following operations automatically and should fix most boot related issues.
Beware this will result in data loss since the partition header will be wiped as well. If you need to preserve the data, either make a disk image before wiping, or follow the manual guide below.
With fastboot
First, follow maskrom guide to setup and load android-bootloader.img.
Once a device with ID 18d1:0d02 is shown in lsusb
and you can see a fastboot device is detected by sudo fastboot devices
, you can run the following command to wipe/flash bootloader image to eMMC:
# Unlock eMMC before we can do anything sudo fastboot flashing unlock sudo fastboot flashing unlock_critical # Erase bootloader sudo fastboot erase bootloader sudo fastboot erase bootloader-boot0 sudo fastboot erase bootloader-boot1 # Flash bootloader sudo fastboot flash bootloader bootloader.img sudo fastboot flash bootloader-boot0 bootloader.img sudo fastboot flash bootloader-boot1 bootloader.img
You do not need to erase before flashing, and you do not need to flash all 3 partitions.
From inside U-Boot
If your eMMC is so corrupted that any of those commands fails, you will need to erase those partitions from U-Boot console. Here is the instructions to do so as a last-ditch.
First set up serial console since U-Boot console can only be accessed via serial. Follow maskrom guide to setup and load android-bootloader.img. After the file is loaded keep hitting Enter key in serial console until the bootloader stopped with a console waiting for command.
# mmcblk0 mmc dev 1 0 mmc erase 1 2000 # mmcblk0boot0 mmc dev 1 1 mmc erase 0 2000 # mmcblk0boot1 mmc dev 1 2 mmc erase 0 2000
Additionally if your main partition is too corrupted, that you cannot use fastboot
to wipe those partitions, you can try the following command to wipe main partition's partition table and some extra data, making the partition non-bootable:
# WARNING! # Potential data loss! mmc dev 1 0 mmc erase 0 10000
Unplug and replug the power cable and now you should be able to flash bootloader according to the instruction listed in the previous section.
Modify bootloader on microSD or USB drive
microSD and USB drive both show in Linux system as block devices, so you can modify their bootloader in the same way. Additionally you can also use this method to flash bootloader to eMMC's main partition. However, fastboot
has less potential to make a mistake, so it is still recommended.
First, make sure you have installed the OS of your choice to the storage media. OS installation usually comes with their own bootloader, so if you want to modify the bootloader you have to do so after the installation.
Run any of the following commands to modify bootloader on device /dev/sdX
:
# Backup bootloader sudo dd if=/dev/sdX of=bootloader.bak conv=fsync bs=512 skip=1 count=8192 # Erase bootloader sudo dd if=/dev/zero of=/dev/sdX conv=fsync bs=512 seek=1 count=8192 # Flash bootloader sudo dd if=bootloader.img of=/dev/sdX conv=fsync bs=512 seek=1 count=8192
- Q: Board won't boot on my microSD/USB drive, and is booting stock Android instead.
- A: Please wipe eMMC's all 3 bootloaders and try again.
- Q: Manjaro won't boot.
- A: As of 2021-12-24, Manjaro requires the usage of vendor U-Boot, and its image does not contain any bootloader. Please flash android-bootloader.img to your storage media.