An opinionated distribution of U-Boot. What is this?

The goal is to produce a user-friendly distribution of U-Boot, where there is as few differences in features possible between boards, and a “familiar” user interface for an early boot process tool.

Step 1: Obtain a current tow-boot installation image

The tow-boot installation instructions are excellent, and exist specifically for the pinephone, the Pinephone Pro and other supported devices.

Grab the installation images mentioned in the installation instructions from the latest tow-boot release. Specifically, the correct release files that you need to download names pine64-pinephoneA64-YYYY.MM-XXX.tar.xz and pine64-pinephonePro-YYYY.MM-XXX.tar.xz.

Step 2: Write installer image to an SD card

Extract the archives, pick and flash the correct image to an SD card. Use your preferred tool, Gnome Disk Utility, dd, balena etcher,… all work fine. On the PP Pro flash spi.installer.img to the SD card. The original PinePhone has no SPI flash, use the mmcboot.installer.img instead.

Step 3: Boot Installer

I recommend to first erase the SPI content for good measure Then, select “Install Tow-Boot to SPI Flash”.

Nothing should be able to go wrong here, the installer first flashes everything but the part that gets detected by the RK3399, this part is only flashed last if everything before it succeeded.

Select “Power Off”

You are now done installing tow-boot. If you came from the Mobian installation instructions you can now go back and continue there.

Boot Menu

Tow-Boot features a easy to use boot menu, though it is currently only exposed via serial cable (Baudrate: 115200, unlike Mobian).


This is a list of issues experienced at the time of writing:

: eMMC Related :

  1. Sometimes(1 in ~8 boots) mobian does not boot successfully, stuck at black screen, Notification LED keeps lighting, indicating that the kernel was unable to mount root fs. Booting to busybox.
  1. The eMMC may not come back successfully from suspend, either having the phone stock on lockscreen without input or things in the shell fall apart like applications stop opening, or randomly crash.

Issue 1 log:

mmc2: mmc_select_hs200 failed, error -110

mmc2: error -110 whilst initializing MMC card

Issue 2 log:

mmc2: mmc_select_hs200 failed, error -110

mmc2: error -110 doing runtime resume

mmc2: running CQE recovery

mmc2: cache flush error -110

mmc2: mmc_select_hs200 failed, error -110

mmc2: tried to HW reset card, got error -110