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 Prompt → Run 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.