I am affected by this bug: 869502.
A workaround which seems to stop the kernel panics for me is to disable wlan0 power management:
sudo iwconfig wlan0 power offHowever it seems to automatically turn power management back on when I unplug the power cable and I think at many other times, too.
Is there something that might be causing this? Does anyone know how I can prevent it?
311 Answers
Type iwconfig and look at the output. You should see the name of your chip-set as well as the whether power management is off or on. If it doesn't say, it is probably off.
To turn off power management, go to /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf and you will see
[connection]
wifi.powersave = 3Change the 3 to a 2 and reboot.
Then run iwconfig and if it worked you should see Power Management:off.
Source:
7Wireless powermanagement is run by a hook in pm-utils. You can turn it off in any of the following way:
Create a file in /etc/pm/config.d.
I have named it blacklist:
gksu gedit /etc/pm/config.d/blacklistand inside the file keep:
HOOK_BLACKLIST="wireless"If you want to disable any other hooks, default hooks are located at /usr/lib/pm-utils/power.d/.
OR
You can just create an empty hook in either /etc/pm/sleep.d or /etc/pm/power.d. See which one works for you.
i.e.
Just do
sudo touch /etc/pm/sleep.d/wirelessOR
sudo touch /etc/pm/power.d/wireless 4 If turning off power management for your wireless interface speeds up internet like this:
sudo iwconfig wlan0 power offThan to make it permanent run command as follows:
cd /etc/pm/power.dsudo gedit wifi_pwr_offThis will open an empty file, copy the code below into it:
#!/bin/sh /sbin/iwconfig wlan0 power offSave the file, remember to
sudo chmod +x wifi_pwr_offand restart.
My preferred way is to add the following line in /etc/network/interfaces to my wireless interface's settings:
post-up iwconfig wlan0 power offHere's a complete example:
auto wlan0
iface wlan0 inet static address 192.168.1.2 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.254 post-up iwconfig wlan0 power off wpa-conf /etc/wpa_supplicant/wpa_supplicant.confNote that man interfaces says the behaviour of post-up may change in the future.
For some reason, the top-voted solutions didn't work for me and power management kept turning back on. I ended up doing the following:
sudo gedit /etc/rc.localAnd added the following line before exit 0:
( sleep 30 && iwconfig wlan0 power off )&That turns off power management 30 seconds after logging in...
Edit: Actually that wasn't enough. I kept trying a bunch of stuff, including which I think solved my problem (I hope).
Another approach is to add an explicit directive (wireless-power) to control power management in the /etc/network/interfaces configuration file (e.g. Disable it for wlan0 with DHCP):
auto wlan0
iface wlan0 inet dhcp wireless-power off A better approach (at least on Ubuntu 16.04) is to create /etc/network/if-up.d/wifi-powerman-off with the following contents:
#!/bin/sh
IWCONFIG=/sbin/iwconfig
WLAN_IFACE=<your wireless device here>
if [ ! -x $IWCONFIG ]; then exit 1
fi
if [ "$IFACE" = $WLAN_IFACE ]; then $IWCONFIG $IFACE power off
fiand set it as executable. Power management will be off from the next time you connect to a network.
This works well with NetworkManager.
2Great advice. 'sudo iwconfig wlan0 power off' seems the only way to get my ath9k module stabily working (with kernel 3.2 - curiously in kernel > 3.5 there seems to be no problem, but that kernels because of their suspend-to-ram/disk problems with amd64 seem to be a no go, unfortunately . . . :-( )
If you use laptop-mode-tools, then you can disable wireless power management by editing /etc/laptop-mode/conf.d/wireless-iwl-power.conf (Ubuntu 14.04):
# Control Intel IWL wireless power?
# Set to 0 to disable
CONTROL_IWL_POWER=0 Why not open crontab and add the command at boot/reboot. This seems like the easiest and most universal method:
sudo crontab -eand then add
@reboot iwconfig wlan0 power offCould be that you have to install iwconfig first: sudo apt install wireless-tools
I created the following systemd service to PERSISTENTLY kill Power Management on WiFi across reboots. Tested and known to work. Just paste the below bash script into a file, chmod 700 the file and sudo ./yourFileName.sh :
if [ -d /root/scripts ]; then mkdir /root/scripts
fi
apt-get -y install iw
apt-get -y install wireless-tools
cat <<EOF> /root/scripts/pwr-mgmnt-wifi-disable.sh
#!/bin/bash
iw dev wlan0 set power_save off
EOF
chmod 700 /root/scripts/pwr-mgmnt-wifi-disable.sh
cat <<EOF> /etc/systemd/system//pwr-mgmnt-wifi-disable.service
[Unit]
Description=Disable WiFi Power Management
Requires=network-online.target
After=hostapd.service
[Service]
User=root
Group=root
Type=oneshot
ExecStart=/root/scripts/pwr-mgmnt-wifi-disable.sh
[Install]
WantedBy=multi-user.target
EOF
chmod 644 /etc/systemd/system/pwr-mgmnt-wifi-disable.service
systemctl enable pwr-mgmnt-wifi-disable.service
systemctl start pwr-mgmnt-wifi-disable.service