Trace: » remote_server_administration » rotating_logs » rtorrent » setting_the_time_without_tzconfig » setting_up_vps » setup_firefox_on_edgy_eft » unattended_upgrades » upgrade_ubuntu_distro » use_the_ubuntu_live_cd_to_reinstall_a_windows_master_boot_record_mbr » ubuntu_oneiric_on_the_asus_x52f

Login

You are currently not logged in! Enter your authentication credentials below to log in. You need to have cookies enabled to log in.

Login

Ubuntu Oneiric on the Asus X52F

Ubuntu works pretty well on this machine with the exception of Suspend and Resume being broken.

These tutorials helped me sort that out:
http://thecodecentral.com/2011/01/18/fix-ubuntu-10-10-suspendhibernate-not-working-bug
http://askubuntu.com/questions/67280/wireless-doesnt-connect-after-suspend-on-an-asus-k52f

Firstly unbind/bind problematic drivers on suspend/resume

Create an executable file here:

/etc/pm/sleep.d/20_custom-ehci_hcd

Containing this:

#!/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_LIST
  fi
  rm $DEV_LIST 2>/dev/null
}

case "$1" in
  hibernate|suspend) unbindDev;;
  resume|thaw)       bindDev;;
esac

And then unload/load WiFi drivers on suspend/resume

Create an executable file here:

/etc/pm/sleep.d/00_wireless_sleep

And fill it with this:

#!/bin/sh

case "$1" in
  suspend|hibernate)
  /sbin/rmmod ath9k
  ;;
  resume|thaw)
  /sbin/rmmod ath9k
  /sbin/modprobe ath9k 
  ;;
esac
exit 0