HiKey

Summary
HiKey (also known as HiKey 960) is an ARM development board built around the HiSilicon Kirin 960 SoC, featuring an octa-core ARM Cortex processor (4' A73 + 4' A53), Mali-G71 MP8 GPU, and 3GB LPDDR4 RAM. It's designed for Linux kernel development, Android AOSP work, AI/ML prototyping, and embedded systems testing. This page provides setup guidance, hardware overview, and troubleshooting for reliable first-boot and ongoing development.
If you are bringing up a new image (or returning to a board after time away), follow the checklist and steps below before making changes'most hard problems become easier once power, storage, and access are reliable.
Who this is for
New HiKey board owners, kernel developers validating ARM64 builds, Android AOSP developers needing reference hardware, ML researchers testing edge AI workloads, and anyone who needs a repeatable first-boot checklist before debugging kernel or driver issues.
What you'll do
- Understand HiKey hardware: Kirin 960 SoC architecture, memory configuration, storage options.
- Choose an appropriate Linux or Android image from the downloads hub.
- Verify image integrity and flash to eMMC or SD card using fastboot or dd.
- Boot with minimal peripherals and establish stable access (serial UART or SSH).
- Confirm network, storage, and service health with verification commands.
- Update once under supervision, reboot, and re-check system health.
- Troubleshoot common HiKey issues: power delivery, eMMC detection, USB-C negotiation.
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 standardized 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 requires USB-C Power Delivery negotiation for reliable operation. Insufficient power causes:
- Board fails to power on or resets randomly
- eMMC not detected or corrupted writes
- USB devices disconnect unexpectedly
- System throttles 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 behavior:
- 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 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 first boot and after any kernel/storage/bootloader changes:
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 different USB-C cable (poor cable very common issue); check DIP switch settings don't block boot.
- No boot / stuck at bootloader: capture serial console output (UART on 40-pin header); verify image matches HiKey 960 (not HiKey 620 or other variant); reflash eMMC using fastboot; try booting from microSD card instead.
- eMMC not detected in fastboot mode: power cycle board after setting DIP switches; try different USB-C port on host PC (USB 3.0 preferred); verify
fastboot devicesshows device before flashing. - Boots but no network: check
ip afor interface names (may be eth0, enp*, or wlan0); if using USB Ethernet adapter, checklsusbanddmesgfor detection; prefer Ethernet over WiFi for first boot validation. - Random resets or freezes: almost always power-related on HiKey; upgrade to higher-wattage USB-C PD charger; use shorter, thicker USB-C cable; check
dmesg | grep -i voltagefor undervoltage warnings. - Mali GPU not working: check
dmesg | grep malifor driver loading; verify kernel includes Mali driver (proprietary blob required for full 3D); some distributions ship only open-source Panfrost driver (limited support for Mali-G71). - USB devices not detected: verify sufficient power available (add powered USB hub if multiple devices); check
dmesgimmediately after plugging device; USB 3.0 port may have better compatibility than USB-C OTG. - HDMI no output: try different HDMI cable and monitor; check
dmesg | grep drmfor display errors; some images default to serial console and disable HDMI ' check kernel command line in bootloader. - Services failing after update: use
systemctl --failedandjournalctl -b -p errto identify failures; if system unstable after update, revert kernel via fastboot or boot from backup SD card.
Common mistakes
- Skipping checksum verification and debugging a corrupted flash.
- Using inadequate power supply (phone charger, old laptop USB port) and attributing power issues to software.
- Forgetting to power cycle after changing DIP switches (new mode doesn't apply until power cycle).
- Trying WiFi first boot with unknown dongles instead of Ethernet.
- Testing with marginal USB-C cable and misreading symptoms as kernel bugs.
- Making multiple changes at once (kernel + device tree + userspace + peripherals).
- Not keeping serial recovery path when doing bootloader or kernel work.
- Connecting 3.3V/5V UART adapter directly to 1.8V serial pins without level shifter (damages 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 optimized 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