Jump to: navigation, search

The Allwinner Optimus Board by Merrii is a single-board computer.

Technical details

  • Allwinner A80 SoC
    • 4x ARM Cortex-A15 CPU
    • 4x ARM Cortex-A7 CPU
  • Ethernet
  • HDMI
  • USB
  • UART

Manual installation

Booting boot0 from SD card does not seem to work, and U-Boot in flash does not recognize SD cards nor does it support USB or network. As an alternative, FEL mode allows to load boot0, U-Boot and kernel via USB for now. You will need to transfer them on each boot.

Entering FEL mode

Either press 2 on the serial console when booting/resetting the device until it says "eraly jump fel", or press a key to enter the U-Boot prompt and enter efex to the same effect:

sunxi# efex
## jump to efex ...
set next system status
de top clk 18 is already close
de top clk 30 is already close
de top clk 19 is already close
de top clk 30 is already close
de top clk 35 is already close
mod 40 is already disable
de top clk 16 is already close
mod 40 is already disable
mod 40 is already disable
de top clk 34 is already close
mod 40 is already disable
lcd 2 is not register
reset cpu
HELLO! BOOT0 is starting!
boot0 version : 3.1.0
rtc 1 value 0x0001005a
rtc 2 value 0x00020000
rtc 3 value 0x00030000
eraly jump fel

Connect the USB 3.0 Micro USB outlet to your computer.


As long as upstream U-Boot does not have SPL support yet, you need fes1.fex generated from the Allwinner SDK. (TBD)

# fel write   0x12000 fes1.fex
# fel execute 0x12000

This will load and execute Allwinner's BOOT0 bootloader in SRAM:

begin init dram
INFO: dram code V2.2
dram clk=672
dram_zq = 0x0x003f3fdd!!
DDR3 used!!
dram channle 2
pmu id=0x00000062
VTC Disabled!!
Channel 0 OK!
VTC Disabled!!
Channel 1 OK!
dram size=2048MBytes!
init dram ok

Next you'll need the main bootloader.

Loading a kernel via FEL

Assuming you have a self-compiled kernel with built-in drivers, you can transfer it as follows:

# fel write 0x22000000 zImage
# fel write 0x23000000 sun9i-a80-optimus.dtb

Note that transferring large initrd files (such as generated from our kernel-lpae with dracut -N) is known to fail, you may need to transfer them in multiple smaller pieces of, e.g., 8 MB max. Designated initrd address is 0x23300000.

U-Boot via FEL

Download the u-boot-merriia80optimus RPM and extract usr/bin/u-boot.bin (this corresponds to u-boot-dtb.bin).

# fel write   0x2a000000 u-boot.bin
# fel execute 0x2a000000

This will load and execute our U-Boot in SDRAM.

As of v2015.07, U-Boot does not seem to recognize SD cards and is lacking support for USB or network. You can execute a previously FEL-loaded kernel as follows:

sunxi# setenv bootargs 'root=...'
sunxi# bootz 0x22000000 - 0x23000000

Generating a booting initrd

As of U-Boot v2016.01-rc1 and kernel-lpae 4.4.0-rc5, SD card does not yet seem to be working.

To boot a rootfs from USB (root=/dev/sda1 rw rootwait), add a config file on the device such as /etc/dracut.conf.d/90-optimus.conf:

add_drivers+=" phy-sun9i-usb sunxi"

The next time an initrd is generated (e.g., zypper install -f kernel-lpae), it will include those drivers.

See also