Configure Ubuntu WiFi Adapter with Netplan
Tags: linux, ubuntu
Published: 2021-09-07 10:08:45

👉 Here's a short explanation of how to configure an Ubuntu machine to join a wireless network, with Netplan.
👉 This is for a wireless network with WPA2 Personal authentication (you need a password).
👉 My test machine is running Ubuntu desktop 21.04.

## 1. Gather Required Details
1. Get the wireless network details.
This is WPA2 Personal, you're going to need the usual details:
    * SSID
    * Wireless network password

2. Get your Ubuntu machine's wireless adapter name.
You can use `ip link` or `ip add` for this.
    ```
joe@ub1:~$ ip add
...
3: wlx18d6c7116805: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
```
In this example, my adapter is `wlx18d6c7116805`.

## 2. Compose the Netplan file
3. Create a netplan yaml file in the /etc/netplan directory.

* In this example my file is called `mynet1.yaml`.
* Configure the wireless adapter details under `wifis`.
* The SSID for your wireless network (the name of the network) is configured under `access-points`.
* Record the wireless network password under the SSID.
* Make sure to configure any other networking adapters that you require as well, see my previous blog for examples of wired networks [here.](https://dev.to/joeneville_/configure-ubuntu-networking-with-netplan-1cbc)

*Example*

```
network:
  ethernets:
    eno1:
      addresses:
        - 10.150.15.25/24
  wifis:
    wlx18d6c7116805:
      dhcp4: yes
      dhcp6: yes
      access-points:
        "IDontLikeSand15":
          password: "Supersecure123"
  version: 2
  renderer: NetworkManager
```
*Example notes*
* The wired ethernet adapter `eno1` is configured with a static IPv4 address.
* The wireless adapter `wlx18d6c7116805` is configured for DHCPv4 and DHCPv6 address allocation.
* The SSID is `IDontLikeSand15` with a password of `Supersecure123`.

## 3. Apply the Netplan file
Run the command `netplan apply <your-netplan-file-name>`.

## 4. Verify
* Use the command `iwconfig` to check the wireless adapter state.
* Use `ip add` to view all your network adapter.

```
$ iwconfig
lo        no wireless extensions.

eno1      no wireless extensions.

wlx18d6c7116805  IEEE 802.11bgn  ESSID:"IDontLikeSand15"  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency:2.412 GHz  Access Point: 24:F2:7F:D1:89:81
          Bit Rate:72.2 Mb/s   Sensitivity:0/0
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=100/100  Signal level=100/100  Noise level=0/100
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

$ ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 50:65:f3:2f:c9:a1 brd ff:ff:ff:ff:ff:ff
    altname enp0s25
    inet 10.150.15.25/24 brd 10.150.15.255 scope global noprefixroute eno1
       valid_lft forever preferred_lft forever
    inet6 2001:db8:15:0:5265:f3ff:fe2f:c9a1/64 scope global dynamic mngtmpaddr
       valid_lft 2591913sec preferred_lft 604713sec
    inet6 fe80::5265:f3ff:fe2f:c9a1/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: wlx18d6c7116805: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 18:d6:c7:11:68:05 brd ff:ff:ff:ff:ff:ff
    inet 192.168.15.74/24 brd 192.168.15.255 scope link noprefixroute wlx18d6c7116805
       valid_lft forever preferred_lft forever
    inet6 2001:db8:15:0:a402:f49a:d7be:5049/64 scope global temporary dynamic
       valid_lft 599939sec preferred_lft 81131sec
    inet6 2001:db8:15:0:1ad6:c7ff:fe11:6805/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 2591914sec preferred_lft 604714sec
    inet6 fe80::1ad6:c7ff:fe11:6805/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
```