I now have a Dell Latitude D400 for 1 month. This little (really small) computer is pretty nice to use, but it right now, it’s really hard to have suspend working on this kind of stuff. The main reason: it only support ACPI (no APM), and ACPI isn’t well supported by the Linux kernel.
I have tested several way to fix this issue. The only that’s working fine right now, is to use swsup. So to make it work:
- install the latest 2.6.9 kernel (the 2.6.8 has a issue w/ agpart and drm)
- in kernel select ‘ACPI -> sleep state’
- and ‘ACPI -> swsup’
- build the kernel
- create a swap partition if you don’t have one (i resized a ntfs w/ qparted)
- mkswap /dev/hda4 (for example)
- add ‘resume=/dev/hda4′ in your boot prompt (in grub for example)
Now your system is ready. Reboot :) ..To put the the system in standby and dump the current state in the swap: echo 4 > /proc/acpi/sleep.
Next step simply bind the power button on this action. This is done w/ the acpid.
#!/bin/sh # /etc/acpi/powerbtn.sh # put the box in swsup mode echo 4 > /proc/acpi/sleep
Beside the S2/S3 ACPI doesn’t work right now, swsup permit to have suspend to disk without too much trouble.
It’s easy to map an ACPI lid event to execute the standby script.
I just copied my_standby_script to /etc/acpi/standby and My /etc/acpi/events/lid has the following lines :
# /etc/acpi/events/lid
event=button[ /]lid
action=/etc/acpi/my_standby_script
Thanks for sharing this information, it was very helpful and concise.