web-dev-qa-db-fra.com

Ports USB indisponibles après suspension

Mon problème est qu'après avoir installé Ubuntu 12.04 sur mon ordinateur portable, la suspension n'a pas fonctionné. Grâce à cette formation , j'ai résolu le problème de la suspension. Mais après la reprise de la suspension, mes ports USB ne sont plus disponibles.

3
Milad Nekofar

J'avais un problème similaire. Et après une semaine de recherche, j'ai découvert quel était le problème pour moi. Dans le noyau Ubuntu, les pilotes USB sont intégrés. Par conséquent, lors de la suspension et de la reprise, les pilotes ne pouvaient pas être déchargés, puis rechargés en tant que modules. Je devais donc compiler le noyau Linux à partir des sources et m'assurer que les pilotes USB (xhci_hcd et ehci_hcd) étaient conçus pour être des modules chargeables.

A partir de là, j'ai créé un fichier nommé 20_custom-ehci_hcd dans /etc/pm/sleep.d/.

#!/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 fi
  rm $DEV_LIST 2>/dev/null
}
case "$1" in
  hibernate|suspend) unbindDev;;
  resume|thaw) bindDev;;
esac

J'espère que cela fonctionne pour vous. J'ai peut-être créé un autre fichier quelque part, mais je ne le trouve pas pour le moment.

J'ai trouvé cet autre fichier. Dans /etc/pm/config.d/, j'ai créé un fichier appelé modules.

modules

SUSPEND_MODULES="xhci ehci_hcd xhci_hcd xhci-hcd ehci-hcd"
1
aaboagye

Il existe une solution plus simple que de reconstruire le noyau à partir de http://ubuntuforums.org/showthread.php?t=146079 Je n'avais besoin que de la fonction unbind/bind sur mon Asus N53SV

0
Charles

Merci qui a aidé.

Pour moi, je devais a) dissocier les périphériques USB, et b) désactiver manuellement le wifi.

Au cas où quelqu'un le jugerait utile, voici a):

root @ tosh: ~ # cat /etc/pm/sleep.d/20_usb_suspend_fix

#!/bin/sh

LOGTAG=PwrUsbFix
UNDO=/var/run/pm-utils/pm-suspend/storage/rebind_usb.sh

# check am root
[ "$(id -u)" = 0 ] || {
    echo "$LOGTAG : must be run as root!"
    exit 1
    }

case "${1}" in
    hibernate|suspend)
        : > ${UNDO}
        find /sys/bus/pci/drivers -maxdepth 2 -path \*\[eu\]hci\* -name unbind | cut -d\/ -f -6 | \
            while read BUS ; do 
                find ${BUS} -maxdepth 1 -type l -name 00\* | \
                    while read DEVPATH ; do
                        DEVICE=`basename $DEVPATH`
                        echo "$LOGTAG : echo ${DEVICE} > ${BUS}/unbind"
                        echo -n "${DEVICE}" > ${BUS}/unbind
                        echo "echo \"${LOGTAG} ${DEVICE} > ${BUS}/bind\"" >> ${UNDO}
                        echo "echo -n \"${DEVICE}\" > ${BUS}/bind" >> ${UNDO}
                    done
            done
    ;;
    resume|thaw)
        . ${UNDO}
    ;;
esac

exit 0

et B)

root @ tosh # cat /etc/pm/sleep.d/30_wifi_off

#! /bin/sh

MODULES="ath9k ath9k_common ath9k_hw ath"

case "${1}" in
        hibernate|suspend)
              # Switch wireless off
              nmcli nm sleep true
              rfkill block 0
              rmmod ${MODULES}
        ;;
        resume|thaw)
              # Switch wireless on
              modprobe ${MODULES}
              rfkill unblock 0
              nmcli nm sleep false
        ;;
esac

enfin - sys info ..

http://www.Toshiba.co.uk/discontinued-products/satellite-pro-p300-28e/

root@tosh:~# uname -a
Linux tosh 3.13.0-31-generic #55~precise2-Ubuntu SMP Wed Jul 2 17:02:56 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

root@tosh:~# lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 12.04.5 LTS
Release:    12.04
Codename:    precise
0
jmullee