The Page describes how to set up the Huawei D01 board.

Board Features

Major hardware features of D01 are listed here. Refer to d01-portrait.png to know where each component below is physically located.




Integrated 16 x ARM Cortex-A15 CPU Core @ max. 1.5GHz

Support for up to 84000 DMIPS

Support for CPU configuration as AMP/SMP

Configurable Big or Littile endian,default Little endian

Support ARMv7-A instruction set

Support float VFPv4 instruction set"


Two 64bit DDR3 DRAM Dual Inline Memory, Module(DIMM) sockets:(2)&(3)

Maximum frequency of 1600 MHz

Maximum capacity of 64GB

preassembled capacity:8GB"

Built-in two 1Gb NOR Flash,only one NOR flash could use by software:(29)

Built-in two 512MB NAND Flash:(30)





Peripheral Interfaces

TWO USB2.0 Host port:(11)

Two UART interfaces:(12)&(13)

Four I2C interfaces

One SPI interface, supporting four CSs

One SD card interface:(10)

GPIO:eight LED interfaces:(26),eight switchs:(25)

Three SATA interfaces(2.5in SATA 3.0 6Gbps):(4)&(5)&(6)

Tracer Connector x2:(19)&(20)

One JTAG interfaces( 5x2 pin CPU Connector, ARM Connector):(24)

Expansion Capabilities

One PCI Express interfaces:(22)

Three MDIO interfaces


BIOS resident in NOR Flash

Support for update with FTP


Two 10/100/1000Mbit/s Gigabit Ethernet ports:(15)&(16)

One 10/100Mbit/s FE port:(14)

Hardware Monitor Subsystem

Power consumption sense

Input Devices



One hardware button for power-off:(8)

One hardware button for reset:(9)"

Set Up D01

This section explains how to set up a brand new D01 board.

Boot D01 to UEFI shell

Follow these steps to setup and boot D01 board.

  1. Make sure Jumper J39 is in position 1 and 2. (This means to use custom UEFI. If position 2 and 3 are connected, it will boot with the default UEFI, which can never be flashed.)
  2. Serial console (Connector UART0): 9600/8/N/1
  3. Ethernet (FE, J44)
  4. The board is shipped with a power adapter. Apply it to the board, and turn it on. You should be able to see output in serial console now.
  5. Keep pressing 's' in minicom to start UEFI Boot Menu.
  6. Select [b] EBL. Type in 'help' to see all commands supported in EBL.

Upgrade UEFI

You need to upgrade UEFI to its latest version to enjoy new features.

Where to get UEFI

Here attached a binary version of UEFI: EFI-BOOT.fd.ec4933e7 Note:

  • UART baudrate is now 115200. Please change your serial port setting accordingly.
  • Version string upon booting should read:

    The BIOS Version is:Linaro_BIOS_V1.8
    UEFI firmware (version EVB_SECURE_UEFI_BIOS built at 11:17:06 on Mar 13 2014)
  • Download and rename it to EFI-BOOT.fd to use.

Follow these steps to upgrade UEFI

Enter EBL as described above. Type in these commands: Note, FTP protocol is used in D01 UEFI for file downloading. So, before this step, please make sure you have a working FTP server running in your local network. And D01 can use FTP to get files from network.

  1. IP address config:

            > ifconfig -s eth0 [IP.address] [mask] [gateway]
              eg. ifconfig -s eth0
  2. send this command first.
    • Note: on a fresh D01 board, this command should be sent at lease once. and it's not necessary in the following reboot.

    • Note: Again, J39 should be in position 1-2.

              > provision [server.IP] -u [] -p [passwd] -f norflash_header                                            
              > writefiletonor 0 norflash_header
              > updateOSflag
    • norflash_header is attached here. norflash_header

  3. download from FTP server (Note, filename must be EFI-BOOT.fd)

            > provision [server.IP] -u [] -p [passwd] -f EFI-BOOT.fd
              eg. provision -u dj -p dj -f EFI-BOOT.fd
  4. flash to NOR:

            > updateL1 EFI-BOOT.fd

Launching D01 with pre-built images

After upgrading UEFI, you can launch D01 with pre-built images in Linaro's monthly release. From here, find the item "HiSilicon D01", follow the download link, you will find pre-built images.


  1. Download pre-built images, and save them in your FTP server's ftp root directory. There are total 4 files required. Eg, in 2014.04 release, get them from here:

Note, totally four binaries are required to boot kernel to Console Shell, and the filenames are:








monitor mode


zImage, with dtb concatenated

  1. Boot D01 to UEFI shell. And in EBL, type in these commands:
    • a) IP address config:

              > ifconfig -s eth0 [IP.address] [mask] [gateway]
                eg. ifconfig -s eth0
      b) download files from FTP server (Note, filenames must not be changed):

Note, there are four files, .kernel .filesystem .text .monitor.

        > provision [server.IP] -u [] -p [passwd] -f .text
        > provision [server.IP] -u [] -p [passwd] -f .monitor
        > provision [server.IP] -u [] -p [passwd] -f .filesystem
        > provision [server.IP] -u [] -p [passwd] -f .kernel
          eg. provision -u dj -p dj -f .monitor
  1. Reboot D01 and enter EBL. (Either by pressing the RESET key, or by clicking the POWER ON/OFF button).
    • a) Use getlinuxatag to see current kernel parameter:

              > getlinuxatag

      b) Use changelinuxatag to change kernel cmdline to this:

              > changelinuxatag
                console=ttyS0,115200 rdinit=/linuxrc earlyprintk

      c) Use setlinuxatag to save to FLASH

              > setlinuxatag
  2. Reboot D01, and it now can boot into Linux console shell.

Get Source Code and Build

Here is a wiki page for building kernel and UEFI for D01 from source code. Please check it to get more details.

Install Debian 8 (Jessie) with Debian installer

Debian installer support is provided with a specific kernel build for this board.

Details are given on Boards/D01/DebianInstaller

Install Ubuntu Server to NFS (Network filesystem), and Boot

Before doing that, please make sure you have UEFI, .text, .monitor, and .kernel installed on your D01. Please refer to above on steps of how to do that. (.filesystem is not necessary because kernel will boot with filesystem on network).

On your local env.,

  1. Choose a machine and use it as NFS server. Enable NFS service on it. Please follow the guide of your host Machine on how to do this.
  2. Download Ubuntu NFS server image release for D01: (Ref: Here)

  3. Extract this file. Export this path in NFS's config.
  4. On D01 board, Boot up the board, and enter UEFI EBL shell.
  5. Follow this step (Reference here) to update kernel cmdline. Change kernel cmdline to:

    console=ttyS0,115200 earlyprintk rootfstype=nfsroot root=/dev/nfs rw nfsroot=<NFS-server-ip>:<path-to-exported-NFS-files> ip=<client-ip>:<NFS-server-ip>:<gw-ip>:<netmask>::eth0:on:<dns0-ip>:<dns1-ip> user_debug=31 nfsrootdebug

Here is an example:

console=ttyS0,115200 earlyprintk rootfstype=nfsroot root=/dev/nfs rw nfsroot= ip= user_debug=31 nfsrootdebug

Note, this is an example. Please change the values according to your local environment. Explanation of each parameter can be found in kernel source Documentations. Like: ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>:<dns0-ip>:<dns1-ip>

  1. Reboot the board.
  2. After kernel boots and the Console shell is shown up, this means the process is successful. It is recommended to config DNS server, so your board can access the Internet. sudo to edit this file /etc/resolv.conf, and add your DNS server into it. Eg.

  3. Ready and set.

Install Ubuntu Server to SATA disk, and Boot

  1. Download Ubuntu server release for D01 from release page. (Ref: Here)

  2. Boot the board with NFS
  3. Partition and Format SATA disk. Create one ext4 partition of at least 10G to host the root filesystem. In my case, it is /dev/sda1
  4. Mount /dev/sda1 to /mnt/sda1

    mkdir /mnt/sda1 /mnt/sda3
    mount -t ext4 /dev/sda1 /mnt/sda1
  5. Extract release from Step 1 to /mnt/sda1
  6. Unmount /dev/sda1
  7. Reboot, and enter UEFI EBL shell.
  8. Change kernel cmdline. Refer to above for details how-to.

    console=ttyS0,115200 root=/dev/sda1 rootfstype=ext4 rw earlyprintk ip=

Note, you should change /dev/sda1 to according to your SATA disk situation.

  1. Reboot the board.
  2. After kernel boots and the Console shell is shown up, this means the process is successful. It is recommended to config DNS server, so your board can access the Internet. sudo to edit this file /etc/resolv.conf, and add your DNS server into it. Eg.

  3. Ready and set.

Note: Recover D01 from Failure by using default UEFI

In case of failure in UEFI, you can always switch to a factory default (known-good, non-erasable) UEFI by shorting Pin 2 and Pin 3 of J39. (Refer to Mark 18 of d01-portrait.png)

  1. Power off the board, disconnect power supply
  2. Short Pin 2 and Pin 3 of J39 (Leave Pin 1 unconnected)
  3. On your client (minicom or similar tools), change UART baudrate to 9600
  4. Apply power to the board, turn it on
  5. Following these steps to upgrade UEFI. (Ref: Here)

  6. Power off the board, disconnect power supply
  7. Short Pin 1 and Pin 2 of J39 (Leave Pin 3 unconnected)
  8. On your client, change UART baudrate to 115200. (That's usually the case. Unless you know that you are using a 9600 baudrate UEFI.)

Remotely access a D01 in LAVA Lab (aka. Hacking sessions on D01)

Read this: Hacking sessions on D01

PXE boot in UEFI

Follow this link to do PXE boot in UEFI on D01 boards.

SATA boot in UEFI

Follow this link to know how boot from SATA.

KVM on D01

Follow this link to learn how to try out KVM on D01.

Boards/D01 (last modified 2015-05-11 11:19:53)