2016-05-31

Pine A64 is one of the development boards with the best cost/performance ratio, as it sells as low as $15 + shipping. I received Pine A64+ board with 2GB RAM at the end of last month, and decided to start playing with Android, as Linux distributions such as Longsleep Ubuntu appear to require a little more work. So in this post, I’ll report my experience with installing and running Android 5.1 on the board, and share some Android benchmark results.

Pine A64 Board Pictures

You’ll receive the board in cardboard package with Pine64 branding.



You can check which version of the board you’ve been sent on the side of the package: PA64512 (512 MB RAM), PA641GB (1GB RAM), or PA642GB (2GB RAM).


The top of the board has been photographed often but here it is again. I’ve been sent the 2GB version without wireless module.



Click to Enlarge

The bottom of the board has two RAM chips, and not much else.

Click to Enlarge

I was quite surprised by the size, as it’s quite bigger than I expected.

Click to Enlarge

From top left to bottom right: Raspberry Pi 2, Raspberry Pi Zero, Orange Pi One, ODROID-XU3, and Pine A64

Installing and Running Android 5.1 on Pine A64 Board

The list of Android and Linux firmware images can be found on Pine64 Wiki. The latest version of Android 5.1 has been released on May 5 2016 with SD card images for 8, 16, 32, and 64GB capacity, as well as Phoenix Card image with need to be installed with Windows or Linux tools. The only advantage of the Phoenix Card image is that it will not waste any bytes on your micro SD card, but since it should be negligible, I went ahead with the 32GB SD card image version:

1

wget http://files.pine64.org/os/android/android-ver5.1.1-20160505-pine64-32GB.zip

I did so in a Ubuntu 16.04 computer, but other Linux distributions will have similar instructions, and in Windows you can either follow the instructions below with Windows for Linux subsystem or instead used Win32DiskImager program.

Once you’ve insert your SD card inside your computer (mine was a Toshiba class 10 32GB micro SD), check the device name with lsblk, which should be /dev/sdX or /dev/mmcblkY, with X some letter, and Y some numbers. I’ll call it <sd_device> below. First unmount partitions.

1

sudo umount <sd_device>*

Normally, I’d use one command to extract, and once command to flash the image to the SD card, but since I was in a TV stick with 18GB free storage, I instead use a one liner to uncompress the 1.1 GB firmware and flash it to the micro SD card:

apt install pv

unzip -p android-ver5.1.1-20160505-pine64-32GB.zip | pv | sudo dd of=<sd_device> bs=16M

sync

Now remove the micro SD card from your computer, insert it into the micro SD slot on Pine A64, connect Ethernet, a USB mouse and keyboard, and the power. My first board (and an early Android image) would not boot, so I connected the serial console to the EULER header: GND to pin 34, Tx to pin 30 and Rx to pin 29.

I ran minicom configured with /dev/ttyUSB0 115200 8N1 to find out what was going on:

boot0 version : 4.0.0

set pll start

set pll end

rtc[0] value = 0x00000000

rtc[1] value = 0x00000000

rtc[2] value = 0x00000000

rtc[3] value = 0x00000000

rtc[4] value = 0x00000000

rtc[5] value = 0x00000000

DRAM driver version: V1.1

rsb_send_initseq: rsb clk 400Khz -> 3Mhz

PMU: AXP81X

ddr voltage = 1500 mv

DRAM Type = 3 (2:DDR2,3:DDR3,6:LPDDR2,7:LPDDR3)

DRAM clk = 672 MHz

DRAM zq value: 003b3bdd

DRAM error status 0

DRAM init error!

initializing SDRAM Fail.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

HELLO! BOOT0 is starting!

boot0 commit : 2fe7b0a9fb512fae2996ec1a2ba89d535e1f3c4d

boot0 version : 4.0.0

set pll start

set pll end

rtc[0] value = 0x00000000

rtc[1] value = 0x00000000

rtc[2] value = 0x00000000

rtc[3] value = 0x00000000

rtc[4] value = 0x00000000

rtc[5] value = 0x00000000

DRAM driver version: V1.1

rsb_send_initseq: rsb clk 400Khz -&gt; 3Mhz

PMU: AXP81X

ddr voltage = 1500 mv

DRAM Type = 3 (2:DDR2,3:DDR3,6:LPDDR2,7:LPDDR3)

DRAM clk = 672 MHz

DRAM zq value: 003b3bdd

DRAM error status 0

DRAM init error!

initializing SDRAM Fail.

The RAM clearly failed to initialize, so I reported this on the forum, and others had the same issue. I was sent another board, which booted just fine… sort of. The bootloader logo came very quickly, but then nothing happened, so I connect the serial console gain (I think a USB to TTL board is a must with Pine A64 at this stage of development), and I noticed a lot of erase operation on the micro SD card:

1

2

3

4

5

6

7

8

[  349.994705] sunxi-mmc 1c0f000.sdmmc: *All wait r1 rdy 46 ms*

[  350.001104] mmc0:mmc_do_erase: erase from 41168912 to 41426943 arg 0x00000000

[  350.723766] init: untracked pid 23550 killed by signal 9

[  350.909829] sunxi-mmc 1c0f000.sdmmc: *All wait r1 rdy 46 ms*

[  350.917277] mmc0:mmc_do_erase: erase from 41431048 to 41689087 arg 0x00000000

[  351.805289] sunxi-mmc 1c0f000.sdmmc: *All wait r1 rdy 45 ms*

[  351.811725] mmc0:mmc_do_erase: erase from 41705472 to 41951231 arg 0x00000000

[  351.893824] sunxi-mmc 1c0f000.sdmmc: *All wait r1 rdy 4 ms*

After 5 minutes it became quiet, and I though briefly the Android home screen, but it quickly fell back to another boot logo, and got stuck there. So I rebooted the board, and I got to the stock launcher in a little over one minute.

Click for Original Size (1920×1080)

The Android firmware appears to be based on the smartphone version instead of the table version used in most Android TV boxes. A few apps are pre-installed such as the Google Play Store and ES File Explorer.

I could login to the Play Store, but soon I found that network connectivity did not seem to work well at all, and although I could browser app, the system was unable to download any, and later one I got an error message about network timeout while checking out apps. Internet connectivity issues do happen, and it’s seldom a problem with the board, so I went to ES File Explorer to install the apk manually through my SAMBA share, but networking was also unreliable on my LAN, which is not normal at all. The symptom was very similar to early Rockchip RK3288 TV boxes with Gigabit Ethernet, the link would show a Gigabit Ethernet connection, but the connection itself was unreliable, So I disconnected the board from my Gigabit switch (D-Link DGS-1005A), and instead connected it a 10/100M switch, and everything started to work as expected, so I installed apps from Google Play. The good news is that a firmware update might be able to fix the Gigabit Ethernet issue, if the root cause is the same as on RK3288.

My 32GB SD card has 26.27 GB usable by the user on a single unified partition.

Pine A64 Android Benchmarks

Let’s start with CPU-Z first to find a little more about the system.

Click to Enlarge

Allwiner A64 processor has 4 Cortex A53 cores clocked at 480 MHz to 1.34 GHz with a Mali-400 MP2 GPU. The model is PINE A64 (tulip_chiphd), and the hardware 50iw1p1. The app detected 1987 MB RAM for the system with 26.27 GB for storage, and the resolution is set to 1920×1080.  The system runs Android 5.1.1 on top of a 64-bit Linux 3.10.35 kernel.

We should not expect a Cortex A53 @ ~1.4 Ghz with a weak Mali-400MP2 GPU to get an amazing score, and the board got 24,568 points in Antutu 6.1.4, which is barely above the 21,500 points I got with Rockchip RK3229 quad core Cortex A7 based Zidoo X1 II TV box, and quite below the 35,000+ points in Amlogic S905 or Rockchip RK3368 based hardware platforms.

Vellamo pretty much confirm the performance with 1,292 points for multicore, 648 for Metal, and 1,610 for browser benchmarks, which compares to respectively 1,572, 763 and 2,002 points in K1 Plus TV box powered by Amlogic S905 quad core Cortex A53 @ 2.0 GHz.

Click to Enlarge

3DMark Ice Storm Unlimited was used to get a score for the GPU, and 1,701 points is on the low side, but expected.

Finally, I tested the Ethernet connection using iperf for Android performing a full duplex transfer:

1

iperf -t 60 -c <server_ip> -d

The results connected to my Ethernet switch are just fine:

1

2

3

4

5

6

7

Client connecting to 192.168.0.110, TCP port 5001

TCP window size:  136 KByte (default)

––––––––––––––––––––––––––––––

[  6] local 192.168.0.104 port 33317 connected with 192.168.0.110 port 5001

[ ID] Interval       Transfer     Bandwidth

[  6]  0.0-60.0 sec   654 MBytes  91.5 Mbits/sec

[  4]  0.0-60.1 sec   656 MBytes  91.5 Mbits/sec

But switching to my Gigabit Ethernet switch confirm the problem I had earlier as the transfer only properly occurred in one direction instead of both:

1

2

3

4

5

6

Client connecting to 192.168.0.110, TCP port 5001

TCP window size: 85.0 KByte (default)

––––––––––––––––––––––––––––––

[  6] local 192.168.0.104 port 33464 connected with 192.168.0.110 port 5001

[  5]  0.0-60.0 sec  3.55 GBytes   508 Mbits/sec

[  6]  0.0-169.1 sec   291 KBytes  14.1 Kbits/sec

Overall performance is as expected, expect for Gigabit Ethernet, with only Fast Ethernet working reliably with my setup.

If you are interested in the board, you can purchase it on Pine64 online store for $15 (512MB RAM), $19 (1 GB RAM) or $29 (2GB) + shipping. Please note that the 512 MB version is only suitable for Linux distributions, and Android requires at least 1GB RAM.

Tweet Pine A64 is one of the development boards with the best cost/performance ratio, as it sells as low as $15 + shipping. I received Pine A64+ board with 2GB…

Show more