Connecting to WiFi using nmcli
I am perfectly aware most of you know how to do this, but as I tried to connect my Raspberry PI 4 server to WiFi using the command line, standing there in front of the terminal I realized I have no idea how to do it. You see when your default network server connection is wired, you just plug it in and everything is configured to make it work like magic. Not so with WiFi, the sole reason being you need to select the WiFi network and enter the access credentials.
So let’s see how to do that using Fedora Server 36. For now, Fedora Server still uses Network Manager to configure network connections. I am indeed hoping it will soon be replaced by
systemd-networkd but until then, we need to get acquainted with
nmcli, the console command tool for Network Manager.
Basic wifi connection
To cut it short, I will just drop the connection line. At least in Fedora Server 36 everything is ready to connect so you won’t need any extra commands:
#sudo nmcli dev wifi connect "network" password "password"
So for example if the WiFi network is called
/dev/null and the password is
letmein, we would write:
#sudo nmcli dev wifi connect "/dev/null" password "letmein"
That’s all we need to know to connect. As good news, the changes we make with
nmcli are automatically persisted in Network Manager, so next time we boot the WiFi network will connect automatically. There is one more option if you don’t want to just write the network password in the command line:
#sudo nmcli --ask dev wifi connect "/dev/null"
The above command will ask for the password instead of receiving it as a command line parameter so it won’t be saved in the bash history.
Other useful nmcli options
Besides connecting to WiFi, nmcli allows us to manage many useful network options. To remain in the WiFi area, we can check the WiFi radio using
nmcli radio which will give us the WiFi status:
If we want to enable or disable WiFi we can simply say
nmcli radio wifi on or
nmcli radio wifi off. If we want to list all available WiFi networks, we can use
nmcli dev wifi list:
We can also get a full network device status using
nmcli dev status:
The above shows us all the installed network devices and their connection. We can see
eth0 is unavailable which means there is no cable connected to it, and
wlan0 is connected to the
/dev/random WiFi network. Also, since Network Manager persists all settings and connections, we can see all the saved network connections using
nmcli con show:
The above output indicates that even though there is no wired connection at this point, there was one present and it was saved under
Wired connection 1. We know the connection is not working though as it is not assigned to any device. Now that we have the network identifiers, we can use
nmcli con up and
nmcli con down giving the required UUID or name to turn the connection on and off.
I didn’t intend for this article to be long, nor exhaustive. It’s just a remainder of the simple
nmcli command to connect to a WiFi network. Maybe in the future Fedora will switch to
systemd-networkd which has a more systemd kind of configuration available. But until then, I hope this will be useful to you. Thanks for reading and see you next time!