HCL:HiKey 960

Jump to: navigation, search

The LeMaker and Archermind HiKey 960 are single-board computers in 96Boards Consumer Edition form factor.

Technical data

  • Hisilicon Kirin 960 SoC
    • 4x Arm Cortex-A53 @ 1.8 GHz
    • 4x Arm Cortex-A73 @ 2.4 GHz
  • 3 / 4 GB RAM
  • 32 GB eMMC
  • Micro SD
  • 2x USB 3.0 host, 1x USB 3.1 Type-C OTG
  • PCIe M.2 Key M
  • HDMI
  • TI WL18MODGI Wifi module
  • 96Boards Consumer Edition compliant 40-pin low-speed expansion connector
  • 96Boards Consumer Edition compliant high-speed expansion connector

Installation: Writing a disk image to the SD card

JeOS image

If the direct links above do not work for you, please check the general download directory for the images.

UEFI firmware update

The Kirin 960's Cortex-A73 cores are affected by the Spectre vulnerabilities and need firmware updates as described below, cf. Bug #1074741.

You also need to update the UEFI firmware to be able to boot from SD card out of the box.

You can either flash 96boards firmware or the firmware built by openSUSE.

96boards firmware

To flash latest 96boards firmware, please follow the HiKey 960 recovery page.

Installation of openSUSE UEFI packages

Tianocore EDK2

Extract recovery.bin and l-loader.bin from l-loader-hikey960 package and fip.bin from arm-trusted-firmware-hikey960 package.

$ cd tools-images-hikey960

Copy file config to config_opensuse and modify the last line to point to our recovery.bin:

./hisi-sec_usb_xloader.img 0x00020000
./hisi-sec_uce_boot.img 0x6A908000
../recovery.bin 0x1AC00000

Prepare a serial console - if you connect the Seeed 96Boards UART adapter board to your host, you should get a /dev/ttyUSBx device that you can access with screen or another tool of your choice (minicom is discouraged). For other adapters the device name might vary (e.g., ttyACMx).

Connect a suitable USB 3.1 Type-C cable (e.g., to USB 3.0 Type-A) between HiKey 960 board and your host.

Set DIP switches "Boot mode" to "ON" and "Auto power" to "ON", then power on the board.
You will not see any serial output, but a new /dev/ttyUSBy device should appear.

# ./hikey_idt -p /dev/ttyUSBy -c config_opensuse

Once you see on the serial console a "." prompt from the UEFI firmware, press f to enter the Android fastboot app in order to flash the new firmware.

Warning: The following command overwrites the eMMC partition table - back up your data before!
$ fastboot flash ptable ../ptable-linux-32g.img
$ fastboot flash xloader hisi-sec_xloader.img
$ fastboot flash fastboot ../l-loader.bin
$ fastboot flash fip ../fip.bin

Remember to return the "Boot mode" DIP switch to its default position of off before you do fastboot reboot or a reset.

Known EDK2 issues

Enable Mali GPU G71

Mesa/Panfrost does not support Mali G71 GPU yet. So, you need to use downstream solution.

Downstream kernel driver

Install the downstream driver mali-bifrost-kmp-default, provided by ARM, from devel:ARM:Factory:Contrib:Mali project. See ARM_Mali_GPU page for details.

If it is loaded properly, dmesg will show:

mali_kbase: loading out-of-tree module taints kernel.
mali_kbase: module verification failed: signature and/or required key missing - tainting kernel
mali e82c0000.mali: GPU identified as 0x0 arch 6.0.10 r0p0 status 2
mali e82c0000.mali: No memory group manager is configured
mali e82c0000.mali: Probed as mali0

And cat /sys/devices/platform/e82c0000.mali/gpuinfo will show:

Mali-G71 8 cores r0p0 0x60A0

DTB provided by UEFI has already the mali node. You can check it with:

sudo dtc -I fs /proc/device-tree | grep mali

If this is not the case, you need to add the mali node as done here: https://git.linaro.org/people/manivannan.sadhasivam/hikey.git/commit/?id=a20633b159f885bc8a62234831e9b7a0151a151b

Downstream user-space libraries

You also need downstream user-space libraries:

You can copy libraries from tar archives downloaded above from lib64/* to /usr/lib64/

Be warned that it may overwrite libraries installed from RPM packages.

Enable OpenCL

See ARM_Mali_GPU#Enable_OpenCL for details.

Known issues

cat /sys/devices/virtual/thermal/thermal_zone0/temp
  • Bug #1080449 (Hi6421 PMU)
  • Bluetooth requires the following firmware: TIInit_11.8.32.bts to be downloaded and copied to /lib/firmware/ti-connectivity/ as it is not yet in kernel-firmware-bluetooth package
  • By default, device tree from UEFI is used. If you want to use the dtb from the openSUSE rootfs, you need to add devicetree /boot/dtb/hisilicon/hi3660-hikey960.dtb on grub menu.

See also