Pine64

The Pine64 is a cost-optimized board sporting ARMv8 (64-bit ARM) capable cores.

= Identification = There is a pine cone like logo next to the uSD slot, also it says "Pine64" under the logo. Also on the SoC there is a quite prominent "A64" print.

On the back of the device, the following is printed: Designed in Silicon Valley, California. Built in Silicon Delta, China.

The PCB has the following silkscreened on it: A64-DB-Rev B 2015-12-17

In android, under Settings->About Tablet, you will find:
 * Model Number: Pine A64
 * Build Number: tulip_t1-eng 5.1.1 LVY4BE 20151210 test-keys

= Sunxi support =

Current status
Boots recent kernel (4.4) with some patches and basic support: SMP, UART, MMC (uSD card), RTC, GPIO (and clocks, timer, pinctrl, of course). At the moment uses the firmware from the Android image, which requires the kernel (and if needed the initrd) to be packaged into an Android kernel image and dd'ed to an Android partition on the SD card. Booted Ubuntu-Core 14.04-3 AArch64 from an SD partition successfully.

BSP
Allwinner's BSP contains an arm64 Linux kernel based on Linaro's LSK-3.10.65 (includes Linaro and Android patches). It has some nasty patches on top which require the kernel to be entered in Aarch64 EL3 mode. This violates the Linux arm64 booting protocol and prevents upstream kernels to be booted with the stock Allwinner firmware so far.

Manual build
You can build things for yourself by following our Manual build howto and by choosing from the configurations available below.

Sunxi/Legacy U-Boot
The U-Boot tree in the BSP package (using a sun50iw1p1 target) does not compile, also the port in there is only for 32-bit. To boot 64-bit kernels, they warm-reset to 64-bit just before entering the kernel, which leads to the kernel being entered in the EL3 exception level, which is and will probably never be supported mainline.

Mainline U-Boot
No support yet.

Sunxi/Legacy Kernel
Use the  file.

Mainline kernel
No support yet, but being worked on.

= Tips, Tricks, Caveats =

Boot sequence
The A64 SoC is wired to come out of reset in 32-bit monitor mode. As other Allwinner devices, the A64 SoC starts executing BROM code (mapped at address 0), which is consequently ARM32 code. If the code does not detect a FEL condition, it will load 32KB from sector 16 (8 KByte) of the microSD card to SRAM and will execute this. At least the first instructions of this code need to be still 32-bit ARM code.

The Allwinner firmware continues in 32-bit, with U-Boot being 32-bit also. Only just before it starts the kernel, it does a RMR write to reset the SoC in AArch64 execution state and starts the kernel by putting its load address in the RVBAR register.

FEL mode
The button triggers  FEL mode.

= Serial port / UART =



The board connects 4 of the SoCs UART to easily accessible header pins. There is UART2 on the RPi connector, also UART3 and UART4 on the Euler connector. UART0 is the main UART used by Allwinner's firmware for boot and debug messages and is accessible on pins 29 (TXD) and 30 (RXD) on the Euler connector (this is not mentioned in the official connector description).

All of the UARTs use 3.3V voltage levels. Look at UART howto for further instructions.

= Pictures =

= Also known as =

= See also =