> For the complete documentation index, see [llms.txt](https://dev.solid-run.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dev.solid-run.com/hailo/hailo-15/sbc-platform/hummingboard-hailo-15-som-quick-start-guide.md).

# HummingBoard & Hailo 15 SOM Quick Start Guide

## HummingBoard & Hailo 15 SOM Quick Start Guide

### Introduction

The following quick start guide provides background information about the [SolidRun Hailo 15 SOM](https://www.solid-run.com/hailo-15-som/).

The guide will give a technical overview of the product. By the end of it, you should be able to boot an operating system and run a demo application.

### Revision and Notes

| **Date**    | **Owner**       | **Revision** | **Notes**                                                                                                                                |
| ----------- | --------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| 12 May 2024 | Mikhail Anikin  | 1.0          | Initial release                                                                                                                          |
| 12 Aug 2024 | Mikhail Anikin  | 1.1          | Update flashing process                                                                                                                  |
| 06 Nov 2024 | Mikhail Anikin  | 1.2          | Add IIoT support                                                                                                                         |
| 16 Dec 2024 | Mikhail Anikin  | 1.3          | Update flashing process                                                                                                                  |
| 22 Dec 2024 | Mikhail Anikin  | 1.4          | Introducing SW update                                                                                                                    |
| 11 Dec 2025 | Yazan Shhady    | 1.5          | Correct DC input voltage range to 7V–18V                                                                                                 |
| 28 Sep 2026 | Guillermo Karsz | 1.6          | Update to Hailo BSP 1.12.1: two images, board tools from the Hailo Developer Zone, new demo applications, SWUpdate from a running system |

### Hardware Setup

**Product specifications**

|                                  | Hailo 15 SOM with HummingBoard                                               |
| -------------------------------- | ---------------------------------------------------------------------------- |
| I/Os                             | 1 x MIPI-CSI on SOM                                                          |
| Networking                       | 1 x Ethernet RJ45 10/100/1000                                                |
| Processor                        | <p>Hailo 15 Quad-core Arm Cortex A53 1.3GHz<br><br>2 x Cortex M4, 200MHz</p> |
| Memory & Storage                 | <p>up to 8GB DDR4 RAM<br>Starting from 16GB eMMC</p>                         |
| Development and Debug interfaces | Micro USB                                                                    |
| Power                            | 7V – 18V                                                                     |
| Expansion card I/Os              | mikroBUS header                                                              |
| Temperature                      | <p>Commercial: 0°C to 70°C<br><br>Industrial: -40°C to 85°C</p>              |
| Dimensions                       | <p>PCBA: 100 x 70mm<br><br>Enclosure 120 x 80 x 30mm</p>                     |
| Enclosure                        | Extruded aluminium                                                           |

{% hint style="info" %}
For more detailed information about Hailo 15 SOM, please visit the hardware user manual: [HAILO 15 SOM Hardware User Manual](/hailo/hailo-15/com-som/hailo-15-som-hardware-user-manual.md)
{% endhint %}

**Visual Features Overview**

Please see below the features overview of the connector side of the HummingBoard Pro & Hailo 15

![image-20240513-080933.png](https://1160211108-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCsmHoAD7oNPYQbYxSWHU%2Fuploads%2Fgit-blob-b8dcf151f023e2e7bfb54d5e744c69bfa9bf0a0a%2Fimage-20240513-080933.png?alt=media)

### Software Setup

**Cable setup and prerequisites**

Here is what you will need to power up and use the board:

* Linux or Windows PC
* HummingBoard with Hailo 15 SOM
* 12V Power adapter (HummingBoard has wide range input of 7V–18V, it is recommended to use 12V power adapter).
* The micro USB to USB for the console (the HummingBoard has an onboard FTDI chip).
* IP router or IP switch

### Boot select and boot options

You should select the boot source before powering up the board for the first time.

Hailo 15 with HummingBoard has two boot options: serial boot (for recovery) and eMMC boot (the main option). To select a boot option, the DIP switch needs to be modified.

For more information, see [HummingBoard Hailo 15 Boot Select](/hailo/hailo-15/sbc-platform/hailo-15-other-articles/hummingboard-hailo-15-boot-select.md)

### Generating Yocto image

The prebuilt artifacts are available [here](https://images.solid-run.com/Hailo/hailo15/meta-solidrun-arm-hailo).

Navigate to the meta layer repo for the build instructions: [meta-solidrun-arm-hailo](https://github.com/SolidRun/meta-solidrun-arm-hailo).

### Software version and images

This guide corresponds to Hailo BSP 1.12.1 (`meta-hailo-soc` v1.12.1, SCU firmware 1.12.1, Linux 5.15.32, Yocto kirkstone). The Hailo board tools used for flashing must match this version.

The Yocto build produces two images:

| **Image**              | **Content**                                                                            | **Use**                                                                                  |
| ---------------------- | -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| `core-image-hailo-dev` | Hailo runtime, camera demo applications, tuning tool, debugging tools, package manager | Development and evaluation. This is the image SolidRun ships on the board and publishes. |
| `core-image-hailo`     | Same BSP and Hailo runtime, without the demos and the development tools                | Base for a customer product                                                              |

Both images come with an SWUpdate package.

### Understanding boot artifacts

The following artifacts are generated by yocto build:

| **Artifact**                                                                                        | **Purpose**                                                                 | **Target location**   |
| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------- |
| hailo15\_scu\_bl.bin                                                                                | SCU Bootloader                                                              | QSPI Flash            |
| hailo15\_scu\_fw\.bin                                                                               | SCU Firmware                                                                | QSPI Flash            |
| scu\_bl\_cfg\_a.bin, scu\_bl\_cfg\_b.bin                                                            | SCU Configuration                                                           | QSPI Flash            |
| customer\_certificate.bin                                                                           | Customer key certificate                                                    | QSPI Flash            |
| u-boot.dtb.signed                                                                                   | U-Boot device tree                                                          | QSPI Flash            |
| u-boot-initial-env                                                                                  | U-Boot environment                                                          | QSPI Flash            |
| u-boot-spl.bin                                                                                      | U-Boot SPL                                                                  | QSPI Flash            |
| u-boot-tfa.itb                                                                                      | TF-A and U-Boot                                                             | eMMC Boot partition   |
| fitImage                                                                                            | Linux kernel and device tree                                                | eMMC Boot partition   |
| `core-image-hailo-dev-hailo15-solidrun.wic.zst`, `.wic.bmap`                                        | Full eMMC image of the development image, with its block map for `bmaptool` | eMMC                  |
| `core-image-hailo-hailo15-solidrun.wic.zst`, `.wic.bmap`                                            | Full eMMC image of the production image, with its block map                 | eMMC                  |
| `hailo-update-image-hailo15-solidrun-dev.swu`, `hailo-update-image-hailo15-solidrun-production.swu` | SWUpdate packages of the two images                                         | Installed by SWUpdate |
| `poky-glibc-x86_64-core-image-hailo-dev-armv8a-hailo15-solidrun-toolchain-4.0.23.sh`                | SDK installer (cross toolchain and sysroot of the development image)        | PC                    |
| hailo15\_uart\_recovery\_fw\.bin                                                                    | Recovery firmware for reflashing QSPI                                       |                       |

### Booting the board:

The board is pre-flashed with the development image (`core-image-hailo-dev`) and the AI demos.

1. **Serial connection**\
   Please insert the micro USB into your device. Then, you can refer to [Serial Connection](/other-articles/serial-connection.md) to install the necessary serial connection software in Linux/Windows.
2. **Network connection**\
   The prebuilt image has a preset network configuration with a static IP `10.0.0.1`. Connect your PC to the board with a 1GbE RJ45 patch cord and set the static IP of your PC interface to `10.0.0.2`. There is no DHCP client on `eth0` by default. To give the board another address, change both the static entry in `/etc/network/interfaces` and the ConnMan wired profile (`connmanctl config`); see the section "Network defaults" of the layer README. A SWUpdate keeps the network configuration, a wic flash resets it to 10.0.0.1.
3. **Optional: Camera connection**\
   To evaluate the demo application, connect the MIPI-CSI camera to the Hailo 15 SOM MIPI-CSI interface before starting the boot.
4. **Power the board**\
   Plug in a power supply, and the board will start booting. You will see the boot log in the serial terminal:

> Poky (Yocto Project Reference Distro) 4.0.23 hailo15 ttyS1
>
> hailo15 login:

Use the following default credentials:

* Login: root
* Password: root

### Running the demo applications

The demo applications are in `/home/root/apps` on the development image. They capture from the MIPI-CSI camera, run the Hailo neural network and stream the encoded result over RTP/UDP to the PC at 10.0.0.2, port 5000. Run one demo at a time; a demo runs for 60 seconds by default (`-t <seconds>` changes it, `--help` lists the options).

#### Using GStreamer

Gstreamer is a CLI application that allows you to send, receive, and convert video streams.

1. Install gstreamer

For Ubuntu/Debian distros:

```
sudo apt install gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad gstreamer1.0-libav
```

For Fedora/RHEL distros:

```
sudo dnf install gstreamer1 gstreamer1-plugins-base gstreamer1-plugins-good gstreamer1-plugins-bad-free gstreamer1-plugins-bad-free-gtk
```

For Windows:

* **Download the Installer**: Go to the [GStreamer official website](https://gstreamer.freedesktop.org/download/) and download the appropriate installer for your Windows version.
* **Run the Installer**: Execute the downloaded file. During installation, **select "Complete Installation"** to install all basic plugins.
* **Set Environment Variables**: To use GStreamer from the command line, add GStreamer to your system's PATH as described [here](https://gstreamer.freedesktop.org/documentation/installing/on-windows.html?gi-language=c).

{% hint style="info" %}
For Windows, you might need to configure the Firewall to allow the stream. Make sure that `10.0.0.2` is a private network.
{% endhint %}

2. Run the gstreamer pipeline to start receiving a stream.

On **your pc** In a bash terminal or Windows cmd run:

```
gst-launch-1.0 -v udpsrc port=5000 address=0.0.0.0 ! application/x-rtp,encoding-name=H264 ! queue ! rtph264depay ! queue ! h264parse ! avdec_h264 ! queue ! videoconvert ! fpsdisplaysink video-sink=autovideosink text-overlay=false sync=false
```

3. Run the demo application on the **Hailo15 EVK**:

```
root@hailo15:~# ./apps/case_studies/dynamic_privacy_mask/dynamic_privacy_mask_case_study
```

People in the picture are detected and masked in the stream. Other applications in `/home/root/apps` (each has `--help`): `face_landmarks`, `license_plate_recognition`, `clip`, `vlm_event_monitor`, `webserver`, and the pipeline examples under `case_studies`.

#### Using VLC

Another option is to receive a stream using VLC media player.

1. Install VLC. For Ubuntu/Debian distros:

```
sudo apt install vlc
```

On Ubuntu 24.04 the VLC from the distribution packages does not play this stream. Use the Flatpak build instead:

```bash
flatpak install -y flathub org.videolan.VLC
flatpak run org.videolan.VLC ~/stream.sdp
```

For Fedora/RHEL distros:

```
sudo dnf install vlc
```

For Windows:

* **Download the Installer**: Go to the [VLC official website](https://www.videolan.org/) and download the appropriate installer for your Windows version.
* **Run the Installer**: Execute the downloaded file. During installation, **select "Complete Installation"** to install all basic plugins.

{% hint style="info" %}
For Windows, you might need to configure the Firewall to allow the stream. Make sure that `10.0.0.2` is a private network.
{% endhint %}

2. Create a stream configuration file `stream.sdp` with the following content:

![](https://developer.resources.solid-run.com/wiki/images/icons/grey_arrow_down.png)

stream.sdp

v=0\
o=- 0 0 IN IP4 127.0.0.1\
s=No Name\
c=IN IP4 10.0.0.2\
t=0 0\
a=tool:libavformat 58.20.100\
m=video 5000 RTP/AVP 96\
a=rtpmap:96 H264/90000

3. Open the `stream.sdp` in the vlc using the `Media -> Open File` tab.
4. Run the demo application on the **target**:

```
root@hailo15:~# ./apps/case_studies/dynamic_privacy_mask/dynamic_privacy_mask_case_study
```

{% hint style="info" %}
Note: VLC inserts its own 1s latency into the stream during the network cashing. You can decrease this latency in the settings.

* Go to Tools > Preferences.
* Show settings: select All at the bottom left to switch to the advanced preferences.
* Under Input / Codecs, find Network.
* Locate Network caching (ms) and reduce its value. The default is typically around 1000 ms (1 second). You might try lowering it to 100-300 ms, but be aware that too low a value can lead to stream instability or increased packet loss.
  {% endhint %}

## Firmware update process

### Updating firmware with SWUpdate (recommended)

A part of the yocto build is a software update package (`.swu`) for each image, containing the full rootfs, the bootloaders and the qSPI content: `hailo-update-image-hailo15-solidrun-dev.swu` for the development image and `hailo-update-image-hailo15-solidrun-production.swu` for the production image. U-Boot downloads the package under the name `hailo-update-image-hailo15-solidrun.swu`, so rename or copy the chosen package to that name in the directory you serve.

1. Run an HTTP server on port 80 in the directory with the update image (.swu)

```
sudo python3 -m http.server 80
```

2. Reset the board. In the u-boot menu, select `SWUpdate`

```
  *** U-Boot Boot Menu ***

     Boot from eMMC
     Boot to flashing ramdisk
*    SWUpdate
     U-Boot console


  Press UP/DOWN to move, ENTER to select, ESC/CTRL+C to quit
```

{% hint style="info" %}
If there is no SWUpdate item in the menu or an update was unsuccessful for any reason, please proceed to the next chapter “Manual firmware reflashing“.
{% endhint %}

3. The board will boot, load the update image from IP 10.0.0.2, port 80 and update all the firmware components.

The update can also be started from the running system (development image only):

```
root@hailo15:~# /etc/run_swupdate.sh -s 10.0.0.2 -r hailo-update-image-hailo15-solidrun.swu
```

Answer `yes`. `-s` stores the server IP in the U-Boot environment. The production image has no `swupdate` program; use the U-Boot menu there.

{% hint style="info" %}
Notes:

* The first SWUpdate on a board flashed with the wic image repartitions the eMMC to Hailo's layout (64 MiB boot partition, 7328 MiB root filesystem, the remaining space as a data partition).
* The network configuration of the previous installation (`/etc/network/interfaces`) is kept across an update. Flashing the wic image resets it to the default (10.0.0.1).
* If the download fails (server not reachable), the board stays in update mode and retries at every boot. To leave update mode without updating: select `U-Boot console` in the menu, run `run boot_mmc1`, and once Linux is up run `/etc/set_sw_image.sh a`. Programming the QSPI with the board tools also clears it.
  {% endhint %}

### Manual firmware reflashing

#### Flashing QSPI flash

Reflashing QSPI is only possible under Linux.

{% hint style="warning" %}
Please make sure that u-boot-tools are installed in your system:

* For Ubuntu/Debian: `sudo apt-get install u-boot-tools python3-venv`
* For Fedora/RHEL: `sudo dnf install uboot-tools`

`u-boot-tools` provides `mkenvimage`, which `hailo15_spi_flash_program` runs to turn the text file `u-boot-initial-env` into the environment image written to the qSPI flash.
{% endhint %}

1. Get the Hailo board tools: download the Hailo Vision Processor Software Package from the [Hailo Developer Zone](https://hailo.ai/developer-zone/software-downloads/), extract it and locate `hailo15_board_tools-<VERSION>.whl`. The version must match the BSP version of the image (1.12.1 for this release); the tools are not part of the SolidRun repository or of the Hailo BSP layers. Install them in a Python virtual environment:

```bash
python3 -m venv hailo15_env
source hailo15_env/bin/activate
pip install hailo15_board_tools-1.12.1-py3-none-any.whl
```

To access the FTDI serial device without root, create a udev rule once:

```bash
sudo tee /etc/udev/rules.d/11-ftdi.rules > /dev/null << EOF
SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6011", GROUP="plugdev", MODE="0664"
EOF
sudo udevadm control --reload-rules
```

2. Set the DIP switch to the [Serial download mode](/hailo/hailo-15/sbc-platform/hailo-15-other-articles/hummingboard-hailo-15-boot-select.md).
3. **Close the serial terminal on your PC**.
4. Reset the board.
5. Upload the uart flashing firmware into the SOM:

```
uart_boot_fw_loader --serial-device-name /dev/ttyUSB0 --firmware hailo15_uart_recovery_fw.bin 
```

6. Reflash QSPI content:

```
hailo15_spi_flash_program --serial-device-name /dev/ttyUSB0 --uart-load --scu-bootloader ./hailo15_scu_bl.bin --scu-bootloader-config scu_bl_cfg_a.bin --scu-firmware ./hailo15_scu_fw.bin --uboot-device-tree ./u-boot.dtb.signed --bootloader ./u-boot-spl.bin --bootloader-env ./u-boot-initial-env --customer-certificate ./customer_certificate.bin
```

{% hint style="info" %}
Note: `hailo15_spi_flash_program` also allows to reflash selected parts of the QSPI Flash:

* `hailo15_spi_flash_program --serial-device-name /dev/ttyUSB0 --uart-load --bootloader ./u-boot-spl.bin --bootloader-env ./u-boot-initial-env--scu-bootloader ./hailo15_scu_bl.bin`
* `hailo15_spi_flash_program --serial-device-name /dev/ttyUSB0 --uart-load --uboot-device-tree ./u-boot.dtb.signed`
* etc.
  {% endhint %}

{% hint style="warning" %}
This guide assumes that your serial terminal is `/dev/ttyUSB0`. Replace it with the proper device for your system.
{% endhint %}

#### Sending u-boot over uart

Hailo FW expects a firmware version match between proprietary firmware, SPL, u-boot, and kernel. After qSPI firmware was reflashed with uart boot mode, u-boot with the same fw version should be loaded. SPL uses the UART Y-Modem mode to load the `u-boot-tfa.itb` file over the serial connection.

1. Set the DIP switch to the [qSPI boot with Y-modem u-boot load](/hailo/hailo-15/sbc-platform/hailo-15-other-articles/hummingboard-hailo-15-boot-select.md).
2. Reset the board. You will see the board booted to SPL and expects u-boot to be sent with Y-modem:

> U-Boot SPL 2022.01 (Aug 09 2026 - 19:26:31 +0000)\
> Loading Environment from SPIFlash... OK\
> U-Boot SPL boot source uart\
> CCCCCCCCCC

The SPL waits for the Y-modem transfer to upload the u-boot into the RAM. The latest minicom already has a built-in Y-modem transfer function. With minicom, press Ctrl+A, then S, select `ymodem`, and then choose file `u-boot-tfa.itb`. Note: the transfer can take a few minutes. As soon as the u-boot is completely transferred, you will see the same u-boot entries as usual Proceed to the restoring eMMC with ramdisk.

Note: if the eMMC still holds a working U-Boot of the same version, this step is not needed; the U-Boot menu appears on the normal qSPI boot.

#### Restoring eMMC content.

The u-boot menu has a special entry that allows you to load a ramdisk from an HTTP server and boot to it.

1. Run an HTTP server on port 80 in the directory with the image

```
sudo python3 -m http.server 80
```

2. In the u-boot menu, select `Boot to flashing ramdisk`
3. The Board will grub a ramdisk from the HTTP server on IP 10.0.0.2, port 80, and boot to it.
4. Once the board is booted to the ramdisk, flash eMMC:

```
bmaptool copy http://10.0.0.2/core-image-hailo-dev-hailo15-solidrun.wic.zst /dev/mmcblk1
```

Use `core-image-hailo-hailo15-solidrun.wic.zst` for the production image.

5. Reboot the board and restore the DIP switch to the [qSPI boot](/hailo/hailo-15/sbc-platform/hailo-15-other-articles/hummingboard-hailo-15-boot-select.md).

Note: if `bmaptool copy` reports checksum mismatches, download the `.wic.zst` and `.wic.bmap` files to the board first (for example with `wget`) and run `bmaptool copy` on the local files.

### Using the SOM on a custom carrier

The Hailo 15 SOM can be used on a carrier board of your own with its own device tree. U-Boot normally selects the kernel device tree by reading the SOM revision from the SOM EEPROM; on a custom carrier this selection is switched off and U-Boot is given the name of the device-tree configuration to boot. Your device tree, one U-Boot configuration fragment and one variable live in your own Yocto layer; nothing in the SolidRun layer has to be edited. The procedure and a tested example are in the section [Using the SOM on a custom carrier](https://github.com/SolidRun/meta-solidrun-arm-hailo#using-the-som-on-a-custom-carrier) of the layer README.

### List Of Supported OS

| **OS**                                                                                                                                                                                                               |                                                                       |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| ![](https://1160211108-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCsmHoAD7oNPYQbYxSWHU%2Fuploads%2Fgit-blob-74cb1a237d748282e49d36fc25d7fd143e177cfa%2Fimage-20211024-151110.png?alt=media) | [Hailo 15 Yocto](https://github.com/SolidRun/meta-solidrun-arm-hailo) |

### Related Articles


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://dev.solid-run.com/hailo/hailo-15/sbc-platform/hummingboard-hailo-15-som-quick-start-guide.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
