Skip to main content

Update BIOS with AFU (AMI Firmware Update)

This guide explains how to update a SECO x86 BIOS using AFU (AMI Firmware Update).

Which products should use this guide?

  • Default for x86 products: use AFU.
  • Exceptions: Coffee Lake and Whisky Lake boards SOM-COMe-BT6-CFL-H (C08) and SOM-COMe-CT6-WHL-U (C55) use the BGT guide instead.

Before you start

warning

Updating BIOS is a critical operation.

  • DO NOT power off, reset the system, or remove AC power while the update is running.
  • The first reboot after flashing may take longer than usual due to internal re-initialization steps.
  • Use only BIOS images provided by SECO for your specific product. Flashing a BIOS image that is not provided by SECO or meant to be used on another product may result in a non-functioning board.
Important notes
  • BIOS downgrade is not supported and is strongly discouraged.
  • Custom “dumped” BIOS images are not supported.

What you need

  • The BIOS binary file to flash (example name: BIOSbinary.XXX).
  • The AFU package for your platform/OS (see below).
  • If using UEFI Shell: a FAT32 USB drive and an UEFI-bootable USB setup. Check the How to create a UEFI-bootable USB Drive guide.
  • Administrator/root privileges for Windows/Linux flashing.

AFU tools included in the package

Depending on your target environment, AFU is distributed as:

  • AfuEfix64.efi (UEFI Shell, 64-bit)
  • EtaAfuOemLnx32, EtaAfuOemLnx64 (Linux 32/64-bit)
  • AFUWIN.EXE, AFUWINx64.EXE (Windows 32/64-bit)

Method 1 — UEFI Shell (also called EFI Shell)

  1. Copy the AFU EFI tool and the BIOS binary into your USB drive.
  2. Boot the device and enter BIOS setup by pressing ESC.
  3. From Save & Exit, select the USB drive entry (often shown as “UEFI: Built-in EFI Shell” or similar).
  4. In the UEFI Shell:
    • Identify the USB filesystem (fs0:, fs1:, …) in the device mapping table (removable disk).
    • Enter the filesystem (example: fs1:).
    • Move to the folder containing the tool and BIOS file.
  5. Run the update script:
bios_update.nsh BIOSbinary.XXX
  1. When the tool reports success, reboot the system.

Method 2 — Linux

  1. Copy the AFU Linux tool + script and BIOS binary into a folder on the Linux system.
  2. Open a terminal as root (or use sudo) and cd to that folder.
  3. Ensure dependencies are installed. You need gcc/build tools and the kernel headers for your running kernel. For example, in Debian/Ubuntu:
sudo apt install build-essential linux-headers-$(uname -r)
  1. Make the updater script executable:
chmod +x bios_updater_YYY.sh
  1. Run the update:
./bios_updater_YYY.sh BIOSbinary.XXX
note
  • YYY depends on 32-bit / 64-bit package.
  • Ensure both bios_updater_YYY.sh and the corresponding EtaAfuOemLnxXX binary are present in the folder.

Method 3 — Windows

  1. Copy the updater tool and the BIOS binary into a folder on the Windows disk.
  2. Open Command Prompt as Administrator.
  3. cd to the folder with the tools and BIOS file.
  4. Run:
bios_updater_YYY.bat BIOSbinary.XXX
note

Ensure the full package contents are present (script + driver + AFU Windows executable), as provided by SECO.

Special case — Updating BIOS with different PCIe aggregation

AFU can flash a BIOS binary configured with a different PCIe aggregation. To do so:

  1. Open the updater script (bios_update.nsh or bios_updater_YYY.sh) in a text editor.
  2. Append the option /FDR to the AFU command, for example:
AFUtool /P /N /L /X /FDR
  1. Save the script and follow the normal update procedure.
Power-cycle required
  1. At the end of the process perform a full power off (mechanical off / G3 state).
    Do not only reboot, otherwise the strap will not reload and the PCIe configuration may not update.

Troubleshooting

General

  • The system does not boot after the update

    • Wait a few minutes: the first boot can be slower than usual.
    • Perform a full power cycle (power off, remove power for ~10 seconds, power on).
    • If the board still does not boot, contact SECO support and provide:
      • board PN / SN
      • BIOS package version
      • the exact AFU command/script used
  • Wrong BIOS image

    • If you flashed an image not intended for your exact board/SKU, stop further attempts and contact SECO support.
  • BIOS file name contains spaces

    • Rename the BIOS binary to a simple name (e.g. BIOS.ROM) and update the command accordingly.

UEFI Shell

  • USB not visible / no fs0: listed

    • Ensure the USB drive is FAT32.
    • Plug the USB drive into a different port (preferably a USB 2.0 port if available).
    • Reboot and enter the UEFI Shell again; use the mapping table to locate the removable disk.
  • You are in the wrong filesystem

    • In the mapping table look for the entry marked as Removable HardDisk.
    • Try fs0:, fs1:, etc. and run ls to confirm you can see your files.
  • “Command not found” when running the script

    • Make sure you are in the directory that contains the script (bios_update.nsh) and the AFU binary.
    • If needed, run with a relative path, e.g. \bios_update.nsh BIOSbinary.XXX.

Linux

  • Permission denied / cannot run script

    • Ensure the script is executable: chmod +x bios_updater_YYY.sh
    • Run as root: sudo ./bios_updater_YYY.sh BIOSbinary.XXX
  • Missing dependencies / build errors

    • Install build tools + kernel headers (example on Debian/Ubuntu):
      • sudo apt install build-essential linux-headers-$(uname -r)
  • Wrong binary for your architecture

    • Use the correct tool:
      • 64-bit OS → EtaAfuOemLnx64
      • 32-bit OS → EtaAfuOemLnx32

Windows

  • The updater fails unless run as Administrator

    • Right click Command PromptRun as administrator.
  • Antivirus / Endpoint blocks the tool

    • Temporarily whitelist the folder containing AFU and the BIOS package (company policy permitting).
  • Wrong AFU executable

    • Use AFUWINx64.EXE on 64-bit Windows and AFUWIN.EXE on 32-bit Windows.

PCIe aggregation / strap change does not apply

  • If you updated a BIOS meant to change PCIe aggregation (using /FDR) but the system looks unchanged:
    • Perform a full power off into G3 (remove power / mechanical off) rather than a simple reboot.