NameLast modifiedSizeLicense

Parent Directory Parent Directory
other MANIFEST 17-Jan-2019 09:23 453 open
other MD5SUMS 17-Jan-2019 09:23 270 open
other boot.img.xz 17-Jan-2019 09:23 7.5M open
application/json build_config.json 17-Jan-2019 09:23 580 open
other cache.img.xz 17-Jan-2019 09:23 728 open
text changelog.txt 17-Jan-2019 09:23 229.9K open
application/x-sh 17-Jan-2019 09:23 78 open
application/x-sh 17-Jan-2019 09:23 78 open
application/octet-stream fip.bin.xz 17-Jan-2019 09:23 943.7K open
application/json installed-files-vendor.json 17-Jan-2019 09:23 55.7K open
text installed-files-vendor.txt 17-Jan-2019 09:23 16.8K open
application/json installed-files.json 17-Jan-2019 09:23 879.9K open
text installed-files.txt 17-Jan-2019 09:23 275.2K open
other kernel_config 17-Jan-2019 09:23 133.6K open
application/octet-stream l-loader.bin.xz 17-Jan-2019 09:23 22.0K open
application/x-sh 17-Jan-2019 09:23 7.7K open
application/json module-info.json 17-Jan-2019 09:23 5.3M open
application/x-sh 17-Jan-2019 09:23 119 open
application/x-sh 17-Jan-2019 09:23 99 open
text pinned-manifest.xml 17-Jan-2019 09:23 125.2K open
other ramdisk.img 17-Jan-2019 09:23 1.5M open
text source-manifest.xml 17-Jan-2019 09:23 65.7K open
other system.img.xz 18-Jan-2019 00:19 340.0M open
other userdata.img.xz 17-Jan-2019 09:23 3.1M open
other vendor-4.4.img.xz 17-Jan-2019 09:23 4.8M open
other vendor.img.xz 17-Jan-2019 09:23 5.0M open

About the Reference Linaro Confectionary Release for HiKey (Multi-arch 64-bit)

This Reference Linaro Confectionary Release is the release of Android Pie 9.0
for 96boards HiKey board. It is based on the Pie android-9.0.0_r22 branch. This build is a
userdebug variant build, which contains multi-arch support allowing full use of the
64-bit ARMv8-A architecture, supports both 64-bit and 32-bit applications,
and with SELinux enabled.

The kernel used for this build is based on the AOSP version 4.14 common kernel,
which includes the ARM Mali drivers for 3D graphics acceleration support,
and OP-TEE support.

The userspace projects are built with AOSP Android clang-4691093
which is version 6.0.2 (based on LLVM 6.0.2svn),
for both 64bit and 32bit, and kernel is built with AOSP Android
clang-r346389b which is version 8.0.6 (based on LLVM 8.0.6svn).

To switch to permissive mode, pass “androidboot.selinux=permissive” as
the boot parameter in the bootargs configuration, or run
“setenforce 0” from command line with root user after booted.

The Android AOSP software provided in this release is functionally
tested with CTS version 9.0 R5 and VTS package generated from the
AOSP pie-vts-dev branch, the test results of both CTS and VTS are
shared with members. We also added some benchmark tests to observe the
performance trend in various fields.

Sources are also made available so you can build your own images
(see the Building from Source tab).

What is new

  • Android source base on Pie android-9.0.0_r22 version
  • CTS package based on version of Android 9.0 R5
  • Tested with VTS package based on pie-vts-dev
  • OP-TEE based on tag 3.3.0
  • All tests were run in LAVAv2 format
  • Enabled the Treble feature
  • Use 4.14 as the default kernel, fixed problems related to the use of 4.14 kernel
  • Enabled drm_hwcomposer hal
  • Dropped the usage of FIQ console feature
  • Enabled more basic system services features
  • HiKey PowerHAL is reworked to use power@1.1 interface
  • Enabled 64bit DRM HAL
  • Updated to mount userdata partition with nosuid and nodev flags


The use of HiKey software is subject to the terms of the HiKey:
End User License Agreement.


Subscribe to the important Linaro mailing lists and join our IRC
channels to stay on top of Linaro development.

  • Linaro Android Development ‘Mailing list’
  • Linaro Android IRC channel on at #linaro-android
  • Linaro Android ART IRC channel on at #linaro-art
  • Bug reports should be filed in ‘Bugzilla’ under “Linaro Android” product and “R-LCR-HIKEY” component.
    • You will need to login to your Linaro account. If you do not have an account or are having problems, email for help.
  • More general bug reports should be filed in Bugzilla against the individual packages that are affected.
  • Questions? ‘ask linaro’
  • Interested in commercial support? inquire at ‘Linaro Support’

OP-TEE Enablement

OP-TEE userspace projects

Project URL Version
optee_client 3.3.0
optee_test 3.3.0
optee_os 3.3.0

Firmware used for OP-TEE

Please use the firmware files from “here”: .

Patches for OP-TEE enablement

Gerrit ID/Commit ID Project Description
20090 device/linaro/hikey optee: integrate for optee components
18233 device/linaro/hikey optee: Enable opteed in the bootloader
18470 device/linaro/hikey bootloader/Makefile: use TOP_ROOT_ABS instead of ANDROID_BUILD_TOP
17728 device/linaro/hikey to build uefi files automatically when build android
20091 device/linaro/hikey init.common.rc & sepolicy: move OPTEE related file to vendor paritition
05a8316d2e5b45bd15a9646bf948ffa042f94327 kernel/linaro/hisilicon-4.14 hikey: Enable OPTEE in defconfig
18415 kernel/linaro/hisilicon-4.14 hikey_defconfig: enable dummy ION memory in kernel config
fabaadfddf7a3ca34769ec1814ea931d5e326ab0 kernel/linaro/hisilicon-4.14 [v4.16] tee: flexible shared memory pool creation
18413 kernel/linaro/hisilicon-4.14 [v4.16] tee: add register user memory
0987f080c0bb427354d8f0c95940d8912ab40707 kernel/linaro/hisilicon-4.14 [v4.16] tee: use reference counting for tee_context
28f2ad9c42306663c01a479cd23fa87668c890cb kernel/linaro/hisilicon-4.14 tee: new ioctl to a register tee_shm from a dmabuf file descriptor
229153c92b8fe18a8e12b473a0ff66e317755dfa kernel/linaro/hisilicon-4.14 [v4.16] tee: optee: Update protocol definitions
a2f3da632988d38c1e5355a28336fe1115afb288 kernel/linaro/hisilicon-4.14 [v4.16] tee: optee: store OP-TEE capabilities in private data
1af7f7907fd43456de448d115711561c3ad5cbbf kernel/linaro/hisilicon-4.14 staging/ion: add Allwinner ION “secure” heap
ffcd4cc22e27b81f1ebae6f2bf8e29664e723e21 kernel/linaro/hisilicon-4.14 ion: “unmapped” heap for secure data path
ee589e6a4688add86cd34cadd23267cbccf3f3c0 kernel/linaro/hisilicon-4.14 staging/ion: condition unmapped heap to supported architectures
16843e5f398a40e085a8cd20770af825b100fb1a kernel/linaro/hisilicon-4.14 staging/ion: ARM64 supports ION_UNMAPPED_HEAP
18405 kernel/linaro/hisilicon-4.14 staging:ion: add a no-map property to ion dmabuf attachment
3ed4ce4c37ef0800b5da18893212e6769e1dbd3e kernel/linaro/hisilicon-4.14 tee: optee: log message if dynamic shm is enabled
94c2f2e1cb08073cd688bd51638920b1cc6ad166 kernel/linaro/hisilicon-4.14 tee: fix unbalanced context refcount in register shm from fd

Android Patch Summary

There are patches developed by Linaro engineering teams were applied
to get Android booting to UI on the HiKey development platform.
These patches can be found on Linaro’s Android Git repositories via files:

Any patches can be contributed through the instructions described Here

Known Issues and Limitations

Known limitations

  • Graphics has occasional horizontal offset (color shifts sometimes) problem
  • QuadrantPro benchmark failed to run to complete with this build

Known issues

The following known issues are present in this release. Please contact if you wish to know more information about these issues or have access problems when attempting to view them.

Bug ID Bug title Bug summary
4094 HiKey-Pie: CtsAndroidAppTestCases
4086 HiKey-Pie: CtsAppTestCases
4089 HiKey-Pie: CtsAppTestCases
4215 HiKey-Pie: CtsAppTestCases
4206 HiKey-Pie: CtsAppTestCases
4207 HiKey-Pie: CtsAppTestCases
4093 HiKey-Pie: CtsLibcoreTestCases
4124 HiKey-Pie: CtsNativeHardwareTestCases android.hardware.nativehardware.cts.AHardwareBufferNativeTests#SingleLayer_ColorTest_GpuColorOutputAndSampledImage_R8G8B8_UNORM
4123 HiKey-Pie: CtsNativeHardwareTestCases android.hardware.nativehardware.cts.AHardwareBufferNativeTests#SingleLayer_ColorTest_GpuColorOutputCpuRead_R8G8B8_UNORM
4122 HiKey-Pie: CtsNativeHardwareTestCases android.hardware.nativehardware.cts.AHardwareBufferNativeTests#SingleLayer_ColorTest_GpuColorOutputIsRenderable_R8G8B8_UNORM
4121 HiKey-Pie: CtsNativeHardwareTestCases android.hardware.nativehardware.cts.AHardwareBufferNativeTests#SingleLayer_ColorTest_GpuSampledImageCanBeSampled_R8G8B8_UNORM
4236 HiKey-Pie: CtsPermissionTestCases android.permission.cts.DebuggableTest#testNoDebuggable
4235 HiKey-Pie: CtsPermissionTestCases android.permission.cts.FileSystemPermissionTest#testDataMountedNoSuidNoDev
4234 HiKey-Pie: CtsPermissionTestCases android.permission.cts.FileSystemPermissionTest#testDevPortSane
4181 HiKey-Pie: CtsSecurityTestCases
4125 HiKey-Pie: CtsSyncContentHostTestCases android.content.cts.InvalidSyncAuthoritiesHostTest#testInvalidEntriesClearedOnBoot
4239 HiKey-Pie: CtsSystemUiTestCases android.systemui.cts.LightBarTests#testNavigationBarDivider
4237 HiKey-Pie: CtsSystemUiTestCases android.systemui.cts.LightBarThemeTest#testNavigationBarDividerColor
4111 HiKey-Pie: CtsViewTestCases android.view.cts.DisplayRefreshRateTest#testRefreshRate
4105 HiKey-Pie: CtsViewTestCases android.view.cts.PixelCopyTest#testDialogProducer
4103 HiKey-Pie: CtsViewTestCases android.view.cts.SurfaceViewSyncTest#testEmptySurfaceView
4102 HiKey-Pie: CtsViewTestCases android.view.cts.SurfaceViewSyncTest#testSmallRect
4101 HiKey-Pie: CtsViewTestCases android.view.cts.SurfaceViewSyncTest#testSurfaceViewBigScale
4100 HiKey-Pie: CtsViewTestCases android.view.cts.SurfaceViewSyncTest#testSurfaceViewSmallScale
4099 HiKey-Pie: CtsViewTestCases android.view.cts.SurfaceViewSyncTest#testVideoSurfaceViewCornerCoverage
4098 HiKey-Pie: CtsViewTestCases android.view.cts.SurfaceViewSyncTest#testVideoSurfaceViewEdgeCoverage
4097 HiKey-Pie: CtsViewTestCases android.view.cts.SurfaceViewSyncTest#testVideoSurfaceViewRotated
4096 HiKey-Pie: CtsViewTestCases android.view.cts.SurfaceViewSyncTest#testVideoSurfaceViewTranslate
4143 HiKey-Pie: CtsWebkitTestCases android.webkit.cts.WebChromeClientTest#testOnJsBeforeUnloadIsCalled failed only with arm64-v8a(intermittent)
4208 HiKey-Pie: CtsWebkitTestCases android.webkit.cts.WebViewTest#testRequestImageRef(intermittent)
4142 HiKey-Pie: CtsWidgetTestCases android.widget.cts.ExpandableListViewWithHeadersTest#testContextMenus(intermittent)
4141 HiKey-Pie: CtsWidgetTestCases android.widget.cts.ToolbarTest#testMenuOverflowSubmenu(intermittent)
4139 HiKey-Pie: media-codecs was not integrated into the build
4138 HiKey-Pie: optee-xtest failed to run with 100% pass rate on lava
4140 HiKey-Pie: piglit-gles2 piglit-gles3 piglit-glslparser piglit-shader-runner tests are not integrated into the builds
4137 HiKey-Pie: quadrantpro failed to run to complete
4204 HiKey-Pie: vts-hal VtsHalGnssV1_0Target#GnssHalTest.GetAllExtensions(default)
4203 HiKey-Pie: vts-hal VtsHalGnssV1_0Target#GnssHalTest.GetLocation(default)
4202 HiKey-Pie: vts-hal VtsHalGnssV1_0Target#GnssHalTest.InjectDelete(default)
4201 HiKey-Pie: vts-hal VtsHalGnssV1_0Target#GnssHalTest.MeasurementCapabilites(default)
4200 HiKey-Pie: vts-hal VtsHalGnssV1_0Target#GnssHalTest.SetCallbackCapabilitiesCleanup(default)
4119 HiKey-Pie: vts-performance FmqPerformanceTest#testRunBenchmark32Bit
4120 HiKey-Pie: vts-performance FmqPerformanceTest#testRunBenchmark64Bit


Please download the uefi binaries from here
and flash them into your HiKey board according to the instructions here

If this is the first time you use Hikey board, please reference here for the initial setup instructions:

Get artifacts

Click on each link to download:

  • l-loader.bin.xz (for OP-TEE support)
  • fip.bin.xz (for OP-TEE support))
  • boot.img.xz
  • system.img.xz
  • vendor.img.xz
  • userdata.img.xz(for 8G board)

Uncompress the downloaded .xz files using your operating system file manager,
or with the following command for each file:

$ xz -d [filename].xz

Flash firmware files for OP-TEE support

If you need OP-TEE feature work with this release, the firmware files
l-loader.bin and fip.bin are required to be flashed.
To flash the l-loader.bin and fip.bin files, you need to boot into the recovery
mode with the Link 1-2 and Link 3-4 of the Jumper 15 closed, and Link 5-6 opened.
And run the from here as following:

sudo python ./ --img1="l-loader.bin" -d "/dev/ttyUSBx"
sleep 3
fastboot flash fastboot fip.bin

For details you could check the README file in AOSP here

You could flash the AOSP Android images here as well with following instructions:

$ fastboot flash boot boot.img
$ fastboot flash system system.img
$ fastboot flash userdata userdata.img
$ fastboot flash vendor vendor.img

Or flash the image files with following instructions.

Boot HiKey board to fastboot mode

Connect the Link 1-2 and Link 5-6 of the Jumper15 on your Hikey board,
Connect a standard microUSB to USB connector between the HiKey microUSB port
and your Linux PC. Connect the HiKey power supply to the board, and run
following command to check if the board is in fastboot mode:

$ sudo fastboot devices
0123456789abcdef fastboot

Also if you are in Android mode, you could switch to fastboot mode with command

$ adb reboot bootloader

Flash Android images

Flash the uncompressed files into the HiKey board under fastboot mode with
following commands:

$ fastboot flash boot boot.img
$ fastboot flash system system.img
$ fastboot flash userdata userdata.img
$ fastboot flash vendor vendor.img

Boot HiKey board with Android images

Connect the link 1-2, remove the link 3-4 and link 5-6 of the Jumper15 on your Hikey board,
connect the microUSB to you host pc, and plug in the power supply cable,
this will make your board boot the flashed android images by default.

You can use following command to check if the adb connection is connected:

$ adb devices
List of devices attached
0123456789  device

Linaro Android Source Code

Download the Android building script for this build
from the list of artifacts listed above, and run it.
This script will help to download the entire source code for both Android and
the kernel and attempt to build it.

Most commonly used options for

$ ./ -h #To print the script usage
$ ./ -t #To build from the tip of the branch without overlay
$ ./ -t -u <url-aosp-mirror-manifest> #As -t, but repo sync from local mirror
$ ./ -m <pinned_manifest> #To reproduce an exact build from pinned manifest
$ ./ -m <pinned_manifest> -u <url-aosp-mirror-manifest> #As -m, but repo sync from local mirror

The pinned manifest(pinned-manifest.xml(?) and source manifest(source-manifest.xml) can be found from the list of artifacts

Compiling Linaro Android RootFS+Kernel

The following simple steps download, install and compile a complete Linaro Android distribution

  • Download and install Ubuntu 14.04 64 bit or newer (download)
  • Download the Android building script for this build from the list of artifacts
  • Run the script downloaded, and answer the questions when promopted

These steps will generate the userdata.img for 8GB eMMC version by default,
4GB eMMc version HiKey board is not supported.

Build from the tip of the source:

chmod a+x
./ -t or  ./ -t -u <url-aosp-mirror-manifest>

Or reproduce the exactly the same as this buid:

chmod a+x
./ -m pinned-manifest.xml or ./ -m pinned-manifest.xml -u <url-aosp-mirror-manifest>

Flash firmware files

To make the OP-TEE feature work correctly, we need to flash the generated firmware
files fip.bin and l-loader.bin,

To flash firmware files, we need to boot the board into the recovery mode as described
in the README file under device/linaro/hikey/installer/hikey/README, or could check
from here as well

After the building finished successfully, please boot the HiKey board to recovery mode,
and change directory to device/linaro/hikey/installer/hikey,
you could then run ./ directly from there since the newly generated
fip.bin and l-loader.bin files had already been copied there.

./ /dev/ttyUSBX

Installing Android to your HiKey Board

Following commands will flash the images into your HiKey board via the fastboot command.

    $ sudo fastboot flash boot out/target/product/hikey/boot.img
    $ sudo fastboot flash system out/target/product/hikey/system.img
    $ sudo fastboot flash userdata out/target/product/hikey/userdata.img
    $ sudo fastboot flash vendor out/target/product/hikey/vendor.img