Penguin
Note: You are viewing an old revision of this page. View the current version.

Prerequisites for WakeOnLan:

  • A motherboard aware of resume on ring events
  • A NIC with WakeOnLan support
  • Possibly a cable connecting the NIC to the WOL header on your motherboard (unless it's an onboard NIC)

You will need to enable WakeOnLan in the machine's BIOS, and you will need to know the NIC's MAC address.

From another machine you can then use ether-wake to send the special Ethernet frame:

$ ether-wake $MACADDRESS

If you add an entry mapping MAC addresses to hostnames to /etc/ethers, you will also be able to simply say

$ ether-wake <hostname>

Pre-compiled packages of ether-wake exist for most LinuxDistributions. In Debian, it's called etherwake, but the version available in Woody doesn't seem to support /etc/ethers.

Some Linux NIC drivers seem to disable the WakeOnLan function of the network card. If you can use WakeOnLan after booting into Windows, but not at all after booting into Linux, your driver is probably one of them. ethtool allows you to change this. An initial query of an interface's properties will look something like this:

$ ethtool eth0
Settings for eth0:
       Supports Wake-on: g
       Wake-on: d
       Link detected: yes

Here, MagicPacket (type g) WakeOnLan support is available but disabled (Wake-on: d). You can change this with a swift

$ ethtool -s eth0 wol g

This time, a query to confirm the result should produce something like this output:

$ ethtool eth0
Settings for eth0:
       Supports Wake-on: g
       Wake-on: g
       Link detected: yes

Note that you'll need to change the setting anew on every boot, so stick the command in rc.local or whichever boot script is applicable.