Skip to content

Instantly share code, notes, and snippets.

@jcberthon
Last active March 12, 2025 19:05
Show Gist options
  • Save jcberthon/ea8cfe278998968ba7c5a95344bc8b55 to your computer and use it in GitHub Desktop.
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
@jeremyb31
Copy link

If you aren't using NetworkManager (default in the minimal RaspberyOS 11 install at least) you can temporarily (until reboot) turn off power management with:

iwconfig wlan0 power off

There are many conceivable ways of making this persist, e.g. putting it in rc.local.

It may just be Ubuntu and its derivatives that set the wifi.powersave=3

@josecastillolema
Copy link

josecastillolema commented Jul 12, 2024

Is there a way to test the configuration has succeeded without iwconfig?

I have tried to disable wifi powersaving:

> cat /etc/NetworkManager/conf.d/wifi-powersave-off.conf
[connection]
wifi.powersave = 2

> sudo systemcl restart NetworkManager

However nmcli shows no changes:

> nmcli con show MIWIFI_FAC2_5G | grep save
802-11-wireless.powersave:              0 (default)

PS from the logs of the service it looks like the file has been read:

Jun 27 15:54:31 think NetworkManager[6030]: <info>  [1719496471.3339] Read config: /etc/NetworkManager/NetworkManager.conf (lib: 20-connectivity-fedora.conf, 22-wifi-mac-addr.conf) (etc: wifi-powersave-off.conf)

@YuChuXi
Copy link

YuChuXi commented Jul 20, 2024

有没有办法不用iwconfig来测试配置是否成功?

我尝试禁用 wifi 省电功能:

> cat /etc/NetworkManager/conf.d/wifi-powersave-off.conf
[connection]
wifi.powersave = 2

> sudo systemcl restart NetworkManager

但是 nmcli 没有显示任何变化:

> nmcli con show MIWIFI_FAC2_5G | grep save
802-11-wireless.powersave:              0 (default)

PS:从服务日志来看该文件似乎已被读取:

Jun 27 15:54:31 think NetworkManager[6030]: <info>  [1719496471.3339] Read config: /etc/NetworkManager/NetworkManager.conf (lib: 20-connectivity-fedora.conf, 22-wifi-mac-addr.conf) (etc: wifi-powersave-off.conf)

Me too.
But

[wifi]
powersave=2

is useful

@theomkumar
Copy link

@josecastillolema try the following

❯ nmcli con show

NAME                UUID                                  TYPE   
   DEVICE 

Name 4G     wifi   
 .......

❯ nmcli con show "Name 4G" | grep save


802-11-wireless.powersave:              0 (default)

❯ nmcli connection modify "Name 4G" 802-11-wireless.powersave 2

❯ nmcli connection up "Name 4G"

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/21)

❯ nmcli con show "Name 4G" | grep save


802-11-wireless.powersave:              2 (disable)

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