This guide provides the steps to build and activate the iwlwifi module needed by the Intel 8265NGW module natively on a headless Jetson Orin Nano running JetPack 7.2 (Kernel 6.8 / Ubuntu 24.04.4 LTS environment).
The steps below (except for the single one noted) are performed using an SSH terminal to the headless Jetson Orin Nano. So, the first step is actually to SSH to the Jetson (which is currently using a wired connection).
Step 1: Install Build Utilities on the Jetson
Ensure the headless Jetson has the compiler packages required to build kernel modules:
sudo apt update
sudo apt install -y build-essential libncurses-dev bison flex libssl-dev libelf-dev zstdStep 2: Download the BSP Sources on a Host Computer
Because NVIDIA restricts raw terminal downloads, download the package using a desktop web browser:
- Go to the official NVIDIA JetPack Archive.
- Click on JetPack 7.2 / Jetson Linux 39.x.
- Scroll to Source Packages (way down the page) and download Driver Package (BSP) Sources (saves as public_sources.tbz2).
Step 3: Transfer and Extract Sources on the Jetson
From the Host Computer, securely transfer the archive to the Jetson:
scp ~/Downloads/public_sources.tbz2 username@jetson_ip:~/
(Replace username and jetson_ip with the Jetson's specific details).Switch back to the Jetson Terminal and extract the source tree:
mkdir -p ~/jetson_kernel && cd ~/jetson_kernel
tar -xjf ~/public_sources.tbz2
cd Linux_for_Tegra/source
tar -xjf kernel_src.tbz2Step 4: Configure the Kernel Modules
Navigate directly into the Noble kernel source directory:
cd ~/jetson_kernel/Linux_for_Tegra/source/kernel/kernel-nobleExtract the running system configuration footprint directly from memory:
zcat /proc/config.gz > .configNote: It is important to use .config as the name, as this is used by the kernel build processes.
Get the kernel version string:
sudo uname -rOpen .config and edit to match the kernel version suffix and force enable the wireless drivers:
vi .configSearch for CONFIG_LOCALVERSION (using /CONFIG_LOCALVERSION). If it is empty "" or doesn't match, change it to match the final two portions of the uname -r string (using i or c2" and then ESC):
CONFIG_LOCALVERSION="-1021-tegra"
Note: This is the version on my Jetson. Use the output from the uname -r command performed above.
Press G to jump to the very bottom of the file, press i, and insert the required options:
CONFIG_WIRELESS=y
CONFIG_CFG80211=m
CONFIG_MAC80211=m
CONFIG_IWLWIFI=m
CONFIG_IWLMVM=m
CONFIG_IWLWIFI_LEDS=y
Press Esc, type :wq and hit Enter or ZZ to save and exit.
Reconcile the changes against the build framework (press Enter to accept defaults for any prompt about updates/additions):
make oldconfigStep 5: Compile and Install the Modules
Build the drivers natively using all available CPU threads on the Orin Nano (these steps take quite a while, so be patient):
make -j$(nproc) modules
sudo make modules_install
sudo depmod -a(Note: It is safe to ignore any automated missing System.map file warnings at the end of the module install step).
Step 6: Deploy and Decompress the Firmware
Download the official Ubuntu firmware repository tree to populate the /lib/firmware directory:
sudo apt update
sudo apt install --reinstall linux-firmwareBecause JetPack 7's kernel cannot natively read compressed .zst firmware files, navigate to the system directory and manually unpack the raw binary blobs required by the Intel card:
cd /lib/firmware
sudo unzstd iwlwifi-8265-34.ucode.zst
sudo unzstd iwlwifi-8265-36.ucode.zstStep 7: Load Driver and Connect to Network
Clear any conflicting runtime loops, initialize the fresh driver stack, and unblock the radio:
sudo rmmod iwlmvm iwlwifi 2>/dev/null
sudo modprobe iwlwifi
sudo rfkill unblock allVerify the hardware has generated a predictable interface identifier (e.g., wlP1p1s0):
ip link showBring the hardware link administratively up and authenticate the Jetson securely to the Wi-Fi router:
sudo ip link set wlP1p1s0 up
sudo nmcli device wifi connect "WIFI_NAME" password "WIFI_PASSWORD"Verify the assigned wireless IP address:
ip addr show wlP1p1s0Assuming the last command returned an IP address, the Wifi is connected. It will reconnect on reboot and power-on.
To verify, reboot the Jetson and reconnect using the Wifi.
sudo reboot nowThis will disconnect the current session. Wait long enough for the Jetson to reboot and then try connecting using the IP address assigned to the Wifi (returned above). You can now disconnect the wires to the Jetson and use it untethered.