Using Network Manager to setup a wifi connection is quick and automatic once the configuration is in place. Install the Wi-Fi card and make sure the device shows up in your Linux system with:
lspci
*******************
00:1e.0 SD Host controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series SDIO Controller (rev 0d)
00:1f.0 ISA bridge: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series Low Pin Count Interface (rev 0d)
00:1f.1 SMBus: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series SMBus Controller (rev 0d)
01:00.0 Network controller: Qualcomm Atheros QCA986x/988x 802.11ac Wireless Network Adapter
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
*******************
The Qualcomm 900vx wifi module we have plugged in here shows up as expected. If that is not the case, make sure that the card is properly seated, pin-compatible and that the host system has correct drivers installed!
What drivers are being utilized can be found using the index in the previous code snippet:
sudo find /sys | grep drivers.*01:00.0
/sys/bus/pci/drivers/ath10k_pci/0000:01:00.0
Here we see that the device is using the kernel built-in wifi driver ath10k which is compatible 524wifi 900VX Pro+ module used here.
Next step is to check that NM finds the device:
sudo nmcli
wlp1s0: unavailable
“Qualcomm Atheros QCA986x/988x”
wifi (ath10k_pci), 04:F3:21:4F:0A:A2, sw disabled, hw, mtu 1500
Here it is found by NM but in disabled state, activate it using:
sudo nmcli radio wifi on //activate wifi
wlp1s0: disconnected
“Qualcomm Atheros QCA986x/988x”
0 connections available
wifi (ath10k_pci), 04:F3:21:4F:0A:A2, hw, mtu 1500
sudo nmcli dev wifi //lists available wifi access points
sudo nmcli dev wifi connect 'SSID' password 'password' //connect to a network/access point
To setup an automatic connection instead of manual direct-connect follow the below steps:
nmcli con add con-name 'wifi' ifname 'wlp1s0' type wifi ssid 'SSID'
nmcli con modify 'wifi' wifi-sec.key-mgmt 'wpa-psk' //Add security layer matching the access point
nmcli con modify 'wifi' wifi-sec.psk 'password' //Add the access point password to the connection
nmcli con up 'wifi'//Activate the connection
nmcli dev set 'wlp1s0' autoconnect yes //Set connection to autoconnect
There are also a number of different settings that can be changed to your liking. Below you can see an example of how to set which band an existing connection should use:
nmcli connection edit wifi
goto wifi //Access general wifi settings
goto band //Access band settings
set a //Sets the band to 5GHz
save //Persistent save
quit //Quit the interactive terminal
sudo systemctl restart network-manager //Restart to apply settings
More information available at: https://wiki.archlinux.org/title/NetworkManager#nmcli_examples
Note: Tested on Ubuntu 22.04 kernel 5.19