Enabling Wi-Fi 7 Multi-Link Operation (MLO) on Ubuntu 24.04 - Step-by-Step Guide

Introduction

Below is a step-by step guide to enabling MLO on Ubuntu 24.04

Wi-Fi 7’s Multi-Link Operation (MLO) lets your device use multiple bands (for example, 5 GHz + 6 GHz) at the same time. This improves throughput and makes the connection more resilient. On Ubuntu 24.04, MLO does not work out of the box because the default software stack is too old. You need to update three layers: Kernel, Firmware, and Supplicant.

See Ubuntu 24.04 - Enabling Wi-Fi 7 MLO for more information details about the host requirement.

Minimum ByteBlower environment requirements: version 2.23 

Lets get started!

Step 1

Update Ubuntu

sudo apt update && sudo apt full-upgrade -y

Reboot when finished.

Step 2

Install a newer kernel (≥ 6.16)

Ubuntu 24.04 ships kernel 6.8, which does not support MLO. Install a mainline kernel:

mkdir ~/kernel && cd ~/kernel
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.16.1/amd64/linux-headers-6.16.1-*.deb \
     https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.16.1/amd64/linux-image-6.16.1-*.deb \
     https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.16.1/amd64/linux-modules-6.16.1-*.deb
sudo dpkg -i linux-*.deb

Reboot and check:

uname -r

Expected:

6.16.1-...
Step 3

Install latest firmware blobs

Clone the official linux-firmware repo:

cd ~
git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git

Intel BE201

sudo cp linux-firmware/iwlwifi-*.ucode /lib/firmware/

Qualcomm WCN7850

sudo mkdir -p /lib/firmware/ath12k/WCN7850/hw2.1/
sudo cp -r linux-firmware/ath12k/WCN7850/hw2.1/* /lib/firmware/ath12k/WCN7850/hw2.1/

Reboot.

Step 4

Set regulatory domain

This allows our devices to use the 6Ghz range.

Edit /etc/default/grub and ensure:

GRUB_CMDLINE_LINUX="... cfg80211.ieee80211_regdom=BE"

Apply and reboot:

sudo update-grub
sudo reboot

Check:

iw reg get

Expected:

country BE: DFS-ETSI
Step 5

Configure the access point

On the Wi-Fi 7 access point:

  • Go to the access point web interface or use its mobile app to configure it.
  • Update the access point firmware to latest release.
  • Enable MLO on a single SSID spanning 5 GHz + 6 GHz. (Disable 2.4Ghz because that might prevent MLO from working.)
  • Security: WPA3-SAE only (disable WPA2).
Step 6

Build and install wpa_supplicant ≥ 2.11

sudo apt install -y build-essential pkg-config libnl-3-dev libnl-genl-3-dev \
  libdbus-1-dev libssl-dev libreadline-dev libpcsclite-dev git

wget https://w1.fi/releases/wpa_supplicant-2.11.tar.gz
tar xf wpa_supplicant-2.11.tar.gz
cd wpa_supplicant-2.11/wpa_supplicant

Create .config file:

cp debconfig .config

Edit .config and make sure the following options are set:

CONFIG_DRIVER_NL80211=y
CONFIG_CTRL_IFACE=y
CONFIG_DBUS=y
CONFIG_CTRL_IFACE_DBUS_NEW=y
CONFIG_CTRL_IFACE_DBUS_INTRO=y
CONFIG_TLS=openssl
CONFIG_SAE=y

Then build and install:

make -j$(nproc)
sudo make install

Replace the distro binary:

sudo mv /usr/sbin/wpa_supplicant /usr/sbin/wpa_supplicant.distro
sudo ln -s /usr/local/sbin/wpa_supplicant /usr/sbin/wpa_supplicant
sudo pkill wpa_supplicant
sudo systemctl restart NetworkManager

Verify:

pidof wpa_supplicant
sudo readlink -f /proc/$(pidof wpa_supplicant)/exe

Expected:

/usr/local/sbin/wpa_supplicant
Step 7

Connect to the MLO SSID

nmcli dev wifi connect deco_mlo




Step 8

Verify MLO is active

iw dev <iface> info

Expected output (abridged):

Interface wlp130s0
  ifindex 6
  addr fc:b0:de:19:65:0b
  ssid deco_mlo
  type managed
  ...
  MLD with links:
   - link ID 1 link addr 7a:42:e7:a1:ec:05
     channel 40 (5200 MHz), width: 80 MHz, center1: 5210 MHz
     txpower 17.00 dBm
   - link ID 2 link addr 0e:06:d2:ef:9e:53
     channel 85 (6375 MHz), width: 320 MHz, center1: 6265 MHz
     txpower 17.00 dBm

Presence of the “MLD with links” section confirms MLO is negotiated.