How to Fix Wake-On-LAN or Wake-On-Real-Time-Clock Stopped Working
Summary
Do you have a GNU/Linux computer configured for either Wake on LAN or Real Time Clock wake up? Has it stopped waking up? If so the fix might be simple: Try replacing the motherboard battery which maintains the BIOS settings. Read on for the whole story.
This article was written in March 2023.
Update 2024-04-07: About Feb 27, 2024 Wake-On-LAN stopped working, again. On Apr 7, 2024 I replaced the motherboard battery and voila WOL started to work again. The old CR2032 battery still had more than 3 volts, but I guess not enough for WOL to work. This reaffirms the theory that if WOL stops working then it is time to try replacing the motherboard battery. Either that or the motherboard BIOS needs to be cleared somehow and then set up again. Interestingly all the old BIOS settings were still intact after changing the motherboard battery.
Contents
Background
In 2011 I built a few MythTV PVRs for family and friends. All of these PVRs are configured to save power. These are configured to automatically shutdown when no show recording or watching is occurring, then power up before a recording is needed. Some of these PVRs are also configured to Wake on LAN so that a different computer running MythTV frontend can automatically power up the MythTV backend. It is now 2023 and these PVRs are 12 years old.
Suddenly in January 2023 my PVR Wake-On-LAN function stopped working and no longer powered up when receiving the specially crafted network packet for WOL. Thinking that the motherboard BIOS setting might have been lost I booted into the BIOS and checked. The setting to for Wake-On-LAN was still set (in my BIOS the Power On by PCIE setting was enabled).
Then in March 2023, my PVR stopped waking up to record shows. This resulted in missed recordings. When I manually powered up the PVR then the recordings would resume working. Again I thought that the BIOS settings might have been lost; however when I checked this the settings were still properly configured.
While reflecting on the issue I thought what could it hurt to change the motherboard BIOS battery?
When I removed the old battery my volt meter showed the old battery as having just over 3 volts, so the battery did not appear to be a problem. The new battery I was to install was over 3.3 volts.
After installing the new battery and restoring my desired BIOS settings, my PVR now successfully works with both Wake-On-LAN and Wake-on-RTC.
Steps
To replace the motherboard BIOS battery.
-
Shutdown the computer.
-
Disconnect the power cord, and other cords to be safe.
-
Open the computer case (mine had one screw at the back to remove so I could slide the top cover off).
-
Ground yourself (I usually touch the screws in a light switch but for the extra cautious you might consider using an anti-static mat).
-
Carefully remove the old motherboard battery (mine was a lithium CR-2032 and I had to squeeze together some spring steel near the edge of the battery so that it would pop up).
-
Carefully insert a new battery.
-
Close the computer case
-
Reconnect the power cord, and other cords if you previously disconnected these.
-
Power on and press the key to enter the computer BIOS (mine was the Delete key).
-
Configure the BIOS.
In my case I set the following:
- Set dedicated iGPU memory to maximum amount (128 MB)
- Set SATA to AHCI mode
- Disable full screen on bootup
- Change boot order to DVD then USB then HDD
- Set Power ON when power restored
- Set Wake on PCIE (for Wake-On-LAN)
Be sure to save the chances when exiting BIOS setup.
-
Test to see if Wake-On-LAN or Wake-on-RTC are working.
At this point hopefully all is working well. If not then try searching for more solutions. In an extreme case I read a problem report that a person had resolved the issue by installing a new network card. Fortunately this was not needed in my situation.
Conclusion
If either Wake-On-LAN or Wake-on-RTC fails on your computer, try replacing the motherboard BIOS battery even if the old battery voltage seems adequate.
References
The following references might be useful: