OK depois de um pouco de trabalho eu modifiquei os scripts acima das outras sugestões. Obrigado @wangdw! Aqui está o seguinte script bad ass (não esqueça como antes de criar um arquivo usando o sudo gedit /etc/pm/sleep.d/20_custom-ehci_hcd e também para definir as permissões de leitura usando o sudo chmod 755 / etc / pm / sleep .d / 20_custom-ehci_hcd):
#!/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 #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/null chvt 1 chvt 7 } EHCI_BUSES="0000:00:1a.0 0000:00:1d.0" case "" in hibernate|suspend) unbindDev;; resume|thaw) bindDev;; esac