First step is to check the status of the interfaces. For this, we will use the net-tools package.

sudo apt install net-tools

Then, we can see the interfaces status

ifconfig -a

In my case, I have this status of my interface wlan0:

ubuntu@ubuntu:~$ ifconfig -a wlan0
wlan0: flags=4098<BROADCAST,MULTICAST> mtu 1500
        ether dc:a6:32:6c:xx:xx txqueuelen 1000 (Ethernet)
        RX packets 0 bytes 0 (0.0 B)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 0 bytes 0 (0.0 B)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

In the flags only there are 2 (BROADCAST,MULTICAST), but there is no “UP” flag.

In order to configure the WIFI network, I recommend to use the program netplan, available from Ubuntu 18.04. It doesn’t require any additional installation, it comes with the base system.

For the wireless configuration, you may follow the example:

/usr/share/doc/netplan/examples/wireless.yaml

so next step is to copy the file in the directory /etc/netplan/

sudo cp /usr/share/doc/netplan/examples/wireless.yaml /etc/netplan/

Then, edit the new file created and change the values. Probably you want to enable dhcp configuration and remove static parts. In my case, the file looks like this:

network:
  version: 2
  renderer: networkd
  wifis:
    wlan0:
      dhcp4: yes
      dhcp6: no
      access-points:
        "<your network ESSID>":
          password: "<your WIFI Password>"

Last step is to execute the netplan

sudo netplan try

As an alternative, you could modify the existing file /etc/netplan/50-cloud-init.yaml which is created by default. In this file you could add the WIFI configuration.

network:
    version: 2
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    wifis:
        wlan0:
            dhcp4: true
            dhcp6: false
            access-points:
                    "<your network ESSID>":
                     password: "<your WIFI Password>"

Last step is to execute the netplan

sudo netplan try

After this, your WIFI should be established. You could check it with ifconfig tool:

ubuntu@ubuntu:~$ ifconfig -a wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.220  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::dea6:32ff:fe6c:xxxx  prefixlen 64  scopeid 0x20
        ether dc:a6:32:6c:xx:xx  txqueuelen 1000  (Ethernet)
        RX packets 5047  bytes 936652 (936.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 78  bytes 9491 (9.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

And now the flags UP and RUNNING are set.