I am attempting to netboot Ubuntu 20.04.1LTS arm64 on a Raspberry Pi 3B v1.2. To do this, I have replaced the Ubuntu u-boot boot loader with the Pi boot loader, as instructed in the Ubuntu documentation. From my tftp server logs I can see that all correct files are being loaded, but the Pi still does not progress past the rainbow splash screen.

I have set uart_2ndstage=1 in my config.txt, which has given me serial output of bootcode.bin, which shows config.txt, start.elf, and fixup.dat get loaded. According to the Raspberry Pi Documentation, the option should also enable serial output for start.elf, but that is not the case.

I have further set the option start_debug=1 in my config.txt and see that start_db.elf is now being loaded, but do not get any additional serial output.

As an additional test I have set the same options in the config.txt when used from an sdcard, so setting the serial options as well as using the adjusted boot loader and kernel. This leads to an identical hang.

Edit: I have found the cause of my issue. Setting arm_64bit=1 (or any non empty value) makes it so either the bootcode.bin or start.elf expect a non-compressed kernel image. Ubuntu gives compressed images by default. By manually decompressing the image, the Pi boots. My original question still stands, however.

My question is: what can I do to see serial output of what start.elf is doing and expecting?


I don't know if this fits to your installation but on Raspbian you can patch the bootcode.bin file to get debug output on the serial console. First look if you can find the flag with:

rpi ~$ strings /boot/bootcode.bin | grep BOOT_UART

Then patch it with:

rpi ~$ sudo sed -i -e "s/BOOT_UART=0/BOOT_UART=1/" bootcode.bin

I have taken this from Raspberry Pi boot modes. For further information look there.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.