ubuntu 自动挂起_ubuntu不能正常挂起以及挂起后不能唤醒的解决办法

本文提供了一个bash脚本来解决Ubuntu系统自动挂起以及挂起后无法正常唤醒的问题。脚本包括了挂起前的设备卸载和挂起后的设备重新绑定步骤,适用于ehci和xhci驱动。使用方法包括赋予脚本执行权限并重启。
摘要由CSDN通过智能技术生成

#!/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

第三步:

命令行键入:

sudo chmod 755 /etc/pm/sleep.d/20_custom-ehci_hcd

重启即可。

请参考这里有更方便的粘贴代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值