Skip to main content

Image Burning

This guide covers burning the Linux OS image to the Hailo-15H SBC using the network-based update method via TFTP.

Prerequisites

Required Software

Download the Hailo-15H Vision Processor Software Package from Hailo Developer Zone.

TFTP Server Setup

Install and configure the TFTP server on your development host:

# Install TFTP server
sudo apt update
sudo apt install tftpd-hpa

# Create TFTP directory
sudo mkdir -p /var/lib/tftpboot
sudo chmod -R 777 /var/lib/tftpboot

# Restart TFTP server
sudo systemctl restart tftpd-hpa

Edit /etc/default/tftpd-hpa and ensure it contains:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

Required Tools

Install the Hailo board tools and U-Boot utilities:

# Install board tools (replace version as needed)
pip install hailo15_board_tools-1.11.0-py3-none-any.whl

# Install U-Boot tools
sudo apt-get install u-boot-tools

USB Device Rules

Configure USB device permissions:

# Create or edit udev rules
sudo tee /etc/udev/rules.d/99-usb.rules << 'EOF'
SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6015", GROUP="plugdev", MODE="0664"
EOF

# Apply rules
sudo udevadm control --reload
sudo udevadm trigger
sudo adduser $USER plugdev

:::tip Reboot Required Reboot the development host after adding the udev rules. :::

Network Configuration

Configure the development host Ethernet connection:

  • Development host IP: 10.0.0.2
  • Hailo-15H SBC IP: 10.0.0.1 (static)
  • Subnet: 10.0.0.0/24

Verify Current Software Version

Before updating, check the current software version:

  1. Connect via SSH:

    ssh root@10.0.0.1
    # Default password: 'root'
  2. Check the version:

    cat /etc/os-release
  3. Compare with the latest version in the Hailo Vision Processor Software Package Release Notes.

If the board already has the desired version, proceed directly to Run Your First Demo.

Hardware Setup

Connect the hardware as shown below:

Hardware Setup

Connections:

  • Ethernet cable between development host and Hailo-15H SBC RJ45 connector
  • USB-to-micro-USB cable between development host and Hailo-15H SBC

Power and Reset Buttons

Locate the power and reset buttons on the Hailo-15H SBC:

  • Power button: Powers on the board
  • Reset button: Resets the board

Step 1: Set DIP Switch for UART Boot

Configure the SBC to boot from UART for the recovery process:

  1. Power off the Hailo-15H SBC.

  2. Using fine tweezers, remove the orange tape from the DIP switch.

  3. Set the bootstraps to boot from UART by setting SW1.1 = ON (as shown in the figure below):

DIP Switch Setting

  1. Connect the USB-to-micro-USB cable to the PC.

  2. Power on the Hailo-15H SBC using the power button.

  3. Reset the Hailo-15H SBC using the reset button.

The SBC is now ready for firmware loading.

Step 2: Load Recovery Firmware

Load the recovery firmware using the uart_boot_fw_loader tool:

uart_boot_fw_loader \
--serial-device-name /dev/ttyUSB0 \
--firmware ./prebuilt/sbc/hailo15_uart_recovery_fw.bin

:::note File Location The .bin file is part of the Hailo Vision Processor Software Package, located under prebuilt/sbc/. :::

You should see output indicating successful firmware load:

Recovery Firmware Load

Step 3: Program SPI Flash

Program the SPI flash with bootloader and firmware images:

cd prebuilt/sbc

hailo15_spi_flash_program \
--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 \
--uboot-tfa ./u-boot-tfa.itb \
--uart-load \
--serial-device-name /dev/ttyUSB0

:::note File Locations All .bin and .itb files are part of the Hailo Vision Processor Software Package, located under prebuilt/sbc/. :::

You should see the SPI flash programming output:

SPI Flash Programming

Step 4: Reconfigure for SPI Boot

After programming the SPI flash, reconfigure the SBC to boot from SPI:

  1. Power off the Hailo-15H SBC.

  2. Using fine tweezers, set the DIP switch to SW1.1 = OFF (normal boot mode).

  3. Power on the Hailo-15H SBC.

Step 5: Program SD Card via TFTP

5.1 Prepare TFTP Directory

Copy the required image files to the TFTP directory:

# Copy FIT image
sudo cp fitImage /var/lib/tftpboot/

# Copy swupdate files
sudo cp swupdate-image-hailo15-sbc-rev3.ext4.gz /var/lib/tftpboot/
sudo cp hailo-update-image-hailo15-sbc-rev3.swu /var/lib/tftpboot/

:::note File Locations These files are part of the Hailo Vision Processor Software Package. Adjust filenames according to your specific version. :::

5.2 Connect Serial Console

Connect to the SBC serial console:

sudo picocom -b 115200 /dev/ttyUSB0

5.3 Initiate SD Card Update

  1. Reset the Hailo-15H SBC using the reset button.

  2. The U-Boot menu will appear. Select "SD Card Board Init":

U-Boot Menu

  1. U-Boot will automatically download the software update via TFTP and begin the update procedure.

  2. Wait for the procedure to complete. You will see progress traces followed by an automatic device reboot:

Update Complete

:::tip Update Duration The update process typically takes several minutes. Do not interrupt power during this process. :::

Verification

After the update completes and the board reboots:

  1. Verify the new version:

    ssh root@10.0.0.1
    cat /etc/os-release
  2. Check that all partitions are mounted correctly:

    lsblk

Alternative: Direct SD Card Flashing (dd Method)

As an alternative to network boot, you can flash the SD card directly using dd or balenaEtcher.

Locate the Image File

Find the .wic image file in your software package:

prebuilt/images/
└── hailo15-yocto-image.wic

Using dd (Linux/macOS)

# Identify SD card (BE CAREFUL!)
lsblk

# Flash image (replace sdX with your device)
sudo dd if=hailo15-yocto-image.wic of=/dev/sdX bs=4M status=progress conv=fsync

# Verify
eject /dev/sdX

:::danger Destructive Command The dd command will overwrite the target device completely. Triple-check the device path to avoid data loss. :::

Using balenaEtcher

  1. Download and install balenaEtcher
  2. Select the .wic or .wic.gz image file
  3. Select your SD card
  4. Click "Flash!"

SD Card Requirements

SpecificationMinimumRecommended
Capacity16 GB32 GB+
Speed ClassClass 10UHS-I U3
TypemicroSDmicroSDHC/SDXC

Troubleshooting

Recovery Firmware Load Fails

Cause: USB device not detected or permission issue

Solution:

  1. Verify USB cable connection
  2. Check udev rules are applied
  3. Verify device node exists: ls -la /dev/ttyUSB0

SPI Flash Programming Fails

Cause: UART connection issue or wrong boot mode

Solution:

  1. Ensure DIP switch SW1.1 is set to ON
  2. Check serial connection with picocom
  3. Reset and retry

TFTP Transfer Fails

Cause: Network configuration or firewall issue

Solution:

  1. Verify IP address is set to 10.0.0.2 on development host
  2. Check TFTP server is running: sudo systemctl status tftpd-hpa
  3. Verify files exist in /var/lib/tftpboot/
  4. Check firewall settings

Update Hangs

Cause: Network interruption or corrupted image

Solution:

  1. Reset the board and retry
  2. Re-copy image files to TFTP directory
  3. Verify image integrity with checksums

Next Steps

After burning the image:

  1. Ensure the SD card is inserted into the SBC (if using direct flash method)
  2. Set DIP switches to normal boot (SW1.1=OFF)
  3. Power on the board
  4. Proceed to Run Your First Demo