[qubes-users] Replacing the wpa_supplicant wifi daemon with iwd

Hi,

Due to mysterious, unsolvable Wifi issues, I decided to replace the
wpa_supplicant wifi daemon with iwd. iwd itself is excellent and a
definite improvement over wpa_supplicant. I can't find Fedora working on
this though. In the Fedora 33 template, it currently comes down to:

dnf remove wpa\_supplicant echo -e "[device] \nwifi.backend=iwd" | tee -a
/etc/NetworkManager/NetworkManager.conf
systemctl enable iwd\.service systemctl start iwd.service
$ systemctl restart NetworkManager

There are just two integration issues remaining that I hope people can
help me with. I am using the standard Qubes Fedora template, and want to
stay as close to it as possible, so I'm not interested in ditching
NetworkManager unless it is unavoidable.

1. /etc/dbus-1/system.d/org.freedesktop.GeoClue2.conf: this is the only
other file in /etc/ that mentions wpa_supplicant. It contains policy to
allow wpa_supplicant to be used for geolocation. Since I don't care for
geolocation, I just removed it (don't comment it out. But if someone
cares to adapt this to iwd, it would be nice.

2. Occasionally, NetworkManager says 'device not ready' under wifi, and
wifi stops working. It is solved temporarily by ``$ systemctl restart
iwd.service && systemctl restart NetworkManager.service`` in sys-net. I
don't get from the log what the exact issue is though.

Due to mysterious, unsolvable Wifi issues, I decided to replace the
wpa_supplicant wifi daemon with iwd.

   -- snip --

dnf remove wpa\_supplicant echo -e "[device] \nwifi.backend=iwd" | tee -a
/etc/NetworkManager/NetworkManager.conf
systemctl enable iwd\.service systemctl start iwd.service
$ systemctl restart NetworkManager

interesting. I tried that in my debian-minimal-net but I cannot start
iwd with systemctl. Errors similar to here

   [SOLVED] iwd fails to start via systemd / Newbie Corner / Arch Linux Forums

but the proposed "solution" does not work. The thread suggests

   sudo cp /usr/lib/systemd/system/iwd.service /etc/systemd/system/

but that file does simply not exist, so I cannot copy it. So I stopped
that experiment for the moment. Maybe @unman has a suggestion for a
well-working debian-based 'minimal' solution without networkmanager
and/or wpa_applicant ? Best,

For those who want to stick to NetworkManager, II found out that the

     systemctl enable iwd\.service      systemctl start iwd.service

Because NetworkManager is supposed to handle starting iwd, after iwd is
added to the NetworkManager config file.

That networkmanager does not handle iwd correctly, is a known issue with
NetworkManager. We can only wait for it to get updated with future
Fedora releases I guess.

I am now also curious about non-networkmanager alternatives and their
usability though.

1 Like