Intel(R) Ethernet Flash Firmware Utility
========================================
October 23, 2020

CONTENTS
========
- OVERVIEW
- RUNNING THE UTILITY
- COMMAND LINE OPTIONS
- EXAMPLES
- EXIT CODES
- INSTALLATION
- CUSTOMER SUPPORT
- LEGAL


OVERVIEW
========
The Intel(R) Ethernet Flash Firmware Utility (BootUtil) is used to update
configurations and program the PCI option ROM on the flash memory of supported
Intel PCI and PCI-Express-based network adapters.
BootUtil replaces existing utilities and provides the functionality of the
older IBAUTIL, ISCSIUTL, LANUTIL, and FLAUTIL. BootUtil supports all the
adapters supported by the previous utilities.

NOTES:
- Updating the adapter's flash memory using BootUtil will erase any existing
firmware image from the flash memory.
- If your device is flashed with a discrete FCoE firmware (no other Option ROMs
flashed), attempts to update your device will fail. This is expected. The data
required for FCoE functionality upgrades is no longer part of the latest
upgrade packages. The update will fail and FCoE functionality will continue to
work.
- If you update a device that is flashed with an FCoE-enabled combo image (for
example, an image that contains the EFI driver, legacy PXE, and FCoE boot
functionality), the Option ROM combination will change on update, usually to
the same combination without FCoE capabilities. This is expected. The data
required for FCoE functionality upgrades is no longer part of the latest
upgrade packages. The update will succeed and FCoE functionality will be
removed from your device.

Intel provides the following flash firmware in FLB file format for programming
to the flash memory:

- Intel(R) Boot Agent as PXE Option ROM for legacy BIOS
  http://www.intel.com/support/network/adapter/pro100/bootagent/
- Intel(R) iSCSI Remote Boot as iSCSI Option ROM for legacy BIOS
  http://www.intel.com/support/network/iscsi/remoteboot/
- Network Connectivity, UEFI network driver
  http://www.intel.com/support/network/sb/cs-006120.htm

OEMs may provide custom flash firmware images for OEM network adapters. Please
refer to the instructions given by OEMs.

BootUtil allows the user to flash supported firmware to the adapter from the
included BootIMG.FLB file. This option ROM includes PXE, UEFI, and iSCSI
drivers, and the image is programmed to the flash memory at once. BootUtil will
also build the required combo images for supported adapter and program those
images to the flash, as well. Since both discrete and combo images are
supported, the -BOOTENABLE command ONLY works on combo images.

PXE+EFI and iSCSI+EFI image combinations are supported for all OEM generic
adapters, however support is limited to devices which support both technologies
as discrete images. However, flash size is a limiting factor, as the image size
can change without notice.

The BOOTIMG.FLB file is the container for all the Intel(R) boot Option ROMs.
This file replaces the existing FLB files for PXE, EFI, and iSCSI.

BootUtil without command-line options will display a list of all supported
Intel network ports in the system. BootUtil will also allow the user to enable
or disable the flash memory on specific ports by using -FLASHENABLE or
-FLASHDISABLE options in order to control access to the firmware from the
system.

BootUtil allows the user to individually set iSCSI, UEFI and PXE boot
configurations by -NIC=xx -<OPTION>=<VALUE> options. The -I option is iSCSI
specific and will not work for PXE configurations.

NOTES:
* BootUtil displays up to 128 adapter ports.
* No configuration settings are supported for the UEFI driver.
* -NIC, -MACADDR, and -DEVID are mutually exclusive. You cannot use more than
one of these options per command. Specifying more than one option will cause
BootUtil to fail.
* You cannot enable/disable 64-bit BAR addressing on Intel(R) Ethernet
Controller X550 Series devices.
* BootUtil may indicate that a device is in the "Pending Reboot" state. No
update or configuration changes are possible on a device in this state. Please
reboot your system.

Check the Intel Customer Support (http://support.intel.com) website for the
latest information and component updates.

NOTE: If the tool displays the error: "Unable to load the driver. Please close
all other applications and try again", you have a mix of old and new versions
of the utility tool on your system. Quit all open applications and retry your
operation. If the issue persists:
Download the latest version of the utility tools
Run the uninstall script to remove the old version of the tool driver
Run the install script from the downloaded tools package
Retry your operation
You may also need to download and install the latest Intel Ethernet
driver/PROSet package for your device.


RUNNING THE UTILITY
===================
Using the "/?" option will display a list of supported command line options.
The syntax for issuing BootUtil command-line options is:
BOOTUTIL -[OPTION] or -<OPTION>=<VALUE>


COMMAND LINE OPTIONS
====================
BootUtil accepts one executable option and its associated non-executable
options in an execution. If conflicting executable options are specified,
BootUtil exits with an error.

The options, where applicable, are listed in logical groups.

NOTE: If you run BootUtil without any command-line options, the utility
displays a list of all supported Intel network ports found in the system.


GENERAL OPTIONS:
-? or -HELP
Displays a list of command-line options.
-ALL
Selects all supported network ports found in the system.

-64d
Disables 64-bit BAR (Base Address Register) addressing on the selected port.
This restricts the system BIOS to assigning 32-bit BARs to the port.

-64e
Enables 64-bit BAR addressing on the selected port.

-BLINK
Blinks the LED on the selected port for ten seconds.

-DEVID=[Device ID]
Selects the network port specified by [Device ID]. [Device ID] is a 4 digit
hexadecimal number, prepended by 0x.

-EXITCODES
Displays exit codes returned to the OS environment by BootUtil.

-E
Enumerates all supported network ports in the system.

-FILE=[FILENAME]
Specifies the file name for -SAVEIMAGE, -RESTOREIMAGE, -SAVECONFIG,
-RESTORECONFIG, -UP or -UPDATE options.

-I=[FILENAME]
Reads iSCSI boot configuration options from [FILENAME] script file and program
settings on the selected port.

-IMAGEVERSION or -IV
Displays the firmware image type and version number from the specified source.
If no source is specified, displays the image type and version number from the
local BootIMG.FLB file. Use -FILE to specify a different file. Use -NIC to
specify a port. Use -ALL to display the firmware image types and version
numbers of images loaded onto all ports in the system. If a port does not have
an image loaded, or is not an Intel® Ethernet port, the port will not be
included in the -ALL output.

-MACADDR=[MAC address string]
Selects the network port specified by [MAC address string]. [MAC address
string] is a 12 digit number. Separators (":" or "-") are allowed but not
required.

-NIC=XX
Selects a specific network port in the system. If used without any executable
option, it prints the iSCSI boot configuration of the selected port, or saves
it in the file when the -O option is used.

-NODPL
With command, BootUtil does not display the PCI device location.

-O=[FILENAME]
Must be used with -E or -NIC. If used with the -E option, saves a list of all
NICs and their MAC addresses to the specified file. If used with the -NIC
option, saves all iSCSI Remote Boot configuration options for the specified NIC
to the specified file.

-P
With this command, BootUtil pauses screen after displaying every 25th line. In
pause mode, last line of the screen will contain information that:
  - screen has been paused, and
  - user can press Enter to continue


POWER MANAGEMENT OPTIONS:

-WOLENABLE or -WOLE
Enables Wake On LAN (WOL) functionality on the selected port.

-WOLDISABLE or -WOLD
Disables Wake On LAN (WOL) functionality on the selected port.


ADAPTER FLASH ENABLE/DISABLE OPTIONS:

-BOOTENABLE=[PXE, ISCSIPRIMARY, ISCSISECONDARY, or DISABLED]
Selects flash firmware type to enable or disable on the selected port. The
combo option ROM could have all capabilities. The monolithic option ROM has
either PXE or iSCSI capability but not all. This command will NOT WORK on
monolithic Option ROMs.

NOTE: This manual command is not applicable to the UEFI network driver. The UEFI
    network driver is enabled by default and loaded automatically unless network
    ports are already used by other flash firmware.

  BOOTENABLE=DISABLED
  Disables iSCSI and PXE functionalities for legacy BIOS.

  BOOTENABLE=ISCSIPRIMARY
  Enables port as iSCSI primary and disables PXE for legacy BIOS.

  BOOTENABLE=ISCSISECONDARY
  Enables port as iSCSI secondary and disables PXE for legacy BIOS.

  BOOTENABLE=PXE
  Enables PXE and disables iSCSI boot for legacy BIOS.

-FLASHENABLE or -FE
Enables the capability to run flash firmware on the selected adapter.

NOTE: This parameter is not supported on the following adapters:
  - Intel(R) Gigabit ET Quad Port Mezzanine Card
  - Intel(R) Ethernet X520 10GbE Dual Port KX4 Mezz
  - Intel(R) Ethernet X520 10GbE Dual Port KX4-KR Mezz

-FLASHDISABLE or -FD
Disables the capability to run flash firmware on the selected adapter.

NOTE: This parameter is not supported on the following adapters:
  - Intel(R) Gigabit ET Quad Port Mezzanine Card
  - Intel(R) Ethernet X520 10GbE Dual Port KX4 Mezz
  - Intel(R) Ethernet X520 10GbE Dual Port KX4-KR Mezz


FLASH PROGRAMMING OPTIONS:

-QUIET
Runs BootUtil without confirmation prompts. This option is used with
-IMAGEVERSION, -UP, -UPDATE, -RESTOREIMAGE, or -HELP option.

-RESTOREIMAGE or RI
Restores a previously-saved firmware image to the same network adapter using
the -NIC option. The source file is specified by the -FILE option.

-SAVEIMAGE or SI
Saves the existing firmware image in the flash memory of the adapter specified
by the -NIC option to a disk file. The destination file is specified by the
-FILE option.

-UP or -UPDATE=[ROMType] [-FILE=Filename]
Updates the flash memory of the adapter specified by the -NIC option with the
given FLB flash firmware image file. If -QUIET is not specified, the user is
prompted to confirm overwriting the existing firmware image before upgrading.
If a Filename is not provided, the utility looks for the default <bootimg.FLB>
file which contains all image types.

The following examples use PXE, but could also be efi, efi64 or iSCSI.
  Bootutil -Nic=x -up=pxe
  Bootutil -Nic=x -up=pxe -file=pxeimg.flb

If your adapter supports a combo option rom, the following command option
automatically detects the supported combo image and programs the adapter with
that image.
  -up=combo
    up=pxe+efi and up=iscsi+efi are valid.


PXE BOOT CONFIGURATION OPTIONS: (Can be used with -NIC or -ALL)

-DEFAULTCONFIG or -DEFCFG
Sets the PXE configuration of the selected NIC back to default settings.

-MODE
This parameter should not be used except as advised by Intel Support personnel.

-TITLEENABLE OR -TLE
Enables Initial Title Message.

-TITLEDISABLE OR -TLD
Disables Initial Title Message.


ISCSI BOOT CONFIGURATION OPTIONS:

-RESTORECONFIG
Restores previously-saved iSCSI boot configuration snapshot on the selected
port. Use the -FILE option to specify the saved data.

WARNING: This feature may create multiple primary or secondary ports if the
same command is issued to multiple ports. Review the boot priority setting in
the iSCSI setup menu for the next system boot.

-SAVECONFIG
Saves a snapshot of iSCSI boot configurations on the selected port to a binary
file. Need to specify the file name by the -FILE option. WARNING: For security
reasons it is recommended that CHAP settings are disabled when using this
option.


PORT CONFIGURATION OPTIONS FOR ISCSI INITIATOR:

These options can either be used individually with the -NIC=XX option, or in a
script file with the -I option. The value is specified in -<OPTION>=<VALUE>
format.

-BOOTPRIORITY
Specifies iSCSI boot priority as PRIMARY, SECONDARY or DISABLE.

-GATEWAY
Specifies the gateway IPv4 address in dotted decimal notation.

-INITIATORDHCP
Enable or disable to get initiator configuration from DHCP.

-INITIATORIP
Specifies the initiator IPv4 address in dotted decimal notation.

-INITIATORNAME
Specifies the iSCSI Qualified Name (IQN) for the initiator.

-NETMASK
Specifies the initiator subnet mask in dotted decimal notation.


ISCSI TARGET CONFIGURATION OPTIONS:
These options can either be used individually with the -NIC=XX option, or in a
script file with the -I option. The value is specified in -<OPTION>=<VALUE>
format.

-BOOTLUN
Specifies the LUN number to boot from.

-TARGETDHCP
Enable or Disable to get the target information from DHCP Root Path.

-TARGETIP
Specifies the target IPv4 address in dotted decimal notation.

-TARGETNAME
Specifies the iSCSI Qualified Name (IQN) for the target.

-TARGETPORT
Specifies the TCP port number on the target to connect to.


AUTHENTICATION CONFIGURATION OPTIONS:
These options can either be used individually with the -NIC=XX option, or in a
script file with the -I option. The value is specified in -<OPTION>=<VALUE>
format.

-AUTHENTICATIONMETHOD
Specifies either NONE, CHAP or MUTUALCHAP.

-CHAPUSERNAME
Specifies CHAP user name

-CHAPSECRET
Specifies a secret text string to go with the CHAP user name. (secret must be
12 to 16 characters long)

-MUTUALCHAPSECRET
Specifies the reverse (target) CHAP secret text string. (secret must be 12 to
16 characters long)

The CHAP Authentication feature of this product requires the following
acknowledgements: This product includes cryptographic software written by Eric
Young (eay@cryptsoft.com). This product includes software written by Tim Hudson
(tjh@cryptsoft.com) This product includes software developed by the OpenSSL
Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)


EXAMPLES
========
The following examples show how to enter some typical BootUtil command lines:

Example: To enable the flash firmware on the first network adapter for the
system to be capable of executing the flash firmware.
  BootUtil -NIC=1 -FLASHENABLE

Example: To disable the flash firmware on all the network adapters.
  BootUtil -ALL -FD

Example: To display BootUtil FLB flash firmware types and versions.
  BootUtil -IMAGEVERSION

Example: To update all ports of a supported NIC with PXE.
  1. BootUtil -UP=PXE -ALL (Assumes input file is bootimg.flb)
  2. BootUtil -UP=PXE -ALL -FILE=BOOTIMG.FLB (explicit user specified file)

Example: To update a combo image on supported adapter (eg, pxe+iscsi)
  1. BootUtil -UP=Combo -NIC=2 -FILE=BOOTIMG.FLB

The above command will succeed if the PXE+ISCSI combination is supported on
NIC #2. If not an error is displayed to the user.

NOTE: THE -UP and -UPDATE commands are equivalent and interchangeable.

Example: To enable PXE firmware on the third network port in the system.
  BootUtil -BOOTENABLE=PXE -NIC=3

NOTE: This command will work only if PXE is part of a combo Option ROM and
not a discrete Option ROM.

Example: To disable the firmware on the second network port in the system.
  BootUtil -NIC=2 -BOOTENABLE=DISABLED

Example: To get help descriptions.
  BootUtil -?

Example: To enable DHCP for the iSCSI initiator on all the network ports in the
system.
  BootUtil -INITIATORDHCP=ENABLE -ALL

Example: To load the iSCSI boot configurations from a text script file to the
first network port.
  BootUtil -I=CONFIG.TXT -NIC=1


EXIT CODES
==========
BootUtil returns an exit code to the OS environment. Possible exit codes are
listed below:
Code Name                                      Value
----------------------------------------------+-----
All BootUtil operations completed successfully   0
Bad command-line parameter                       1
No supported network port detected               2
Invalid network port selected                    3
FLASH operation failed                           4
EEPROM read operation failed                     5
EEPROM write operation failed                    6
File content is missing or corrupt               7
Operator termination                             8
LOM not supported for selected operation         9
Network port is not bootable                    10
FLASH memory is disabled for flash firmware     11
FLASH memory too small for selected firmware    12
Programming iSCSI boot configurations failed    13
System memory allocation failed                 14
File operation failed                           15

NOTE: EFI versions of this tool may report an incorrect error code when no
adapter is installed. This is due to a known limitation in the UDK2015 UEFI
Development Kit (UDK) build environment.


INSTALLATION
=============


Installing the tool on Microsoft* Windows*
------------------------------------------
To install the tools' drivers on Windows, run install.bat from the appropriate
directory of the install package.

Although the tool are not installed with install.bat, the driver that the tool
requires is copied into the local machine Windows driver directory. To run the
tool, launch a Command Prompt window from the Windows Start Menu. Go to the
media and directory where the tool is located and run the utility. The readme
files for each tool are found in the same directory as the tool. These tools
can be manually installed on the local hard drive in any directory.

The tool uses its own driver file (not the same as the system network driver).
If the driver sys file already exists in the drivers directory, install.bat may
fail to copy. Using the /y switch with install.bat will override and copy the
driver file regardless. However, this can be dangerous if an older version of
the driver is being used by another application such as Intel(R) PROSet for
Windows Device Manager. If a driver is already present in the drivers
directory, try running the tool from the command prompt. If it runs, then the
driver is fine. The tool will not run if the driver version present does not
match the driver version expected.

Note that you must have access to the %systemroot%\system32\drivers directory.
Only the administrator account has these privileges. You must be logged in as
administrator or the tools must be run as administrator.

Note that on Windows, any device that is disabled in device manager will not be
accessible by tools due to no memory resources. You would get an error code
0xC86A800E. To solve this problem, you can do one of the following:
1) Re-enable the device in device manager. Never disable this device when
   using tools.
2) Install an NDIS device driver for the device and make sure that it does
   not have a yellow or red bang by it in device manager.
3) Delete the device from device manager and restart the system. The install
   new hardware wizard should appear on next reboot. Do not cancel this. Just
   move the window aside and run the tool(s). Generally, you can click "cancel"
   on the wizard but there are some cases where Windows will disable the memory
   resources causing you to get back into the same state.


Installing the tool on EFI
--------------------------
The EFI 1.x tools are not supported in this release.

There is no installation required for EFI tools. The tools can simply be copied
from the appropriate directory to the drive that they will run from. The EFI2
binaries are for use with the UEFI Shell 2.X with the UEFI 2.3 HII protocol.
EFI2 tools will not run on the EFI Shell 1.X or if the UEFI 2.3 HII protocol is
not present.

Note that while EFI supports USB drives, there may be issues running tools from
the USB drive. Whether or not there are issues are BIOS specific. If you
experience issues, run the tool from hard disk instead.


Installing the tool on DOS
--------------------------
This tool no longer supports DOS. If you require DOS support, please download a
prior version.


Installing the tool on Linux*
-----------------------------
In order to run tools on Linux*, a driver stub must be built and installed on
the system. This driver is not related to the network device driver that is
used to run the network during live traffic. It is a separate driver used
explicitly for tools. Due to the nature of Linux with the number of kernels
that can exist, we provide source for the driver module and an install script
to build/install it.

The tools support Linux distributions based on kernels 2.6.x. Validation is
done randomly on popular distributions such as Red Hat* or Suse*. Configured
kernel source that matches the currently installed kernel is required. A
working GCC is also required. There are some versions of GCC that had a bug
which did not support unnamed structures. These versions of GCC are not
supported. If you have compilation errors, try updating your version of GCC. If
you have linker errors when installing the driver, you should update your
kernel - download the latest stable off www.kernel.org and build/install it.

Note that some distributions such as recent Fedora core versions do not ship
with Kernel source. You must download, install, and configure the source in
order to get the tools' driver built on this OS. Installing the kernel source
RPM does not solve the problem.

This is the installation procedure:
  1. Log in as root and create a temporary directory to build the Intel(R)
     Network Connection Tools driver.
  2. Copy 'install' and 'iqvlinux.tar.gz' to the temporary directory.
     There are 2 versions of Linux supported: Linux32 (x86)and Linux_x64 (x64).
     Copies of the above files exist in the appropriate directory for your
     platform.
  3. CD to the temporary directory and run './install.' The driver has been
     installed now, so the files in the temporary directory can be removed.
  4. Copy the tools that you want to use from the appropriate directory of
     the CD.

On kernel 4.16 or higher, ensure iomem parameter set to relaxed
---------------------------------------------------------------
On Linux* kernel 4.16 and higher, the iomem parameter is set to "strict" by
default, which may prevent the tool from accessing the MMIO of the device.
Trying to update a device when "strict" is set causes the device to lose link
during the update process.

NOTE: You must have the base drivers loaded for all Intel Ethernet devices in
your system. Failure to do so may result in a 'Flash Not Present' error.

If you wish to update a device without losing link, you can either:
1. Install Linux base drivers (igb or ixgbe) from Release 24.1, or newer.
2. Set the iomem kernel parameter to "relaxed" (i.e., iomem=relaxed) and reboot
the system before running the update utility.


INSTALLING THE TOOLS ON ORACLE* SOLARIS*
---------------------------------------
Iqvsolaris is a separate driver used explicitly for tools and is provided only
in binary form. Iqvsolaris driver and tools are provided for 2 different
architectures: 64s for sparc and 64e for x86_64.

In order to run tools on Solaris*, peform the following steps:

  1. Log in as root.

  2. Manually unload the network device driver.

  3. Copy the binary iqv driver to the local machine driver directory by
     running the './install' script.


INSTALLING THE TOOL ON FreeBSD*
------------------------------

In order to run this tool on FreeBSD*, the base driver must be installed on the
system.


CUSTOMER SUPPORT
================
- Main Intel web support site: http://support.intel.com

- Network products information: http://www.intel.com/network


LEGAL / DISCLAIMERS
===================
Copyright (C) 2015 - 2020, Intel Corporation. All rights reserved.

Intel Corporation assumes no responsibility for errors or omissions in this
document. Nor does Intel make any commitment to update the information
contained herein.

Intel and the Intel logo are trademarks of Intel Corporation or its
subsidiaries in the U.S. and/or other countries.

*Other names and brands may be claimed as the property of others.

This software is furnished under license and may only be used or copied in
accordance with the terms of the license. The information in this manual is
furnished for informational use only, is subject to change without notice, and
should not be construed as a commitment by Intel Corporation. Intel Corporation
assumes no responsibility or liability for any errors or inaccuracies that may
appear in this document or any software that may be provided in association
with this document. Except as permitted by such license, no part of this
document may be reproduced, stored in a retrieval system, or transmitted in any
form or by any means without the express written consent of Intel Corporation.


