iwd.config(5)
π iwd.config β the manual page for iwd.config(5) bestie β¨
okay so like, welcome to iwd.config(5) from the Linux Connectivity girlies π
this is the whole scoop on the config file for the wireless daemon, and I'm gonna walk you through it like we're texting at 2am π«Ά
β¨ NAME β¨
iwd.config β the configuration file for the wireless daemon, aka the glow-up instructions for your Wi-Fi situation π
πΈ SYNOPSIS πΈ
Configuration file main.conf
literally one file, one vibe, no cap π
π¦ DESCRIPTION π¦
okay so the main.conf configuration file is the one that sets up all the system-wide settings for iwd β like, the main character of your wireless setup π
this file lives in the configuration directory that's specified by the environment variable $CONFIGURATION_DIRECTORY, which is normally handed to you by systemd. no thoughts, it just shows up π
but bestie, if that environment variable isn't there? it defaults to /etc/iwd β that's the fallback, and it's serving as always π
and if there's no main.conf present at all, then default values get chosen instead. so the presence of main.conf is not required β it's optional, it's lowkey chill, it's giving "come as you are" π§β¨
π FILE FORMAT π
for the deets on the file format, go check out iwd.network β that's where the format lore lives ππ«
π SETTINGS π
the settings are split into several categories π each category has a group associated with it, and each one gets described in its own separate tables below πβ¨ so like, stay tuned, there's more coming πΈ
β¨ General Settings β¨
Okay so the [General] group is where the global-ish vibes live β the stuff that applies to iwd as a whole, not to one specific network. Let's get into it π
EnableNetworkConfigurationβ Values:true,false. Turns on network configuration, bestie.
Setting this option to true enables iwd to configure the network interfaces with the IP addresses. There are two types IP addressing supported by iwd: static and dynamic. The static IP addresses are configured through the network configuration files. If no static IP configuration has been provided for a network, iwd will attempt to obtain the dynamic addresses from the network through the built-in DHCP client. π
This also enables network configuration and the DHCP server when in AP mode and the AP profile being activated does not override it.
The network configuration feature is disabled by default (so like, off unless you say otherwise, no cap). See [Network] settings for additional settings related to network configuration.
UseDefaultInterfaceβ Values:true,false. Deprecated, babes β more on that in a sec π
Do not allow iwd to destroy / recreate wireless interfaces at startup, including default interfaces. Enable this behavior if your wireless card driver is buggy or does not allow such an operation, or if you do not want iwd to manage netdevs for another reason. For most users with an upstream driver it should be safe to omit/disable this setting.
β οΈ This setting is deprecated, please use [DriverQuirks].DefaultInterface instead. Like, it still works, but it's giving legacy energy β migrate when you can π
AddressRandomizationβ Values:disabled,once,network. This one's the MAC-address-privacy queen π
If AddressRandomization is set to disabled, the default kernel behavior is used. This means the kernel will assign a mac address from the permanent mac address range provided by the hardware / driver. Thus it is possible for networks to track the user by the mac address which is permanent. (Not slay of them, honestly π)
If AddressRandomization is set to once, MAC address is randomized a single time when iwd starts or when the hardware is detected for the first time (due to hotplug, etc.)
If AddressRandomization is set to network, the MAC address is randomized on each connection to a network. The MAC is generated based on the SSID and permanent address of the adapter. This allows the same MAC to be generated each time connecting to a given SSID while still hiding the permanent address. Iconic behavior, truly β¨
AddressRandomizationRangeβ Values:full,nic. Controls which part of the address gets the randomization treatment.
One can control which part of the address is randomized using this setting.
When using AddressRandomizationRange set to nic, only the NIC specific octets (last 3 octets) are randomized. Note that the randomization range is limited to 00:00:01 to 00:00:FE. The permanent mac address of the card is used for the initial 3 octets.
When using AddressRandomizationRange set to full, all 6 octets of the address are randomized. The locally-administered bit will be set. π¦
RoamThresholdβ Value: rssi dBm value, from-100to1, default:-70. This value can be used to control how aggressively iwd roams when connected to a 2.4GHz access point.
RoamThreshold5Gβ Value: rssi dBm value, from-100to1, default:-76. This value can be used to control how aggressively iwd roams when connected to a 5GHz access point. (Yes it's a separate dial from the 2.4GHz one, they're different girlies π)
CriticalRoamThresholdβ Value: rssi dBm value, from-100to-1, default:-80.
Like, picking right back up on the threshold saga π₯ β so the threshold for 2.4GHz is the point at which IWD will roam no matter what affinity is set to the current BSS. And if the BSS you're connected to actually has affinity (the kind you set in Station's Affinities list), that roam threshold gets lowered down to this value, and IWD won't even attempt to roam (or do a roam scan) until either the affinity is cleared, or the signal drops below this threshold. Bestie, that's the whole bit π
CriticalRoamThreshold5Gβ Value: rssi dBm value, from-100to-1, default:-82
This has the same effect as CriticalRoamThreshold, but for the 5GHz band. Same energy, different frequency π¦
RoamRetryIntervalβ Value: unsigned int value in seconds (default:60)
Specifies how long iwd will wait before attempting to roam again if the last roam attempt failed, or if the signal of the newly connected BSS is still considered weak. Basically the "okay give it a minute and try again" timer β³
ManagementFrameProtectionβ Values:0,1or2- When
ManagementFrameProtectionis0, MFP is completely turned off, even if the hardware is capable. This setting is not recommended. π - When
ManagementFrameProtectionis1, MFP is enabled if the local hardware and remote AP both support it. - When
ManagementFrameProtectionis2, MFP is always required. Heads up: this can prevent successful connection establishment on some hardware or to some networks. π
- When
ControlPortOverNL80211β Values:false,true
Enable/Disable sending EAPoL packets over NL80211. Enabled by default if kernel support is available. Doing so sends all EAPoL traffic over directly to the supplicant process (iwd) instead of putting these on the Ethernet device. Since only the supplicant can usually make sense / decrypt these packets, enabling this option can save some CPU cycles on your system and avoids certain long-standing race conditions. Lowkey a glow-up for your CPU β¨
DisableANQPβ Values:false,true
Enable/disable ANQP queries. The way IWD does ANQP queries is dependent on a recent kernel patch (available in Kernel 5.3). If your kernel does not have this functionality this should be disabled (default). Some drivers also do a terrible job of sending public action frames (freezing or crashes) π which is another reason why this has been turned off by default. If you want to easily utilize Hotspot 2.0 networks, then setting DisableANQP to false is recommended. Go off π
DisableOCVβ Value:false,true
Disable Operating Channel Validation. Support for this is not advertised by the kernel, so if kernels/drivers exist which don't support OCV it can be disabled here.
SystemdEncryptβ Value: Systemd key ID
β οΈ Warning: This is a highly experimental feature. No cap, be careful.
Enables network profile encryption using a systemd provided secret key. Once enabled, all PSK/8021x network profiles will be encrypted automatically. And once the profile is encrypted there is no way of going back using IWD alone π³. A tool, iwd-decrypt-profile, is provided (assuming the secret is known) which will decrypt a profile. This decrypted profile could manually be set to /var/lib/iwd to 'undo' any profile encryption, but it's going to be a manual process, fr fr.
Setting up systemd to provide the secret is left up to the user, as IWD has no way of performing this automatically. The systemd options required are LoadCredentialEncrypted or SetCredentialEncrypted, and the secret identifier should be named whatever SystemdEncrypt is set to. Matchy-matchy, you got this π«Ά
Countryβ Value: Country Code (ISO Alpha-2)
Requests the country be set for the system. Note that setting this is simply a request to set the country, and does not guarantee the country will be set. For a self-managed wiphy it is never possible to set theβ¦
β¦and the tail end of that last setting from before, finishing up the country talk π β for some devices this means iwd sets the country from userspace. For other devices any regulatory domain request is just a 'hint' and ultimately left up to the kernel to set the country.
DisablePMKSAβ Values:false,true. This one just disables PMKSA support in IWD. That's it, that's the whole vibe π
πΈ Network πΈ
The group [Network] is where all your network configuration related settings live, bestie.
EnableIPv6β Values:true,false. Sets the global default that tells iwd whether it should configure IPv6 addresses and routes (either provided via static settings, Router Advertisements or DHCPv6 protocol). This setting is enabled by default, and heads up β it can also be overridden on a per-network basis πNameResolvingServiceβ Values:resolvconf,systemd,none. Configures a DNS resolution method used by the system.
This configuration option must be used in conjunction with EnableNetworkConfiguration and provides the choice of system resolver integration.
If not specified, systemd is used as default.
If none is specified, then DNS and domain name information is ignored π
RoutePriorityOffsetβ Values:uint32value (default:300). Configures a route priority offset used by the system to prioritize the default routes. The route with the lower priority offset is preferred.
If not specified, 300 is used as default.
π Blacklist π
The group [Blacklist] contains settings related to blacklisting of BSSes. So here's the tea: if iwd determines that a connection to a BSS fails for a reason that indicates the BSS is currently misbehaving or misconfigured (e.g. timeouts, unexpected status/reason codes, etc), then iwd will blacklist this BSS and avoid connecting to it for a period of time. These options let you control how long a misbehaved BSS spends on the blacklist. It's giving timeout corner, fr fr β¨
InitialTimeoutβ Values:uint64value in seconds (default:60). The initial time that a BSS spends on the blacklist. Setting this to zero will disable blacklisting functionality in IWD entirely π«ΆInitialRoamRequestedTimeout(deprecated) β Values:uint64value in seconds (default:30).
β οΈ This setting is deprecated, please use [Blacklist].InitialAccessPointBusyTimeout instead. Don't be that girl still using the deprecated one π
InitialAccessPointBusyTimeoutβ Values:uint64value in seconds (default:30). The initial time that a BSS will be blacklisted after indicating it cannot handle more connections. This is triggered by either a BSS transition management request (telling IWD to roam elsewhere) or by a denied authentication or association with theNO_MORE_STASstatus code.
Once a BSS is blacklisted in this manner, IWD will attempt to avoid it for the configured amount of time. Iconic avoidance behavior honestly π
Multiplierβ Values:unsigned intvalue greater than zero, in seconds (default:30). If the BSS was blacklisted previously and another connection attempt has failed after the initial timeout has expired, then the BSS blacklist time will be extended by a multiple ofMultiplierfor each unsuccessful attempt up toMaxiumTimeouttime in seconds. It escalates. She escalates. πMaximumTimeoutβ Values:uint64value in seconds (default:86400). Maximum time that a BSS is blacklisted. The ceiling. The limit. The final boss π§
π Rank
okay so the [Rank] group is where you go when you wanna have Opinionsβ’ about which network iwd should autoconnect to π
it's literally the group that holds all the settings related to ranking of networks for autoconnect purposes. let's get into it π
BandModifier2_4GHzβ values: floating point value (default:1.0). bump this up or down to increase or decrease the preference for 2.4GHz access points. it's giving "volume knob for a whole band" ποΈ and yes, a value of0.0will disable the 2.4GHz band and prevent scanning or connecting on those frequencies β so like, actually gone, not just "less liked" πBandModifier5GHzβ values: floating point value (default:1.0). same deal, but for 5GHz access points: increase or decrease the value of this modifier to increase or decrease the preference. heads up tho, 5GHz networks are already preferred due to their increase throughput / data rate π but 5GHz networks are highly RSSI sensitive, so it's still possible for IWD to prefer 2.4GHz APs in certain circumstances π and again, a value of0.0will disable the 5GHz band and prevent scanning or connecting on those frequencies π«BandModifier6GHzβ values: floating point value (default:1.0). raise or lower this one to increase or decrease the preference for 6GHz access points β¨ since 6GHz networks are highly RSSI sensitive, this gives an option to prefer 6GHz APs over 5GHz APs β like, main character energy for the new band π and yep, a value of0.0will disable the 6GHz band and prevent scanning or connecting on those frequencies π¦
β οΈ okay bestie, listen β 0.0 on any of these bands isn't a soft preference, it kills scanning and connecting on those frequencies. no cap, be sure before you commit π
HighUtilizationThresholdβ values: unsigned integer value0-255(default:0, disabled).
π§ͺ Warning: This is an experimental feature
the BSS utilization threshold at which a negative rank factor begins to be applied to the BSS π as the load increases for a BSS the ranking factor decays exponentially, meaning the ranking factor will decrease exponentially. setting this can have very drastic effects on the BSS rank if its utilization is high β use with care, fr fr π
HighStationCountThresholdβ values: unsigned integer value0-255(default:0, disabled).
π§ͺ Warning: This is an experimental feature
the BSS station count threshold at which a negative rank factor begins to be applied to the BSS π₯ same energy as the one above: as the station count increases for a BSS the ranking factor decays exponentially, meaning the ranking factor will decrease exponentially π setting this can have very drastic effects on the BSS rank if its station count is high, use with care π
lowkey the vibe check here: these are all knobs on the ranking math, not on whether a network is saved or trusted π
default 1.0 on the band modifiers means "no opinion added", and default 0 on the two thresholds means disabled β so if you never touch this group, nothing changes π
β¨ Scan β¨
Okay bestie, the [Scan] group contains settings related to scanning functionality. No modification from defaults is normally required β literally the default vibe is usually correct. π
DisablePeriodicScanβ Values:true,false. This disables periodic scan. Setting this option totruewill prevent iwd from issuing the periodic scans for the available networks while disconnected. Quick clarification: the behavior of user-initiated scans isn't affected. The periodic scan is enabled by default.InitialPeriodicScanIntervalβ Values:unsigned intvalue in seconds (default:10). The initial periodic scan interval upon disconnect.MaximumPeriodicScanIntervalβ Values:unsigned intvalue in seconds (default:300). The maximum periodic scan interval. Cap it, periodt.DisableRoamingScanβ Values:true,false. Disables roaming scan. Setting this option totruewill prevent iwd from trying to scan when roaming decisions are activated. This can prevent iwd from roaming properly, but can be useful for networks operating under extremely low rssi levels where roaming isn't possible. So like, use with intention, bestie. π«Ά
π IPv4 π
The [IPv4] group contains settings related to IPv4 network configuration. Slay, networking. β¨
APAddressPoolβ Values: comma-separated list of prefix-notation IP strings. This defines the space of IPs used for the Access Point-mode subnet addresses and the DHCP server. Defaults to192.168.0.0/16. The prefix length decides the size of the pool from which an address is selected, but the actual subnet size (netmask) is based on the AP profile being activated and defaults to28bits. The AP profile's[IPv4].Addresssetting overrides the global value set here. Also, setting a too-small address space will limit the number of access points that can be running simultaneously on different interfaces. So don't shrink it into oblivion. π
π§ DriverQuirks π§
The [DriverQuirks] group contains special flags associated with drivers that are buggy or just don't behave similar enough to the majority of other drivers. Basically the βwe love you but you're a little quirkyβ group. π
DefaultInterfaceβ Values: comma-separated list of drivers or glob matches. If a driver in use matches one in this list, IWD will not attempt to remove and re-create the default interface.ForcePaeβ Values: comma-separated list of drivers or glob matches. If a driver in use matches one in this list,ControlPortOverNL80211will not be used, and PAE will be used instead. Some drivers do not properly supportControlPortOverNL80211even though they advertise support for it. Annoying, but handled.PowerSaveDisableβ Values: comma-separated list of drivers or glob matches. If a driver in use matches one in this list, power save will be disabled.MulticastRxDisableβ Values: comma-separated list of drivers or glob matches. If a driver in use matches one in this list, multicast RX will be disabled.SaeDisableβ Values: comma-separated list of drivers or glob matches. If a driver in use matches one in this list, SAE/WPA3 will be disabled for connections. This will prevent connections to WPA3-only networks, but will allow for connections to WPA3/WPA2 hybrid networks by utilizing WPA2.
π SEE ALSO π
π Author π
Marcel Holtmann <marcel@holtmann.org>, Denis Kenzior <denkenz@gmail.com>, Andrew Zaborowski <andrew.zaborowski@intel.com>, Tim Kourt <tim.a.kourt@linux.intel.com>, James Prestwood <prestwoj@gmail.com>
π COPYRIGHT π
okay so the legal bit, bestie β but make it cute:
Copyright 2013-2019 Intel Corporation
like, that's the whole thing. the folks at Intel held the copyright on this from 2013 through 2019, and we're just out here respectfully citing it π«Ά
β¨ and that's a wrap on the whole page, fr fr β¨
this little masterpiece comes from the iwd corner of the world, dated 22 September 2019, and it lives in section 5 of the manual as iwd.config(5) β so if you ever need to cite your sources for the group chat, now you know πΈ
go forth and configure your wireless, you absolute icon ππ
π¦ where this page comes from
- alpine 3.24: iwd-doc 3.12-r0 Β· LGPL-2.1-or-later
- fedora 44: iwd 3.12-1.fc44 Β· LGPL-2.1-or-later
- nixos 26.05: iwd 3.12
- ubuntu resolute: iwd 3.10-1ubuntu1 Β· LGPL-2.1-or-later
- ubuntu stonking: iwd 3.10-1ubuntu1 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms