Skip to content

Dasharo firmware building guide

Intro

This guide shows how to build Dasharo firmware for NovaCustom devices. It contains two components:

Requirements

This guide was verified on Ubuntu 22.04. In practice, any Linux distribution with Docker support should be enough to complete it.

Make sure that you have following packages installed:

Build Dasharo EC firmware

  1. Clone the Dasharo ec repository:

    git clone https://github.com/Dasharo/ec.git
    
  2. Navigate to the source code directory and checkout to the desired revision:

    cd ec
    

    Replace X.Y.Z with a valid version

    git checkout novacustom_v540tu_vX.Y.Z
    
    git checkout novacustom_v560tu_vX.Y.Z
    
    git checkout novacustom_ns5x_adl_vX.Y.Z
    
    git checkout novacustom_nv4x_adl_vX.Y.Z
    
    git checkout novacustom_ns5x_tgl_vX.Y.Z
    
    git checkout novacustom_nv4x_tgl_vX.Y.Z
    
  3. Checkout submodules:

    git submodule update --init --recursive --checkout
    
  4. Build the EC firmware:

    EC_BOARD_VENDOR=novacustom EC_BOARD_MODEL=v540tu ./build.sh
    

    The resulting image will be placed in: novacustom_v540tu_ec.rom.

    EC_BOARD_VENDOR=novacustom EC_BOARD_MODEL=v560tu ./build.sh
    

    The resulting image will be placed in: novacustom_v560tu_ec.rom.

    EC_BOARD_VENDOR=novacustom EC_BOARD_MODEL=ns5x_adl ./build.sh
    

    The resulting image will be placed in: novacustom_ns5x_adl_ec.rom.

    EC_BOARD_VENDOR=novacustom EC_BOARD_MODEL=nv4x_adl ./build.sh
    

    The resulting image will be placed in: novacustom_nv4x_adl_ec.rom.

    EC_BOARD_VENDOR=novacustom EC_BOARD_MODEL=ns5x_tgl ./build.sh
    

    The resulting image will be placed in: novacustom_ns5x_tgl_ec.rom.

    EC_BOARD_VENDOR=novacustom EC_BOARD_MODEL=nv4x_tgl ./build.sh
    

    The resulting image will be placed in: novacustom_nv4x_tgl_ec.rom.

Build Dasharo BIOS firmware

  1. Clone the Dasharo coreboot repository:

    cd ..
    git clone https://github.com/Dasharo/coreboot.git
    
  2. Navigate to the source code directory and checkout to the desired revision:

    cd coreboot
    

    Replace X.Y.Z with a valid version

    git checkout novacustom_v540tu_vX.Y.Z
    
    git checkout novacustom_v560tu_vX.Y.Z
    
    git checkout novacustom_ns5x_adl_vX.Y.Z
    
    git checkout novacustom_nv4x_adl_vX.Y.Z
    
    git checkout novacustom_ns5x_tgl_vX.Y.Z
    
    git checkout novacustom_nv4x_tgl_vX.Y.Z
    
  3. Copy the previously built EC firmware to the coreboot folder:

    cp ../ec/novacustom_v540tu_ec.rom ec.rom
    
    cp ../ec/novacustom_v560tu_ec.rom ec.rom
    
    cp ../ec/novacustom_ns5x_adl_ec.rom ec.rom
    
    cp ../ec/novacustom_nv4x_adl_ec.rom ec.rom
    
    cp ../ec/novacustom_ns5x_tgl_ec.rom ec.rom
    
    cp ../ec/novacustom_nv4x_tgl_ec.rom ec.rom
    
  4. Checkout submodules:

    git submodule update --init --recursive --checkout
    
  5. Start docker container:

    docker run --rm -it -u $UID \
       -v $PWD:/home/coreboot/coreboot \
       -w /home/coreboot/coreboot \
       coreboot/coreboot-sdk:2023-11-24_2731fa619b /bin/bash
    
    • If the build commands ahead fail, try using an older container
      docker run --rm -it -u $UID \
          -v $PWD:/home/coreboot/coreboot \
          -w /home/coreboot/coreboot \
          coreboot/coreboot-sdk:2021-09-23_b0d87f753c /bin/bash
      
  6. Inside of the container, configure the build process:

    make distclean && cp configs/config.novacustom_v540tu .config
    
    make distclean && cp configs/config.novacustom_v560tu .config
    
    make distclean && cp configs/config.novacustom_ns5x_adl .config
    
    make distclean && cp configs/config.novacustom_nv4x_adl .config
    
    make distclean && cp configs/config.novacustom_ns5x_tgl .config
    
    make distclean && cp configs/config.novacustom_nv4x_tgl .config
    
  7. Start the build process:

    make olddefconfig && make
    

This will produce a Dasharo binary placed in build/coreboot.rom.

The binary will not contain a boot splash logo. Refer to logo customization for including one.

Intro

This section presents the crucial steps required to build the Dasharo Heads firmware. For more information, you may also refer to the official Heads building documentation.

Requirements

This guide was verified on Ubuntu 22.04. In practice, any Linux distribution with Docker support should be enough to complete it.

Make sure that you have following packages installed:

Building

  1. Clone Dasharo Heads repository:

    git clone https://github.com/Dasharo/heads.git
    
  2. Navigate to the source code directory and checkout to the desired revision:

    cd heads
    git checkout novacustom_nv4x_adl_v0.9.0
    
  3. Start the build inside the docker container:

    docker run --rm -it -v $PWD:$PWD -w $PWD \
      3mdeb/heads-docker:3.0.1 make BOARD=nitropad-nv41
    

This will produce a Dasharo binary placed in build/x86/nitropad-nv41/dasharo-nitropad-nv41-*.rom.

Install Dasharo firmware

The Dasharo firmware can be flashed in following ways, depending on your situation: