HiKey960
Summary
This page is a stable starting point for HiKey960 bring-up: a practical first-boot checklist, verification commands, and internal links to related topics. The aim is to help you confirm the board is healthy before you start debugging kernels, peripherals, or performance.
When behaviour is inconsistent, the fastest wins are usually power, storage quality, and having a recovery console (serial or local). This page is organised around that reality.
Who this is for
HiKey960 owners doing first boot, developers validating images after changes, and people migrating from older setups who want a repeatable baseline.
What you'll do
- Prepare stable power and reliable storage.
- Boot with minimal peripherals and establish access (serial or SSH).
- Confirm system identity, storage layout, and basic connectivity.
- Capture a baseline boot report and keep it.
- Use troubleshooting steps to isolate power/storage/network issues.
Quick checklist
- Stable PSU and a known-good cable.
- Reliable storage (and a spare card/module for A/B testing).
- Ethernet for first boot (recommended).
- Optional: serial console adapter for recovery and early boot logs.
- A place to save baseline logs.
Steps / guidance
1. Boot with minimal peripherals
For first boot, use only essential components to reduce variables:
- Power: 12V 2A power supply (HiKey960 requires more power than typical SBCs). Use the included power adapter or a quality equivalent.
- Storage: UFS module or microSD card (depending on image). Verify boot switches are set correctly (consult HiKey960 documentation).
- Network: Ethernet cable connected to router/switch.
- Display (optional): HDMI for boot messages and local console.
Do not attach USB hubs, high-draw peripherals, or multiple displays on first boot. Add them after verifying the baseline system is stable.
2. Confirm system identity and resources
After boot, log in (via SSH, serial, or local console) and verify the system matches expectations:
uname -a # Kernel version and architecture
cat /proc/cpuinfo | head -n 40 # CPU cores and model (4x A73 + 4x A53 expected)
grep MemTotal /proc/meminfo # Total RAM (3GB expected for HiKey960)
lscpu # CPU summary
If CPU count or memory does not match, check boot logs for hardware detection issues.
3. Confirm storage layout and health
Verify storage is detected and mounted correctly:
lsblk # List block devices (UFS shows as /dev/sda or similar)
blkid # Filesystem UUIDs and types
df -h # Mount points and free space
dmesg | grep -E "mmc|ufs|sd" # Check for storage errors
HiKey960 typically boots from UFS 2.1 storage (faster than eMMC). If using microSD, expect slower boot and I/O performance.
4. Confirm network connectivity
Verify Ethernet link, IP assignment, and external connectivity:
ip a # List interfaces and IP addresses (eth0 should have an address)
ip r # Routing table (should show default gateway)
ping -c 3 8.8.8.8 # Test external connectivity
cat /etc/resolv.conf # Verify DNS nameservers
If no IP address appears, check cable, router DHCP settings, and interface status (ip link show eth0).
5. Capture a baseline boot report
Save the following output to a text file on your workstation. This baseline allows you to compare behaviour after updates or configuration changes:
uname -a # Kernel version
cat /proc/cpuinfo | head -n 40 # CPU details
ip a # Network configuration
ip r # Routes
systemctl --failed # Failed services
journalctl -b -p err | tail -n 120 # Boot errors
dmesg | tail -n 80 # Recent kernel messages
lsblk # Storage layout
Copy/paste into a file named hikey960-baseline-YYYY-MM-DD.txt and store safely.
6. Update system under supervision
Run a system update with console access open (SSH, serial, or local). Do not update over WiFi on first boot:
sudo apt update
sudo apt -y full-upgrade
sudo reboot
After reboot, repeat the verification checks above and compare output to your baseline. If something breaks, you can identify exactly what changed.
Verification checks
Use at least two after updates or hardware changes:
ip a
lsblk
dmesg | tail -n 50
journalctl -b -p err | tail -n 120
Troubleshooting
Board does not boot or stuck at early boot
- Symptoms: Power LED on but no display output; boot hangs at U-Boot or kernel; no serial output.
- Common causes: Wrong boot switch settings, incompatible image, power supply insufficient, storage failure.
- Steps:
- Verify boot switches are set correctly for your storage type (UFS or microSD). Consult HiKey960 hardware documentation.
- Connect serial console to capture boot messages. Look for U-Boot errors or kernel panics.
- Swap power supply. HiKey960 requires 12V 2A; weaker supplies cause instability.
- Try a different UFS module or microSD card. Flash from a freshly verified image.
- Remove all USB peripherals and boot with only power, storage, and serial console.
- Check for visible hardware damage (blown capacitors, burn marks).
Random resets or instability
- Symptoms: Board resets unpredictably; kernel panics; filesystem corruption.
- Common causes: Undervoltage from weak power supply, thermal throttling, failing storage, USB power draw.
- Steps:
- Swap power supply and cable. Ensure 12V 2A minimum with short, thick cable.
- Monitor temperature:
cat /sys/class/thermal/thermal_zone*/temp. HiKey960 can run hot; add heatsink or active cooling if above 85'C. - Remove all USB peripherals. Test with minimal setup (power, storage, Ethernet only).
- Replace storage media. Re-flash and verify checksum before testing.
- Check dmesg for undervoltage or thermal warnings:
dmesg | grep -E "under|thermal|throttle".
Network access failure
- Symptoms: No IP address on eth0; DHCP lease not appearing in router; ping fails.
- Common causes: Ethernet cable fault, interface not brought up, DHCP client not running, driver issue.
- Steps:
- Check link LEDs on Ethernet port. Try different cable and router/switch port.
- Run
ip a. If eth0 shows "state DOWN", bring it up:sudo ip link set eth0 up. - Check for DHCP lease:
ip rshould show default gateway. If missing, runsudo dhclient eth0. - Verify DNS:
cat /etc/resolv.confshould list nameservers. - Review network logs:
journalctl -u NetworkManagerordmesg | grep eth.
USB devices unreliable or not detected
- Symptoms: USB devices disconnect randomly;
lsusbdoes not show device; dmesg shows errors. - Common causes: Power supply insufficient for USB device current draw, USB hub issues, driver incompatibility.
- Steps:
- Check dmesg immediately after plugging device:
dmesg | tail -n 50. Look for enumeration errors or "device not accepting address". - Avoid USB hubs initially. Connect device directly to HiKey960 USB port.
- If device draws >500mA, use a powered USB hub.
- Verify power supply is adequate. HiKey960 + USB devices may require more than 2A total.
- Test device on another Linux system to confirm it works (driver available, not faulty hardware).
- Check dmesg immediately after plugging device:
Services fail to start
- Symptoms: Boot completes but expected functionality missing (SSH, web server, etc.).
- Common causes: Misconfiguration, missing dependencies, network not ready before service starts.
- Steps:
- List failed services:
systemctl --failed. - Check service status:
systemctl status SERVICE_NAME. - Review logs:
journalctl -u SERVICE_NAME -n 50. - If service depends on network, verify network is up first (
ip a,ip r). - Restart service after fixing config:
sudo systemctl restart SERVICE_NAME.
- List failed services:
Common mistakes
- Assuming a 'working once' storage device is reliable.
- Adding many peripherals on first boot (making problems hard to reproduce).
- Changing kernel, userspace, and network settings in one session.
- Running headless without a recovery path.
- Not saving a baseline boot report.
FAQ
What power supply does HiKey960 require?
HiKey960 requires 12V 2A (barrel connector). This is higher than typical SBCs (which use 5V). Do not use a 5V supply; it will not boot. Use the included adapter or a quality 12V 2A supply.
Should I use UFS or microSD storage?
UFS 2.1 is faster (sequential reads >500 MB/s) and more reliable than microSD. Use UFS for best performance. MicroSD is acceptable for testing or when UFS modules are unavailable, but expect slower boot and I/O.
How do I set the boot switches correctly?
Boot switch settings depend on whether you are booting from UFS or microSD, and whether you are flashing firmware or booting normally. Consult the HiKey960 hardware manual for diagrams. Incorrect switch settings prevent boot.
Does HiKey960 run hot?
Yes. The Kirin 960 SoC (4x Cortex-A73 + 4x Cortex-A53) generates significant heat under load. Expect 60-75'C idle, 80-90'C under load. Add a heatsink or active cooling (fan) if sustained loads cause thermal throttling (check dmesg | grep thermal).
Can I use HiKey960 for machine learning or AI workloads?
Yes. HiKey960 has Mali-G71 GPU and can run TensorFlow Lite, ONNX Runtime, and other inference frameworks. Performance is suitable for edge AI (object detection, speech recognition). Not suitable for training large models. Check AOSP and Linaro documentation for AI framework support.
What operating systems are supported?
HiKey960 supports AOSP (Android), Debian, Ubuntu, and specialized images from Linaro. Check the Linaro HiKey960 page for latest images. Some images require specific boot switch settings or firmware versions.
How do I flash firmware to HiKey960?
Use the fastboot protocol. Set boot switches to fastboot mode, connect USB-C (not USB-A), and run fastboot commands from a host PC. Detailed flashing instructions are in the Linaro HiKey960 documentation. Always verify boot switch settings before flashing.
Can I use PCIe devices with HiKey960?
Yes. HiKey960 has a PCIe Gen2 x1 lane exposed via M.2 connector. You can use NVMe SSDs, WiFi/Bluetooth modules, or other PCIe devices. Driver support depends on the OS image. Not all images enable PCIe by default.
Does HiKey960 have GPIO?
Yes. HiKey960 has a low-speed expansion header with GPIO, I2C, SPI, UART. Pinout and voltage levels (1.8V or 3.3V) are documented in the hardware manual. Use level shifters if interfacing with 5V devices.
Where can I find more HiKey960 documentation?
Check the 96Boards HiKey960 page and Linaro documentation. For LeMaker-specific notes, see this wiki page and the Wiki Main Page.
Concrete example (basic health checks)
uname -a
systemctl --failed
journalctl -b -p err | tail -n 120
dmesg | tail -n 50
Author: LeMaker Documentation Team
Last updated: 2026-01-11