HiKey

Summary
HiKey, also known as HiKey 960, is an ARM development board built around the HiSilicon Kirin 960 SoC. It combines an octa-core ARM Cortex processor, 4 x A73 plus 4 x A53, with a Mali-G71 MP8 GPU and 3GB of LPDDR4 RAM. The board is used for Linux kernel development, Android AOSP work, AI and ML prototyping, and embedded systems testing. This page covers the hardware layout, setup steps, and the checks that usually save time when first boot or a later rebuild goes wrong.
When a new image is going onto the board, or the hardware has been sitting idle for a while, sort out power, storage, and console access first. Those are the faults that most often turn an ordinary bring-up into a long evening.
Who this is for
This page suits new HiKey owners, kernel developers validating ARM64 builds, Android AOSP developers who want reference hardware, ML researchers testing edge AI workloads, and anyone who needs a repeatable first-boot checklist before chasing kernel or driver bugs.
What you'll do
Start with the board itself: the Kirin 960 SoC architecture, memory layout, and storage options. Then pick a suitable Linux or Android image from the downloads hub, check the file integrity, and flash it to eMMC or microSD with fastboot or dd. Once the board is powered, keep the setup minimal, bring up serial UART or SSH, and verify network, storage, and services before changing anything. Update under supervision, reboot, and check the system again. The last step is usually the most revealing. It is also where power delivery, eMMC detection, and USB-C negotiation problems show up.
HiKey hardware overview
Key specifications
- SoC: HiSilicon Kirin 960 (16nm FinFET)
- CPU: Octa-core (4' ARM Cortex-A73 @ 2.4GHz + 4' ARM Cortex-A53 @ 1.8GHz) big.LITTLE architecture
- GPU: ARM Mali-G71 MP8 @ 900MHz (supports OpenGL ES 3.2, Vulkan 1.0)
- ISP: Dual 14-bit ISP for camera processing
- Memory: 3GB LPDDR4 RAM @ 1866MHz (dual-channel)
- Storage: 32GB UFS 2.1 onboard eMMC (some variants); supports microSD card boot
- Connectivity:
- Gigabit Ethernet (via USB 3.0 adapter or onboard depending on revision)
- WiFi 802.11ac dual-band (2.4GHz/5GHz) via add-on module
- Bluetooth 4.1
- USB: 1' USB 3.0 Type-A host, 1' USB 3.0 Type-C OTG (power + data + fastboot)
- Display: HDMI 1.4 output (up to 1080p60), DSI connector for LCD panels
- Expansion: 40-pin low-speed expansion header (GPIO, I2C, SPI, UART), 60-pin high-speed expansion (MIPI CSI-2 for cameras, PCIe M.2)
- Power: USB-C Power Delivery (requires 12V 2A or 5V 3A capable adapter)
Common use cases
- Linux kernel development: ARM64 kernel testing, device tree work, driver development for Mali GPU, UFS storage, or custom peripherals
- Android AOSP: Reference platform for Android development on ARM64 big.LITTLE architecture
- AI/ML edge computing: ARM Compute Library, TensorFlow Lite, ONNX Runtime testing on Mali GPU with OpenCL
- 96Boards ecosystem: Compatible with 96Boards CE (Consumer Edition) specification for standardised expansion boards
- Multimedia processing: Hardware-accelerated video decode (H.264/H.265), camera ISP development
Board layout and connectors
- Power input: USB-C connector (requires PD-capable charger or 5V 3A minimum)
- Serial console: 40-pin expansion header pins (UART0: TX=pin 11, RX=pin 13, GND=pin 1) at 1.8V logic level (requires level shifter to 3.3V/5V for standard USB-TTL adapters)
- Boot mode switches: 4-position DIP switch for boot mode selection (Auto boot, Fastboot, Recovery)
- Reset button: Hardware reset (does not affect boot mode switches)
- Storage: microSD card slot (boot or data), onboard eMMC (primary boot source)
Power requirements and USB-C notes
HiKey needs USB-C Power Delivery negotiation to behave reliably. If the supply is marginal, the board usually does not fail in one tidy way. It may refuse to power on, reset at random, miss the eMMC, corrupt writes, disconnect USB devices, or throttle the CPU under load.
Recommended power supplies:
- USB-C PD adapter 12V 2A (24W minimum)
- Alternative: 5V 3A USB-C adapter (verify board accepts 5V; some revisions require 12V PD)
- Cable: USB-C to USB-C rated for 3A+ (avoid thin/long cables causing voltage drop)
Testing power delivery:
# Check if system detects undervoltage (if kernel supports):
dmesg | grep -i voltage
dmesg | grep -i power
# Monitor CPU throttling:
watch -n1 cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
Boot modes and DIP switch settings
HiKey uses a 4-position DIP switch to control boot behaviour.
- Auto boot mode (normal operation): Switch 1=ON, 2=OFF, 3=OFF, 4=OFF ' boots from eMMC or SD card automatically
- Fastboot mode (flashing): Switch 1=OFF, 2=OFF, 3=ON, 4=OFF ' enters fastboot for flashing images via USB-C
- Recovery mode: Switch 1=OFF, 2=ON, 3=OFF, 4=OFF ' boots recovery image if available
Important: Power cycle (unplug/replug USB-C) required after changing DIP switches for new settings to take effect.
Quick checklist
- USB-C PD-capable power supply (12V 2A or 5V 3A) and high-quality USB-C cable (3A rated).
- Known-good storage: microSD card (Class 10 or UHS-I) or use onboard eMMC.
- Ethernet adapter or WiFi module configured (Ethernet recommended for first boot).
- Optional but recommended: USB-TTL serial adapter with 1.8V level shifter for UART console access.
- Verified image file (checksum matches published SHA256).
- Fastboot tools installed on host PC (for eMMC flashing):
sudo apt install fastboot(Linux) or Android Platform Tools (Windows/macOS). - Ability to capture "known-good" baseline boot report (kernel logs, service status).
Steps / guidance
- Get the correct image and verify integrity:
Download the HiKey-specific image from HiKey downloads page.
sha256sum hikey-debian-*.img.xz # Compare with published checksum xz -d hikey-debian-*.img.xz sha256sum hikey-debian-*.img - Flash to eMMC using fastboot (recommended):
- Set DIP switches to Fastboot mode (1=OFF, 2=OFF, 3=ON, 4=OFF)
- Connect USB-C cable to host PC
- Power on HiKey (connect USB-C power)
- Verify fastboot connection:
fastboot devices - Flash image partitions (adjust commands for your image):
fastboot flash boot boot.img fastboot flash system system.img fastboot flash userdata userdata.img # Or flash full image: fastboot flash all hikey-debian-*.img fastboot reboot
- Alternative: Flash to microSD card:
# Linux: sudo dd if=hikey-debian-*.img of=/dev/sdX bs=4M status=progress conv=fsync sync # Windows: use Balena Etcher or Rufus # Verify partitions: lsblk blkid /dev/sdX* - First boot with minimal peripherals:
- Set DIP switches to Auto boot mode (1=ON, 2=OFF, 3=OFF, 4=OFF)
- Connect Ethernet (via USB adapter if needed)
- Connect HDMI display or serial console
- Power on and wait for boot (first boot may take 2-3 minutes)
- Establish access and confirm identity:
uname -a # Should show aarch64 and HiKey device tree cat /proc/cpuinfo | grep -E "processor|Hardware" # Verify octa-core CPU free -h # Confirm 3GB RAM visible (may show ~2.7-2.9GB after kernel reserves) lsblk # Check eMMC and SD card detection ip a # Verify network interface has IP address - Capture baseline boot report (save this):
systemctl --failed journalctl -b -p err | tail -n 120 dmesg | tail -n 100 # GPU/display check: dmesg | grep -i mali dmesg | grep -i drm # USB check: lsusb # Storage performance check: sudo hdparm -t /dev/mmcblk0Keep this output for comparison after kernel updates or configuration changes.
- Update under supervision and reboot:
sudo apt update sudo apt upgrade -y # Keep serial/HDMI console visible during update sudo reboot # After reboot, repeat verification checks systemctl --failed journalctl -b -p err | tail -n 50
Verification checks
Run these after the first boot and again after any kernel, storage, or bootloader change:
ip a
ip r
lsblk
free -h
systemctl --failed
journalctl -b -p err | tail -n 120
dmesg | tail -n 50
dmesg | grep -i error
Troubleshooting
- Board won't power on: verify USB-C power supply supports PD or provides 5V 3A minimum; try a different USB-C cable, since a poor cable is a very common failure point; check DIP switch settings do not block boot.
- No boot / stuck at bootloader: capture serial console output (UART on 40-pin header); verify the image matches HiKey 960, not HiKey 620 or another variant; reflash eMMC using fastboot; try booting from microSD card instead.
- eMMC not detected in fastboot mode: power cycle the board after setting DIP switches; try a different USB-C port on the host PC, with USB 3.0 preferred; verify
fastboot devicesshows the device before flashing. - Boots but no network: check
ip afor interface names, which may be eth0, enp*, or wlan0; if using a USB Ethernet adapter, checklsusbanddmesgfor detection; use Ethernet rather than WiFi for first boot validation. - Random resets or freezes: on HiKey this is almost always power-related; upgrade to a higher-wattage USB-C PD charger; use a shorter, thicker USB-C cable; check
dmesg | grep -i voltagefor undervoltage warnings. - Mali GPU not working: check
dmesg | grep malifor driver loading; verify the kernel includes the Mali driver, since the proprietary blob is required for full 3D; some distributions ship only the open-source Panfrost driver, which has limited support for Mali-G71. - USB devices not detected: verify enough power is available, and add a powered USB hub if several devices are attached; check
dmesgimmediately after plugging the device in; the USB 3.0 port may behave better than the USB-C OTG port. - HDMI no output: try a different HDMI cable and monitor; check
dmesg | grep drmfor display errors; some images default to serial console and disable HDMI, so check the kernel command line in the bootloader. - Services failing after update: use
systemctl --failedandjournalctl -b -p errto identify failures; if the system is unstable after update, revert the kernel via fastboot or boot from a backup SD card.
Common mistakes
- Skipping checksum verification and then debugging a corrupted flash.
- Using an inadequate power supply, such as a phone charger or an old laptop USB port, and blaming software for a power fault.
- Forgetting to power cycle after changing DIP switches, which means the new mode does not apply.
- Trying WiFi on the first boot with an unknown dongle instead of Ethernet.
- Testing with a marginal USB-C cable and reading the symptoms as kernel bugs.
- Making several changes at once - kernel, device tree, userspace, and peripherals.
- Not keeping a serial recovery path when doing bootloader or kernel work.
- Connecting a 3.3V or 5V UART adapter directly to the 1.8V serial pins without a level shifter, which can damage the board.
Frequently asked questions
- What's the difference between HiKey 960 and HiKey 620?
- HiKey 960 uses Kirin 960 (octa-core A73/A53, Mali-G71, 3GB RAM). HiKey 620 uses Kirin 620 (octa-core A53, Mali-450, 2GB RAM). Images are not interchangeable. Verify your board model before downloading images.
- Which Linux distributions support HiKey?
- Debian (official 96Boards images), Ubuntu, Fedora, and OpenEmbedded/Yocto builds available. AOSP Android also supported. Check downloads page for verified images.
- Can I boot from SD card instead of eMMC?
- Yes. Flash image to microSD card, insert into slot, ensure DIP switches set to Auto boot. Boot priority: eMMC first, then SD card. To force SD boot, erase eMMC bootloader or remove eMMC if socketed.
- Does Mali GPU have open-source drivers?
- Partial. Panfrost open-source driver supports basic Mali-G71 functionality (OpenGL ES 3.1). Full 3D acceleration and Vulkan require proprietary Mali binary blob from ARM. Most distributions ship Panfrost by default.
- What serial console settings should I use?
- 115200 baud, 8N1, no flow control. CRITICAL: HiKey UART is 1.8V logic level. Standard 3.3V or 5V USB-TTL adapters will damage the board. Use a level shifter (1.8V ? 3.3V) or dedicated 1.8V UART adapter.
- How do I enter fastboot mode for recovery?
- Set DIP switches: 1=OFF, 2=OFF, 3=ON, 4=OFF. Power cycle board (unplug and replug USB-C). Connect USB-C to host PC. Run
fastboot devicesto verify detection. - Why does the board throttle CPU frequency?
- Thermal throttling or power throttling. Check temperatures:
cat /sys/class/thermal/thermal_zone*/temp. Ensure adequate cooling (heatsink recommended for sustained loads). Verify power supply provides sufficient current (12V 2A or 5V 3A). - Can I use HiKey for deep learning inference?
- Yes, but limited compared to dedicated accelerators. ARM Compute Library provides optimised kernels for Mali GPU (OpenCL). TensorFlow Lite, ONNX Runtime, and ncnn support ARM64 + Mali GPU. Performance suitable for edge inference (MobileNet, SqueezeNet), not training.
- What's the 60-pin high-speed expansion for?
- MIPI CSI-2 camera interfaces (2' 4-lane), PCIe x1 (for M.2 expansion cards), I2S audio, additional USB 2.0. Requires compatible 96Boards mezzanine cards or custom adapter boards.
- Where can I find device tree source files?
- Mainline Linux kernel source:
arch/arm64/boot/dts/hisilicon/hi3660-hikey960.dts. Check kernel version for HiKey 960 support (4.14+ recommended for stable support).
Related guides
- HiKey downloads ' image files and integrity checks
- HiKey specifications ' detailed hardware reference
- SBC Maintenance Routine ' preventive maintenance and backup strategies
- Basic Security Defaults for ARM Linux ' security hardening for development boards
- ARM Linux Reliable Setup Checklist ' comprehensive pre-flash and post-boot procedures
- For teams deploying AI workloads on ARM hardware, this LLM infrastructure blueprint covers deployment architecture and scaling considerations
Author: LeMaker Documentation Team
Last updated: 2026-01-12