Skip to content

Instantly share code, notes, and snippets.

@jcberthon
Last active June 13, 2026 03:09
Show Gist options
  • Select an option

  • Save jcberthon/ea8cfe278998968ba7c5a95344bc8b55 to your computer and use it in GitHub Desktop.

Select an option

Save jcberthon/ea8cfe278998968ba7c5a95344bc8b55 to your computer and use it in GitHub Desktop.
NetworkManager Wi-Fi powersaving configuration

NetworkManager WiFi Power Saving

NetworkManager supports WiFi powersaving but the function is rather undocumented.

From the source code: wifi.powersave can have the following value:

  • NM_SETTING_WIRELESS_POWERSAVE_DEFAULT (0): use the default value
  • NM_SETTING_WIRELESS_POWERSAVE_IGNORE (1): don't touch existing setting
  • NM_SETTING_WIRELESS_POWERSAVE_DISABLE (2): disable powersave
  • NM_SETTING_WIRELESS_POWERSAVE_ENABLE (3): enable powersave

Then I propose 2 files, only one of them needs to be put under /etc/NetworkManager/conf.d/.
One is forcing to disable powersaving, while the other one enable it.

Once you have put the file in the right folder, simply restart NetworkManager:

sudo systemctl restart NetworkManager
# File to be place under /etc/NetworkManager/conf.d
[connection]
# Values are 0 (use default), 1 (ignore/don't touch), 2 (disable) or 3 (enable).
wifi.powersave = 2
# File to be place under /etc/NetworkManager/conf.d
[connection]
# Values are 0 (use default), 1 (ignore/don't touch), 2 (disable) or 3 (enable).
wifi.powersave = 3
@Koguni31

Copy link
Copy Markdown

Following make default no powersave on WiFi adapters beeing placed to some.conf file at /etc/NetworkManager/conf.d/:

[802-11-wireless]
powersave=2

@jlearman

jlearman commented Mar 2, 2026

Copy link
Copy Markdown

Following make default no powersave on WiFi adapters beeing placed to some.conf file at /etc/NetworkManager/conf.d/:

[802-11-wireless] powersave=2

None of the above suggestions works on Raspberry Pi OS Bookworm (12).

@robang74

robang74 commented Jun 13, 2026

Copy link
Copy Markdown

Ubuntu wifi power signal hygene:

$ cat /etc/network/if-up.d/wlan-low-txpower
#!/bin/sh
if echo $IFACE | grep -Eq "wlan|wlp"; then
# RAF: the value 0 may work as 0dB or refused or took as default
  iw dev $IFACE set txpower limit 100
fi

$ cat /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf
[connection]
wifi.wake-on-wlan=0
wifi.powersave=3
wifi.bgscan=0


$ cat ~/bin/iwrtx.sh 
#!/bin/sh
sudo iw dev $wifiname info |
	grep -E "Interface|addr|type|channel|txpower"
nmcli -f SSID,BSSID,SIGNAL dev wifi
while sleep 1; do
  iw dev $wifiname link |
    sed -ne "s,.*bitrate: \([^ ]* [^ ]*\) .*,rx: \\1,p" |
      tr '\n' '@' | sed -e "s,@rx, - tx," | tr -d @; echo

Does it work?

  • Yes, as long as your private hotspot is nearby otherwise not, but it is the inteded behaviour.

  • Side effect: your Android hotspot tends to increase the TX power by +20dB which is not good.

Equilibrium can be found testing different tx powers:

  • sudo iw dev $wifiname set txpower limit 500

In my case this setting (500 mdB) is equivalent to 1500 in terms of TX power by the Android hotspot.

Considering that dB is a logaritmic scale the sweet post (least EM pollution) is obtained when the sum of all wifi networks nodes tx dB are at its minimum. Usually, compared with the standard TX power value that in my case was 1500 mdB.

Note: value provided by the script under the "SIGNAL" are RSSI expressed in % (higher better) and it is about signal noise ration not about the power. However, for a quick evaluation can be also used as an indirect evaluation of the hotspot TX power.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment