Solución para poder suspender Asus 1225b en Linux
Al instalar Ubuntu sobre mi netbook Asus 1225b todo anduvo perfecto hasta que cerré la pantalla esperando que se suspenda. Si entraste a este post, seguro te encontraste con el mismo problema que me encontré yo, la computadora se queda como si nada hubiera pasado.
Resulta que no somos los únicos, ya que en Launchapd discutieron bastante sobre la solución. Pasó a describir paso a paso lo que se debe hacer:
1) Abrir una terminal y ejecutar
$ gksu gedit /etc/pm/sleep.d/20_custom-ehci_hcd
2) Pegar el siguiente código y guardar:
#!/bin/sh
#inspired by http://art.ubuntuforums.org/showpost.php?p=9744970&postcount=19
#...and http://thecodecentral.com/2011/01/18/fix-ubuntu-10-10-suspendhibernate-not-working-bug
# tidied by tqzzaa :)
VERSION=1.1
DEV_LIST=/tmp/usb-dev-list
DRIVERS_DIR=/sys/bus/pci/drivers
DRIVERS="ehci xhci" # ehci_hcd, xhci_hcd
HEX="[[:xdigit:]]"
MAX_BIND_ATTEMPTS=2
BIND_WAIT=0.1
unbindDev() {
echo -n > $DEV_LIST 2>/dev/null
for driver in $DRIVERS; do
DDIR=$DRIVERS_DIR/${driver}_hcd
for dev in `ls $DDIR 2>/dev/null | egrep "^$HEX+:$HEX+:$HEX"`; do
echo -n "$dev" > $DDIR/unbind
echo "$driver $dev" >> $DEV_LIST
done
done
}
bindDev() {
if [ -s $DEV_LIST ]; then
while read driver dev; do
DDIR=$DRIVERS_DIR/${driver}_hcd
while [ $((MAX_BIND_ATTEMPTS)) -gt 0 ]; do
echo -n "$dev" > $DDIR/bind
if [ ! -L "$DDIR/$dev" ]; then
sleep $BIND_WAIT
else
break
fi
MAX_BIND_ATTEMPTS=$((MAX_BIND_ATTEMPTS-1))
done
done /dev/null
}
case "$1" in
hibernate|suspend) unbindDev;;
resume|thaw) bindDev;;
esac
3) ahora ejecutar en la misma consola el siguiente comando: $ sudo apt-get install acpitool
4) Ahora ejecutar hasta que el último valor quede en “disabled”: $ sudo acpitool -W 16
5) Por último ir al BIOS de tu computadora (apretando F2 mientras aparece el logo de Asus cuando la computadora arranca) y activar la opción “wake up on lid”
Esta solución también puede ser aplicable a otros modelos de Asus con el mismo problema.