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 Ubuntusudo 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-*.debReboot and check: uname -r Expected: 6.16.1-... |
| Step 3 | Install latest firmware blobsClone the official linux-firmware repo: cd ~ git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git Intel BE201sudo cp linux-firmware/iwlwifi-*.ucode /lib/firmware/ Qualcomm WCN7850sudo 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 domainThis 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 pointOn the Wi-Fi 7 access point:
|
| Step 6 | Build and install wpa_supplicant ≥ 2.11sudo 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 |
|