Wake-on-LAN worked 3 times then no more
Update: My main theories for now are (see below for details):
- Ubuntu system shuts down NIC power in standby mode?
- Realtek RTL8111 driver for 64-bit machines does not work?
Can anyone confirm or deny?
I installed Ubuntu 12.04 a few days ago and got Wake-on-lan to work by sending Magic Packets from a different PC after having put the Ubuntu machine in standby via the desktop menu. I did this 3 times and it worked beautifully. Then suddenly it didn't work anymore! How on earth can this be possible?!
I know potentially 1000 things can be wrong when WOL doesn't work but the fact it worked 3 consecutive times rules out most of them. It worked 3 times (a few minutes apart) and after that has never worked. During the 3 times it worked and the followingh 10 unsuccessful tries the only thing I fiddled with was the firewall on the PC that sends the magic packets, and I soon switched the firewall off to eliminate that potential problem, and also verified the packets come through with wireshark (with the Ubuntu machine on then of course). I made a full update of Ubuntu a few hours before the tests started.
Most of the time I feel like I'm just testing various things blindly. Is there for example any way to check that power isn't shut down for the NIC? And doesn't the "cat /proc/acpi/wakeup" being "disabled" mean something's wrong?
There's lots of threads on WOL, I know, but none where it works perfectly for 10 minutes then stops working for no reason. A few threads mention problems with WOL after 12.04 was installed. My only remaining idea right now is to install Ubuntu 10. But that would just be a test, not a permanent solution, and a very time consuming test. And I'm sure RTL8111/RTL8168 isn't properly supported on older Ubuntus (there have been major problems with those NICs with older Ubuntus) which complicates such a test even more.
You should only have to read the text above to understand my problem. But for in-depth info, here are some facts and tests I've done:
- I tried adding "pci=noacpi", "pci=noapic", "acpi=force" and "apm=on apm=power-off" to /etc/default/grub (and I verified the changes in grab.cfg). One at a time of course (reboot after each).
- I saw the NIC was disabled in cat /proc/acpi/wakeup, enabled it with command "echo -n LAN | sudo tee /proc/acpi/wakeup" and now LAN was enabled in the list
- Firewalls are disabled
- ethtool shows wol is in state "g" (I tried setting it to "pumbag", and also to "d" then "g").
- It is an ASUS board with Realtek RTL1111/R8168B (driver R8169 came with the kernel and it was with that driver is worked 3 times; lately I changed to driver R8168 which wasn't easy but I can't see any difference and people seem to report R8169 should be used for all nowadays).
- I also tried using wireshark on the Ubuntu machine to verify the magic packets got through to the PC
- Tried resetting CMOS RAM (both by jumper and removing battery for 5 minutes).
- NIC LED is not lit when in sleep but it's also not lit on my other PC when in sleep and WOL works for that PC.
- I tried enabling "Wake on when hit PS/2 spacebar" in BIOS, started Ubuntu, selected "Standby" from menu so that it got into standby, pressed spacebar, and it started. Also worked after Terminal command pm-suspend and halt -p (shuts down and reboots completely though) but does not wake after command halt. Halt makes the OS shut down but the HW to remain on. Still ignoring WOL in all cases.
- When in standby the power LED blinks, fans and hard disk are silent, and this remains the same after WOL attempts
- Program used for sending magic packets is: magicpacket(dot)free(dot)fr on a different (Windows) PC
- Settings for Magic Packet sender is UDP port 80 subnet mask 255.255.255.255 and that's the settings it worked with but I also tried ports 9, 7 and 0, TCp and mask 0.0.0.0. Have double checked MAC address but I entered it via copy-and-paste and it has worked with these settings 3 times as I mentioned.
- I have only used Ubuntu for a week (have some brief experience with Linux and Unix systems from long ago)
- I haven't added "ethtool -s eth0 wol g" (or "echo -n LAN | sudo tee /proc/acpi/wakeup") to startup scripts since I believe WOL should work ONCE if these things are set properly (script are needed to make it work after each reboot) The motherboard Asus AT5NM10T-I has no BIOS updates (is v0306) Tried most things on these pages: wiki.ubuntuusers.de/Wake_on_LAN -- en.gentoo-wiki.com/wiki/ACPI/Fix_common_problems#Nothing_Works -- wiki.xbmc.org/index.php?title=HOW-TO:Enable_Wake-On-Device_for_Ubuntu
Updates:
- Yes I have enabled "Power on by PME" (PCI Power Management Events) in BIOS. I also enabled "Power on by Ring" since someone suggested that in a forum but I can't believe it affects WOL but also can't hurt. Since it worked 3 rimes this is no BIOS settings problem.
- I actually tried reinstalling Ubuntu 12.04, and again it worked 3 times then after that is dead. (Actually this time it worked 1 time, then didn't work, then worked 2 times in a row, then never again.) --- Some details on this new test which probably have no significance: It didn't work until I enabled Samba properly for file sharing between PCs in a workgroup. The 3 times it worked I did not have to send sudo ethtool -s eth0 wol g (sudo ethtool eth0 always reports it is in wol mode "g" so apparently my NIC starts in that mode). And sudo cat /proc/acpi/wakeup now always shows LAN as "enabled" now. This time I used the downloaded 12.04 without updates (Ubuntu's desktop said there were no updates), later (long after it stopped working) it said there were 136 updates, I installed them and rebnooted, still didn't work.
- Apparently this NIC has been troublesome for Linux users for years, but I thought it was working properly since recently, with the driver that comes with the kernel. It isone of the most common NICs I think.
Update:
- I tested with Ubuntu 11.10. It has the same problems, or a version of it: WOL seems to work about 1 out of 4 times. Doesn't suddenly stop working, just doesn't work every time (far from it).
- Tested with Windows 7. Installed Realtek driver. Ticked "allow only magic packet to wake up" in NIC settings (HW manager) and it worked flawlessly, tested 5 times in a row. Note: First I didn't bother to install video and audio drivers and then only hibernation worked, but it did respond to WOL calls flawlessly. Installed video and audio driver plus "PC Probe II" which seems to have something to do with ACPI driver. Did this after I read in Wikipedia on ACPI that Windows might not allow standby (S3) if one device in the system doesn't support acpi.
- When in sleep mode (or hibernation) in Windows, I can still see this unit in the router's list of attached devices (but the LED on the NIC is out). (As I said before, for a different PC, it is not seen in this list even though WOL works, so apparently this isn't always the case). For this PC, however, it might indicate that the NIC hasn't any power, i e that the problem here is that Ubuntu shuts down the NICs power.
- I forgot to mention my machines are all 64 bit. It is not so uncommon that 32 bit drivers work while 64 bit drivers don't. So one suspicion is that the 64 bit Realtek driver still doesn't work properly on Linux with RTL8111 etc - I know there's been problems with these NICs for years which I read were solved rather recently, but can anyone confirm they have RTL8111/RTL8168&RTL8168B etc working with WOL on a 64 bit machine?
So my main theories for now are:
- Ubuntu system shuts down NIC power in standby mode?
- Realtek driver for 64-bit machines does not work?
Solution 1:
I had the same problem. But on my machine there was an old Suse and windows installed. When I shutdown from that OS's WakeOnLan works fine. But I want to use Ubuntu 1204LTS 64bit. After shutdown from Ubuntu the computer dont wakes on WOL. I tested the setting with ethtool. But everything was adjusted.
Solution: Download the newest driver from realtek and install it. That works for me.
www.realtek.com/downloads/ Download this driver:
LINUX driver for kernel 2.6.x and 2.4.x (Support x86 and x64) 8.030.00 2012/5/14
Then type these in the terminal:
cd ~/Downloads
tar -xvjf r8168-8.030.00.tar.bz2
cd r8168-8.030.00/
sudo ./autorun.sh
That's all.
Rolf