wake-on-lan
I'm trying to get wake-on-lan working for my media box. However, I'm running into a problem. When I halt the machine (shutdown -h) I cannot wake it. However, if the machine is unplugged, then plugged back in, *then* I can wake it. The lights on the ethernet card will only glow when the machine is off (i.e. card can wake the machine) when I unplug the power and plug it back in. I did find that however software suspend 2 shuts down the machine does leave it in a wakable state.
So, one option is to hibernate the machine instead of shutting down, but thats not a great solution. Also, I have a desktop machine that has a similar problem. The wake on alarm in the BIOS cannot wake the machine if linux performed the last shutdown. It looks to me like linux leaves the machine in a deeper sleep state than even plugging it in for the first time.
I tried to go into the code where the sleep state is hard coded and mess with it. I edited poweroff.c and changed the two hardcoded lines referring to S5 to S4. No affect. Just to make sure that I was really calling that code during shutdown I changed it to S0, and the machine remained on (in S0 state I believe). By the way, I also tried S3 there and found that I couldn't wake using the network card in any case.
The machines in question are running Fedora Core 4, but with my own custom kernels. The kernels are vanilla for the most part, but are patched with software suspend and a couple drivers. I'm sure this is probably something simple, but it doesnt look like I'm going to trip over the solution, so does anyone have any suggestions?
-Joe Dunn
Hi, Joseph
At Sun, 8 Jan 2006 10:45:13 -0700,
Quoted 8 lines · Joseph Dunn
I'm trying to get wake-on-lan working for my media box. However, I'm running into a problem. When I halt the machine (shutdown -h) I cannot wake it. However, if the machine is unplugged, then plugged back in, *then* I can wake it. The lights on the ethernet card will only glow when the machine is off (i.e. card can wake the machine) when I unplug the power and plug it back in. I did find that however software suspend 2 shuts down the machine does leave it in a wakable state.
How about this patch?
Thanks,
Satoru Takeuchi
To enable wakeup GPEs, acpi_enable_wakeup_device() has to be called. But current ACPI subssytem doesn't call this function at the shutdown time.
This patch fixes it.
drivers/acpi/sleep/poweroff.c | 1 + drivers/acpi/sleep/wakeup.c | 2 ++ 2 files changed, 3 insertions(+)
drivers/acpi/sleep/poweroff.c +1 -0
@@ -47,6 +47,7 @@/* acpi_sleep_prepare(ACPI_STATE_S5) should have already been called */ printk ("%s called\n" , __FUNCTION__);local_irq_disable (); +acpi_enable_wakeup_device (ACPI_STATE_S5 );/* Some SMP machines only can poweroff in boot CPU */ acpi_enter_sleep_state (ACPI_STATE_S5 ); }
drivers/acpi/sleep/wakeup.c +2 -0
@@ -48,6 +48,7 @@ }spin_unlock (&acpi_device_lock); } +#endif /** * acpi_enable_wakeup_device - enable wakeup devices
@@ -100,6 +101,7 @@spin_unlock (&acpi_device_lock); } +#ifdef CONFIG_ACPI_SLEEP /** * acpi_disable_wakeup_device - disable devices' wakeup capability * @sleep_state: ACPI state