I think you've probably set it to wake on a unicast message rather than a magic packet. One way to test this is to send anything (e.g. a ping) to that machine and see if it wakes up. This would explain why it doesn't work after a long time, as your router might cache the physical location of the IP address for some time then clear it. Try experimenting with the umbg switches (e.g. ethtool -s eth0 wol bg) - u = unicast, m= multicast, g = magic packet and b = broadcast address I think, or maybe that's not quite right but you get the idea.