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
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.
- 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)
- Copy the AFU EFI tool and the BIOS binary into your USB drive.
- Boot the device and enter BIOS setup by pressing ESC.
- From Save & Exit, select the USB drive entry (often shown as “UEFI: Built-in EFI Shell” or similar).
- 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.
- Identify the USB filesystem (
- Run the update script:
bios_update.nsh BIOSbinary.XXX
- When the tool reports success, reboot the system.
Method 2 — Linux
- Copy the AFU Linux tool + script and BIOS binary into a folder on the Linux system.
- Open a terminal as root (or use
sudo) andcdto that folder. - 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)
- Make the updater script executable:
chmod +x bios_updater_YYY.sh
- Run the update:
./bios_updater_YYY.sh BIOSbinary.XXX
YYYdepends on 32-bit / 64-bit package.- Ensure both
bios_updater_YYY.shand the correspondingEtaAfuOemLnxXXbinary are present in the folder.
Method 3 — Windows
- Copy the updater tool and the BIOS binary into a folder on the Windows disk.
- Open Command Prompt as Administrator.
cdto the folder with the tools and BIOS file.- Run:
bios_updater_YYY.bat BIOSbinary.XXX
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:
- Open the updater script (
bios_update.nshorbios_updater_YYY.sh) in a text editor. - Append the option
/FDRto the AFU command, for example:
AFUtool /P /N /L /X /FDR
- Save the script and follow the normal update procedure.
- 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.
- Rename the BIOS binary to a simple name (e.g.
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 runlsto 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.
- Make sure you are in the directory that contains the script (
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
- Ensure the script is executable:
-
Missing dependencies / build errors
- Install build tools + kernel headers (example on Debian/Ubuntu):
sudo apt install build-essential linux-headers-$(uname -r)
- Install build tools + kernel headers (example on Debian/Ubuntu):
-
Wrong binary for your architecture
- Use the correct tool:
- 64-bit OS →
EtaAfuOemLnx64 - 32-bit OS →
EtaAfuOemLnx32
- 64-bit OS →
- Use the correct tool:
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.EXEon 64-bit Windows andAFUWIN.EXEon 32-bit Windows.
- Use
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.