User Tools

Site Tools


networkmanager

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
networkmanager [2021/05/22 23:34]
Andrew Zaborowski iwd-config-path explanation update.
networkmanager [2021/05/23 00:52]
Andrew Zaborowski Instructions for converting existing NM network profiles for IWD
Line 41: Line 41:
 </​code>​ </​code>​
  
-The example above switches all NM-managed WiFi devices to use the IWD backend. ​ NM configuration syntax allows for other possibilties,​ see NM documentation in ''​**NetworkManager.conf**(5)''​.+The example above switches all NM-managed WiFi devices to use the IWD backend. ​ NM configuration syntax allows for other possibilties, ​for details ​see [[https://​developer.gnome.org/​NetworkManager/​1.31/​NetworkManager.conf.html#​id-1.2.3.12|the relevant section]] of ''​**NetworkManager.conf**(5)''​.
  
 After this Network Manager needs to be restarted. ​ The wpa_supplicant daemon will often still be running in the background and needs to be explicitly stopped with ''​killall wpa_supplicant''​. ​ IWD is currently not automatically started by NM, see [[gettingstarted|Getting Started]] about starting IWD -- this can be done either before or after starting NM.  wpa_supplicant and IWD should not generally be active at the same time, neither will be able to manage WiFi connections correctly during the time both are active. After this Network Manager needs to be restarted. ​ The wpa_supplicant daemon will often still be running in the background and needs to be explicitly stopped with ''​killall wpa_supplicant''​. ​ IWD is currently not automatically started by NM, see [[gettingstarted|Getting Started]] about starting IWD -- this can be done either before or after starting NM.  wpa_supplicant and IWD should not generally be active at the same time, neither will be able to manage WiFi connections correctly during the time both are active.
Line 47: Line 47:
 Once this is done you should be able to see a list of available networks from your Network Manager client interface (nm-applet, Gnome Shell or one of the command line NM clients) and be able to connect to Open and WPA/​WPA2-Personal networks (Pre-Shared Key networks) as normal. Once this is done you should be able to see a list of available networks from your Network Manager client interface (nm-applet, Gnome Shell or one of the command line NM clients) and be able to connect to Open and WPA/​WPA2-Personal networks (Pre-Shared Key networks) as normal.
  
----- 
  
 The following settings fine-tune NM's IWD backend. The following settings fine-tune NM's IWD backend.
 +
 +----
  
 //(Since 1.30)// Selects between IWD-driven (when ''​yes'',​ default) or NM-driven (when ''​no''​) autoconnect logic: //(Since 1.30)// Selects between IWD-driven (when ''​yes'',​ default) or NM-driven (when ''​no''​) autoconnect logic:
Line 56: Line 57:
 wifi.iwd.autoconnect=yes wifi.iwd.autoconnect=yes
 </​code>​ </​code>​
 +
 +For details see [[https://​developer.gnome.org/​NetworkManager/​1.31/​NetworkManager.conf.html#​id-1.2.3.12|the relevant section]] of ''​**NetworkManager.conf**(5)''​.
 +
 +----
  
 //​(Currently in master, to arrive in 1.32 or 1.34)// Tells NM to re-write IWD network configurations whenever an NM network profile is changed thus enabling editing settings such as EAP authentication from //​nm-connection-editor//​ GUI.  With IWD versions 1.15 and later this is on by default (set to ''​no''​ or an empty string to disable). ​ With IWD versions 1.14 you must specify a valid path (''​iwd-config-path=/​var/​lib/​iwd''​) to enable. //​Warning://​ when enabled NM profiles are the authoritative ones and IWD's ''/​var/​lib/​iwd''​ files can get overwritten any time: //​(Currently in master, to arrive in 1.32 or 1.34)// Tells NM to re-write IWD network configurations whenever an NM network profile is changed thus enabling editing settings such as EAP authentication from //​nm-connection-editor//​ GUI.  With IWD versions 1.15 and later this is on by default (set to ''​no''​ or an empty string to disable). ​ With IWD versions 1.14 you must specify a valid path (''​iwd-config-path=/​var/​lib/​iwd''​) to enable. //​Warning://​ when enabled NM profiles are the authoritative ones and IWD's ''/​var/​lib/​iwd''​ files can get overwritten any time:
Line 62: Line 67:
 iwd-config-path=auto iwd-config-path=auto
 </​code>​ </​code>​
 +
 +For details see [[https://​developer.gnome.org/​NetworkManager/​1.31/​NetworkManager.conf.html#​id-1.2.3.7|the relevant section]] of ''​**NetworkManager.conf**(5)''​.
 +
 +==== Converting network profiles ====
 +
 +If you've been using the NM + wpa_supplicant combo and switched to IWD it's possible to bulk-convert your existing network profiles to [[networkconfigurationsettings|the IWD format]], so that you can keep using them with the IWD backend. ​ Especially useful for EAP (802.1X) networks. ​ You will need to have the ''​iwd-config-path''​ mechanism enabled (see previous section). ​ Optimally these steps would be done automatically by distribution scripts such as Debian'​s ''​update-alternatives''​ but they require a few changes to the profile settings so the user needs to be conscious this is happening. ​ This is how to do it:
 +
 +  - Remove any ''​[wifi].mac-address='',​ ''​[connection].interface-name=''​ and ''​[connection].permissions=''​ settings from the profiles. ​ In some NM versions some of those keys were set by default on new profiles. ​ IWD profiles are global so any user can activate them on any interface, so NM's IWD backend will refuse to use profiles that have any of those settings.
 +  - Delete, then restore all NM profiles. ​ The IWD backend will notice new NM profiles being added and will automatically create IWD network configuration files for each one.  From that point on, the ''​iwd-config-path''​ mechanism will automatically keep the IWD configuration files in sync with NM connection profiles when you add, modify or delete them.
 +
 +This can look something like this:
 +
 +<​code>​
 +# cd /​etc/​NetworkManager/​system-connections
 +# mkdir ../​system-connections-iwd
 +# for f in *; do grep -v '​^\(mac-address\|interface-name\|permissions\)='​ "​$f"​ > ../​system-connections-iwd/"​$f";​ done
 +# chmod 0600 ../​system-connections-iwd/​*
 +# cd /​etc/​NetworkManager
 +# mv system-connections system-connections-backup
 +# dbus-send --system --print-reply --dest=org.freedesktop.NetworkManager /​org/​freedesktop/​NetworkManager/​Settings org.freedesktop.NetworkManager.Settings.ReloadConnections
 +# sleep 1
 +# mv system-connections-iwd system-connections
 +# dbus-send --system --print-reply --dest=org.freedesktop.NetworkManager /​org/​freedesktop/​NetworkManager/​Settings org.freedesktop.NetworkManager.Settings.ReloadConnections
 +</​code>​
 +
 +Check if you can now see all your usual network names in ''/​var/​lib/​iwd''​ to confirm if it worked.
 +(Note this method will flush NM "​agent-owned secrets"​ -- a rarely-used NM feature)
  
 ===== Limitations ===== ===== Limitations =====
networkmanager.txt ยท Last modified: 2022/09/23 15:21 by Andrew Zaborowski