Results 1 to 10 of 78

Thread: Ubuntu 12.04 LTS Suspend not working FIX

Threaded View

  1. #1
    Join Date
    Mar 2012
    Beans
    4

    Ubuntu 12.04 LTS Suspend not working FIX

    Hi! Finally after a long time of searching and messing around I have figure out a temporary work around solution until this bug gets patched in future kernel releases. Please see below:

    Use this script only if you have been experiencing issues with resuming from standby/suspend in Ubuntu 12.04 LTS and the screen remains lit but black when you wake your machine.


    Step 1:
    Open up a terminal and create a script file as follows:
    Code:
     sudo gedit /etc/pm/sleep.d/20_custom-ehci_hcd
    Step 2:
    Copy the entire script below into the file you just created and save it:
    Code:
    #!/bin/sh
    #inspired by http://art.ubuntuforums.org/showpost...0&postcount=19
    #...and http://thecodecentral.com/2011/01/18...ot-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
       #for bus in $EHCI_BUSES; do
         echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/unbind
     # done
       done
     }
     bindDev() {
      if [ -s $DEV_LIST ]; then
        while read driver dev; do
          DDIR=$DRIVERS_DIR/${driver}_hcd
          #for bus in $EHCI_BUSES; do
              echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/bind
          #done
          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
       chvt 1
      chvt 7
    }
     EHCI_BUSES="0000:00:1a.0 0000:00:1d.0"
    case "$1" in
        hibernate|suspend)
     unbindDev;;
         resume|thaw)
     bindDev;;
     esac
    Step 3:
    Give the script run permissions by typing:
    Code:
     sudo chmod 755 /etc/pm/sleep.d/20_custom-ehci_hcd
    This script should work or your money back guaranteed (Joking this is open source project so use at own risk :P ), as it forces the graphic card to reboot itself using a good old kick from chvt1 and chvt7 commands which simulate what I used to do manually using Ctrl + Alt + F1 and Ctrl + Alt + F7 to refresh the GUI.
    Last edited by Caboose885; June 9th, 2014 at 07:01 PM. Reason: added code tags for post

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •