Call for testing: improved WiFi via iwd

Concluding from your testing experience, would you use iwd on your primary machine?

  • Yes, for daily use.
  • Maybe, in some situations.
  • No.

0 voters

Hello folks,

This is Lukas Märdian, a software engineer for the Ubuntu Foundations team. I have been evaluating the use of iwd [0] as a wireless daemon in Ubuntu. iwd (iNet Wireless Daemon) is a modern, up-and-coming wireless daemon for Linux. It is written by Intel and aims to replace wpa_supplicant for potential benefits in:

  • simplification of network management
  • faster network discovery
  • fast and reliable roaming
  • using less system resources
  • using features offered by the Linux kernel
  • support for enterprise security methods like EAP
  • support for kernel asymmetric key rings and trusted platform modules (TPM)
  • support for multiple clients

With its recent versions (v1.5+) iwd mostly reached feature parity with wpa_supplicant, but it is still lacking some real world testing in desktop systems and might have some rough edges. We would like to evaluate its stability and usability with the help of the broader Ubuntu community and would love to get your support in deciding if iwd is ready for prime time!

Instructions

To prepare your Ubuntu 20.10 (Groovy) or 20.04 LTS (Focal) desktop system for using iwd, you just need to follow the 3 easy steps below:

  • Install iwd
    • sudo apt install iwd
  • Configure NetworkManager to use iwd
    • sudo gedit /etc/NetworkManager/conf.d/iwd.conf adding those two lines:
[device]
wifi.backend=iwd
  • Disable wpa_supplicant and reboot:
    • sudo systemctl mask wpa_supplicant
    • sudo reboot

There is a known timing issue where NetworkManager sometimes does not show any wireless networks after a reboot, you can restart iwd to make them re-appear: sudo systemctl restart iwd

NetworkManager will ask to resupply your WiFi credentials on first connection, in order to transfer them into iwd’s secret storage at /var/lib/iwd/, but after that you can just use NetworkManager as usual. Advanced settings can be configured via /etc/iwd/main.conf [1], but it should not be needed for this evaluation.

If you do not want to use iwd anymore, simply delete /etc/NetworkManager/conf.d/iwd.conf, remove iwd (apt remove iwd), re-activate wpa_supplicant (systemctl unmask wpa_supplicant) and reboot your system.

Test Plan

We are mostly interested in the latest version of iwd (v1.8), available in the current Ubuntu development release (20.10, Groovy Gorilla), but also how it generally works with the latest LTS (20.04, Focal Fossa), using iwd v1.5. Please examine a few of the listed test cases (you can also think about additional tests if you want!), post your test results in the comments below and don’t forget to mention the Ubuntu and iwd version you have been using.

  • Your general experience using iwd
  • Using WPA PSK (i.e. normal home Wifi setup)
  • Using WPA Enterprise (e.g. eduroam)
  • Sharing your wired internet connection via a WiFi
  • Connecting to WiFi Direct/P2P devices (e.g. printers, TVs)
  • Connection to hidden networks
  • Picking a specific network (BSSID)
  • Roaming between 2.4GHz access points
  • Roaming between 5 GHz access points
  • Roaming between 2.4GHz and 5GHz access points
  • Connection stability
  • Speed of establishing a connection (e.g. after resume from suspend)
  • Connection strength and throughput (compared to wpa_supplicant)
  • Usage of system resources (CPU and memory)

References

[0] https://iwd.wiki.kernel.org/
[1] https://www.mankier.com/5/iwd.config

5 Likes

for unknown to me reasoning, after the reboot and connecting to my network (SSID: Fremnet) I now have my network shown twice. They both appear to be the same in their properties…

  • Ubuntu 20.04
  • iwd 1.5-1
  • NetworkManager 1.22.10-1ubuntu2.1

Also it appears to be reporting that I’m connected on the 2.4GHz band at 65Mbps. My router and wifi adapter are both AC-capable so I would expect to be on the 5GHz band with a much higher speed reported:

From iwconfig the report is that I’m on 702Mbps bit-rate, and on the 5GHz band. This is at odds with the above screenshot:

wlan0     IEEE 802.11  ESSID:"Fremnet"  
          Mode:Managed  Frequency:5.5 GHz  Access Point: 80:2A:A8:52:07:19   
          Bit Rate=702 Mb/s   Tx-Power=22 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=51/70  Signal level=-59 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:33   Missed beacon:0
5 Likes

Not off to a good start with this.

sudo apt update

:~/Downloads/cuda_temp$ sudo apt install iwd
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package iwd

It works well connecting to my phone via wireless tethering.
It created another network appending a “1” to the end to me as well.
The curious thing is that it then disconnected from that copy and connected to the regular one.

1 Like

You cut out the really useful information which indicates what release of Ubuntu you’re on.

Are you using Ubuntu 20.04 LTS (Focal Fossa) or Ubuntu 20.10 (Groovy Gorilla)?

Opps! I am on 20.04 LTS

Can you paste the full output of sudo apt update somewhere please, such as paste.ubuntu.com, and give us the link?

https://paste.ubuntu.com/p/PyYTcD7MGf/

Looks like you don’t have the universe section of the archive enabled.

I use Kubuntu 19.04, and there is no /etc/networkManager . It is /etc/NetworkManager

1 Like

Thank you! I fixed that typo in the instructions.

I tested it, and it slower at network discovery than wpa_supplicant, and it fails to connect to hidden networks. I went back to wpa_supplicant.

1 Like

Switched to iwd from wpa_supplicant on groovy. Joined my home WPA2 network. Works flawlessly so far. Thanks!

1 Like

I won’t be able to test it this week or the next because I’m on vacation, but does connecting to a WPA2 Enterprise (802.1x) network still require dropping a configuration file in a special directory?

The last time I checked that file included options I would need to rummage through our RADIUS servers config files to figure out and (not kidding) the user‘s password (domain password if the user identity is defined there like in 99% of the businesses out there) IN CLEAR. Just that would probably be enough to make a non negligible number of companies exclude Ubuntu from their networks, even assuming they they didn’t do it the first time a user asked for a provisioning file. Oh, and I forgot, the file is global so it would expose every user’s network configuration to all the other users of the system.

Right now the user experience for WPA2 Enterprise is “choose the right SSID, input username and password in the pop up, done” and I think that until IWD offers the same experience, and the cleartext password in a file, or even better the whole provisioning file, disappears, it can’t be seriously considered, if you still care about the enterprise market.

Hello,
thank you for putting the effort to running IWD in Ubuntu! :+1:

I got IWD somewhat running

Ubuntu 20.04 LTS (KDE Neon 20.04 desktop); iwd 1.5-1

I actually managed to switch WPA_supplicant to IWD without reboot, just with systemctl stop wpa_supplicant and then systemctl restart iwd and restart NetworkManager.

WPA2 PSK works well :+1: even integration with kwallet password manager.

tested on eduroam - PEAP2. And failed.
I don’t see the old filled-in credentials for eduroam, a new hotspot eduroam (wlan0) is seen.
When selected, I’m asked for login info, I will it correctly.
Then I see it in “Network configuration” screeen already filled in.
But it’s not shown in the GUI in NetworkManager - so I cannot select it and connect.

1 Like

Working OK here on Kubtuntu 20.10 using Intel Corporation Wireless 3165.

Notes:

  • After reboot, I was forced to wait until the old network timed out before plasma NW manager allowed a new connection.
  • Network credentials were requested twice which I suspect was plasma-network manager incorrectly updating kwallet. (This behavior also happened with WPA_supplicant.)
  • After connection, duplicate entries appeared in the saved wifi Connection list. I manually removed the old entries.
  • Reconnecting after sleep works as expected.
  • ** Every reboot now requires sudo systemctl restart iwd to enable wifi.**

Short update: Last 2 reboots, wifi has started without issue (not sure why it failed on previous 2 reboots)

1 Like

Hello, thank you for your efforts!

Please note, the docs for NetworkManager say that iwd support is currently experimental. I think the first thing you’d want is to ask NetworkManager devs what exactly is missing, and resolve that. Because right now, I’d imagine some problems with NetworkManager + iwd combination are to be expected.

While on it, my own experience: I also tried iwd 3-4 weeks ago, on Fedora though. It worked, but after waking up from suspend the NetworkManager didn’t show any networks. I had to restart iwd for it to start working. Idk if it’s reproducible, but as I wasn’t the laptop owner, so I simply reverted configs back to wpa_supplicant.

1 Like

Hi,

Some weeks ago I started experimenting with iwd having issues with wpa_supplicant (enterprise peap auth environment, lot’s of AP’s (cisco) lot’s of bouncing between AP’s, and loosing connectivity).

IWD solved these issues for me there, with these instructions it nicely integrates with NM, will see how things go next week when I am at that location. But have full confidence that my experience will be better.

(Running focal atm)

1 Like