Wake-on-LAN works with Windows 8 but not with Ubuntu

I have a PC that has a Windows 8 partition and an Ubuntu 13.04 partition. I am trying to get wake-on-lan to work. Everything works fine on the Windows 8 partition: I can wake-on-lan from both the sleep state and the shutdown state. However, when I shutdown Ubuntu using:

sudo shutdown -h now

I cannot wake the PC through my LAN. Is this because the network interface is getting turned off? What command can I use or how can I reconfigure Ubuntu so that wake-on-lan still works?

Also, if I do not use the -h option in the shutdown command, the PC does not actually shutdown; it just freezes up on me.

Using ethtool, I found that it says:

Supports Wake-on: pumbg
Wake-on: g
...
Link detected: yes

My etc/network/interfaces says this:

auto eth0
iface eth0 inet dhcp
      up ethtool -s eth0 wol g

EDIT: I have found that if I shut down the PC by simply holding the power button, then wol works. If I shutdown using the command line or through the Ubunutu GUI, then it does not work. So I think the issue is not that it is not being setup properly, but that something is overriding it or shutting it off when I shut down properly. Are there are any scripts that get run at shutdown?

I have added

NETDOWN=no

to both etc/default/halt and etc/init.d/halt


Solution 1:

Your commands are close, but try this in command line:

sudo ethtool -s <NIC> wol g

or add this to your /etc/network/interfaces file:

auto eth0
iface eth0 inet dhcp
    up ethtool -s eth0 wol g

'g' enables wake via "Magic Packet"

Looks like if you are shutting down using the following command:

sudo shutdown -h now  

then you will also need to edit your /etc/default/halt file. Add the following line:

NETDOWN=no

and see if that works. That should prevent the -h (halt) from shutting down the network interfaces.

Solution 2:

this is how I got mine working (just done this this morning)

I created a file as root/sudo in /etc/init.d/ called wakeonlanconfig with the following in it

#! /bin/bash
ethtool -s eth0 wol g
exit

then I set the permissions on this file to

sudo chmod a+x wakeonlanconfig

then to make sure it executed on startup I did

sudo update-rc.d -f wakeonlanconfig defaults

and rebooted the machine, powered it down again and then from another machine on the network used the wakeonlan command to startup it up again

wakeonlan <mac address of machine to be woken up>

hey presto machine booted up, hope this helps