Skip to content

Build add intelundi

Jake Garver edited this page Jan 2, 2026 · 7 revisions

Building with the IntelUndi 30.5 driver

The IntelUndi 30.5 driver is known to work with versions of NVIDIA UEFI uefi-202512.0 and later. For versions before uefi-202512.0, please refer here.

The IntelUndi driver supports the 500 series NICs used on the Tegra platform. NVIDIA cannot distribute this driver, so it is not included by default. These instructions outline how to download, unpack, and add the driver to the build.

Download

The driver must be downloaded from Intel. Version 30.5 has been verified, but newer versions may work.

Download PREBOOT.zip here.

  • Note: The Linux download does not contain the required files. Be sure to download for Windows, even if building on Linux.

Unpack

We'll unpack PREBOOT.zip into a temporary directory and then create "edk2-intelundi".

The following instructions assume a workspace has already been created using the build instructions.

# Unpack PREBOOT.zip into a temporary directory
cd /path/to/workspace
mkdir IntelUndi
cd IntelUndi
unzip /path/to/PREBOOT.zip
cd -

# Fix permissions on APPS directory
chmod 755 IntelUndi/APPS/EFI

# Unpack the driver XGig driver
mkdir -p edk2-intelundi/XGigUndiDxe/IntelUndiPkg
cd edk2-intelundi/XGigUndiDxe/IntelUndiPkg/
unzip ../../../IntelUndi/APPS/EFI/OPENSRC/XGigUndiDxe.zip
cd -

# Unpack the i40e driver
mkdir -p edk2-intelundi/i40eUndiDxe/IntelUndiPkg
cd edk2-intelundi/i40eUndiDxe/IntelUndiPkg/
unzip ../../../IntelUndi/APPS/EFI/OPENSRC/i40eUndiDxe.zip
cd -

# Unpack the Gig driver
mkdir -p edk2-intelundi/GigUndiDxe/IntelUndiPkg
cd edk2-intelundi/GigUndiDxe/IntelUndiPkg/
unzip ../../../IntelUndi/APPS/EFI/OPENSRC/GigUndiDxe.zip
cd -

Patch

The following patch should be applied to avoid an ASSERT in I40eUndi after ExitBootServices. This fix may be included in future versions of the driver. In that case, this step is no longer necessary.

cd edk2-intelundi

# Convert line-endings for patch
FILE="i40eUndiDxe/IntelUndiPkg/I40eUndiDxe/I40e.c"
cp "$FILE" "$FILE.bak"
tr -d '\r' < "$FILE" > "$FILE.lf"

# Patch the file
patch "$FILE.lf" <<'EOF'
diff --git a/i40eUndiDxe/IntelUndiPkg/I40eUndiDxe/I40e.c b/i40eUndiDxe/IntelUndiPkg/I40eUndiDxe/I40e.c
index 7f266e2..fb74af2 100644
--- a/i40eUndiDxe/IntelUndiPkg/I40eUndiDxe/I40e.c
+++ b/i40eUndiDxe/IntelUndiPkg/I40eUndiDxe/I40e.c
@@ -1394,6 +1394,7 @@ I40eShutdown (
 Exit:
   switch (Status) {
   case EFI_SUCCESS:
+  case EFI_NOT_STARTED:
     PxeStatcode = PXE_STATCODE_SUCCESS;
     break;

EOF

# Convert patched file back to CRLF
sed 's/$/\r/' "$FILE.lf" > "$FILE"

# Clean up
rm "$FILE.lf"
cd -

Build

Before building the following environment must be set. Add the following to edk2-nvidia/Platform/NVIDIA/Tegra/build.sh prior to the "Prepare and build" steps:

STUART_BUILD_OPTIONS+=" --verbose"
STUART_BUILD_OPTIONS+=" --insert-packages-path edk2-intelundi/XGigUndiDxe"
STUART_BUILD_OPTIONS+=" --insert-packages-path edk2-intelundi/i40eUndiDxe"
STUART_BUILD_OPTIONS+=" --insert-packages-path edk2-intelundi/GigUndiDxe"
STUART_BUILD_OPTIONS+=" BLD_*_ENABLE_INTELUNDI=1"
export STUART_BUILD_OPTIONS

Once added, the Tegra platform can be built as normal.

Clone this wiki locally