21

Q How can I make iw wlan0 set power_save off permanent for stretch? What's the proper way to do it?

Edit I'm using an r-Pi 1 Mod. B with an Edimax wifi dongle and Raspian stretch.

3 Answers 3

25

Power save mode was an issue years ago on older versions of Raspbian. But it is fixed for a long time. Now it is disabled by default with the WiFi driver brcmfmac. You will find it if you grep the journal for the driver:

rpi ~$ journalctl | grep brcmfmac:
Apr 14 22:13:28 raspberrypi kernel: brcmfmac: F1 signature read @0x18000000=0x15264345
Apr 14 22:13:28 raspberrypi kernel: brcmfmac: brcmf_fw_map_chip_to_name: using brcm/brcmfmac43455-sdio.bin for chip 0x004345(17221) rev 0x000006
Apr 14 22:13:28 raspberrypi kernel: brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Feb 27 2018 03:15:32 version 7.45.154 (r684107 CY) FWID 01-4fbe0b04
Apr 14 22:13:28 raspberrypi kernel: brcmfmac: brcmf_c_preinit_dcmds: CLM version = API: 12.2 Data: 9.10.105 Compiler: 1.29.4 ClmImport: 1.36.3 Creation: 2018-03-09 18:56:28
Apr 17 09:01:27 raspberrypi kernel: brcmfmac: power management disabled

As you see, it is power management disabled. So there is no need to worry about it. You don't need to disable it again.

Update after getting information about used hardware:
If you do not have an on-board WiFi and using an USB/WiFi dongle then you will not find brcmfmac because there is another driver loaded for the dongle. To execute programs on boot up you can use a systemd Unit file. I will give you here a bit more comfortable example for switching off or on power_save. Create a Unit file with:

rpi ~$ sudo systemctl --full --force edit [email protected]

In the empty editor insert these statements, save them and quit the editor:

[Unit]
Description=Set WiFi power save %i
After=sys-subsystem-net-devices-wlan0.device

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/iw dev wlan0 set power_save %i

[Install]
WantedBy=sys-subsystem-net-devices-wlan0.device

Now enable just what you want on boot up:

rpi ~$ sudo systemctl disable [email protected]
rpi ~$ sudo systemctl enable [email protected]
# or
rpi ~$ sudo systemctl disable [email protected]
rpi ~$ sudo systemctl enable [email protected]
11
  • journalctl | grep brcmfmac doesn't report anything, but iw wlan0 get power_save reports Power save: on. I'm using a Edimax Wifi dongle. Apr 18, 2019 at 16:29
  • @participant It is an important information. You should have said it in your question. On a Raspberry Pi with on-board WiFi wlan0 is used for it and wlan1 for additional USB/WiFi dongle. So what version of Raspberry Pi do you use? Please edit your question and complete it.
    – Ingo
    Apr 18, 2019 at 17:01
  • 7
    " Now it is disabled by default with the WiFi driver brcmfmac" - Not the case on my Raspberry 4 with default settings. It says "power save enabled". Dec 5, 2020 at 17:53
  • 4
    "Now it is disabled by default with the WiFi driver brcmfmac" seems to be OS version related. Power Management is enabled on my Raspberry Pi 3 Model B Rev 1.2 using Raspberry Pi OS Lite released 2021-03-04. Like @PhilippLudwig I created a standard service. May 8, 2021 at 12:48
  • 5
    @PeterGloor As far as I know the Foundation changed the default setting from powersave disabled on operating system Raspbian to powersave enabled on the Raspberry Pi OS.
    – Ingo
    Jun 21, 2021 at 8:43
25

I did it by simply adding a line to /etc/rc.local

/sbin/iwconfig wlan0 power off

Add that ahead of exit 0

and it will run at every boot.

1
  • 1
    haha googling for the subject I found your post on the official forums! This one worked, and I thank you and upvote you! Mar 17 at 23:20
4

This is still relevant for me when I want to use the RPi headless and log in through SSH, as there are no input devices plugged in and power management kicks in too early. Sometimes I couldn't log in via SSH, because the interface was already down. To permanently turn off WiFi power management, edit "/etc/network/interfaces" and add:

allow-hotplug wlan0
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
wireless-power off

# For second WiFi device, e.g. via USB
#allow-hotplug wlan1
#    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#wireless-power off
2
  • This works! Only thing that did on a 3A+ with 64bit raspberry pi os.
    – cmc
    Mar 1 at 21:58
  • I had upvoted, but this one failed me =( this setting makes no difference for the Raspi Zero W running retropie... I restarted the device, cat the file, the configuration was still there... but I was back on having trouble until I sudo iwconfig wlan0 power off it. Mar 17 at 23:15

Not the answer you're looking for? Browse other questions tagged or ask your own question.