How to connect Wi-Fi 6E AP over the 6 GHz band with Ubuntu 21.04?

A tutorial about setting up a Ubuntu client to connect the 6E AP with WPA3-Personal security enabled over the 6 GHz band.

Barry Wu
4 min readJul 26, 2021

List the necessary materials need to be prepared:

uname and iwlwifi firmware versions

WPA Supplicant version 2.9 is the default client connection daemon in Ubuntu 21.04, there are some 6E functionalities not ready on 2.9 version. The most important thing is the daemon would lead to the client cannot join the 6 GHz BSS successfully if the BSS is secured with SAE. So, we have to upgrade the WPA Supplicant to the latest version to support these 6E functions, then the client can connect to 6E AP over the 6 GHz band.

wpa_supplicant v2.9

Firstly, try to get the WPA Supplicant 2.10-devel version from the Linux WPA Supplicant Git repository, and the lastest commit is “FILS: Flush external-PMKSA when connection fails without ERP keys”. You might revert the commit to this patch if you have any concern.

/* Change the working path */
cd /home/${username}
/* Download the source code from w1.fi project */
git clone git://w1.fi/hostap.git

Disabled Wi-Fi function in the Ubuntu before building WPA Supplicant, and make sure the working path is correct. In this step, you might encounter some compiling errors about the dependencies for some libraries, such dbus, openssl, …, etc.. Please install those packages, and try to re-make WPA Supplicant to fix these issues. Below gives the CLI commands for reference.

/* Change the working path for wpa_supplicant compiling */
cd /home/${username}/hostap/wpa_supplicant
/* If there is no openssl library in the environment */
apt install libssl-dev
/* If there is no dbus library in the environment */
apt install libdbus-1-dev
/* If there are no nl libraries in the environment */
apt install libnl-genl-3-dev
apt install libnl-route-3-dev
/* Create an default config */
cp defconfig .config
/* Compile and install */
make
make install

In spite of the installation is done, we still have to check WAP Supplicant version under “/usr/sbin/” path, so as to verify whether the installation result meets our expectation or not. Don’t forget to set it as executable program before the below deployment.

/* Get the version */
wpa_supplicnat -v
/* Copy the program */
cp -f hostap/wpa_supplicant/wpa_supplicant /usr/sbin/.
/* Set it to executable */
chmod 755 /usr/sbin/wpa_supplicant
wpa_supplicant v2.10-devel

In the deployment section, we have to generate a configuration for wpa_supplicant program used.

/* Edit the configuration file */
vim /etc/wpa_supplicant/wpa_supplicant.conf
/* An Example */
pmf=2
sae_pwe=1
network={
scan_ssid=1
ssid=”Fill the Wi-Fi SSID here”
key_mgmt=SAE
proto=RSN
ieee80211w=2
sae_password=”Fill the Wi-Fi password here”
pairwise=CCMP
group=CCMP
}

Now, let’s enable Wi-Fi function, and we could try to connect the 6 GHz AP from the scanning list, but it would failed at the authentication stage. That’s the reason why we need the config file. That client cannot finish WPA authentication handshake with the 6E AP over the 6 GHz band without the WPA Supplicant config file.

/* Get the Wi-Fi interface name */
ifconfig -a | grep wlp
/* Feed the config file to wpa_supplicant program */
wpa_supplicant -B -c /etc/wpa_supplicant/wpa_supplicant.conf -i ${ifname}
/* Check the background process, there should be 2 processes */
ps aux | grep wpa

In the final section, please select the 6 GHz SSID form the scanning list first, and then use “dhcleint” command to get IP address from the AP. Also check the routing table, wireless config from the terminal. In addition, it would be better to do some basic verification to make sure the 6 GHz connectivity.

Wi-Fi Scanning List
/* Get the IP address from the DHCP server */
dhclient ${ifname}
/* Basic checking commands */
route
iwconfig ${ifname}
ping 192.168.1.1
Basic Checking

Reference

[1] w1.fi

[2] Linux Wireless

--

--