HCL:HiKey 960
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
Tumbleweed
|
JeOS image |
If the direct links above do not work for you, please check the general download directory for the images.
UEFI firmware update
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.
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.
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.
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
96Boards bug #692: Arrow keys not working in EFI boot menus or GRUB96Boards bug #693: SD based installation boot problems- 96Boards bug #694: USB/M.2 based installation boot problems - WONTFIX
96Boards bug #695: Kernel boot problems with DT- 96Boards bug #703: Kernel boot problems with MMC1
- Bug #1134788 (edk2-platforms + TF-A v2.1)
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:
- For wayland: mali_G71_r16p0-01rel0_linux_wayland_1.tar.gz
- For fbdev: mali-G71_r9p0-01rel0_linux_1fbdev.tar.gz
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
- With openSUSE Tumbleweed JeOS image (on 10/03/2022 with kernel 5.16), the following devices are NOT working:
- USB: not upstream yet. Patches sent upstream: https://lwn.net/Articles/786357/ and others available at https://git.linaro.org/people/john.stultz/android-dev.git/log/?h=dev/hikey960-mainline-WIP
- HDMI: not upstream yet. WIP patches available here: https://git.linaro.org/people/john.stultz/android-dev.git/log/?h=dev/hikey960-mainline-WIP
- Bug #1157029 HiKey960 overheats quickly under load - You may want to add a small fan to avoid thermal problems. Check temperature with:
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.