Answers:
我还没有检查BIOS,但是找到了解决方案!
简短摘要:在中/proc/acpi/wakeup
,您可以查看当前启用了哪些设备以从挂起状态恢复。该列表显示了所谓的“设备”的名称(缩写)。示例“ PWRB”表示“电源按钮”。
如果将设备名称写入该文件,则可以在启用/禁用之间切换它们。
我在发现该信息的博客的基础上写了一个小的HowTo来禁用鼠标唤醒功能。
sudo
将不起作用:首先必须要做sudo su
,然后回显至/proc/acpi/wakeup
。但是,我想知道是否有人找到了一种仅禁用鼠标的方法? (通过无线USB)连接到我的桌面上,这也将禁用键盘唤醒功能
感谢所有海报,因为鼠标唤醒给您带来了很大的不便,我在这里得到了答案。我希望在解决方案中加入我的想法,因为这可能会在更多情况下有所帮助。我必须禁用中的3个不同项/proc/acpi/wakeup
。我的设备:EHC1, EHC2, XHCI
。前两个是usb2,第三个是usb3条目。请注意,尽管我的鼠标的USB收发器已插入USB2端口,而USB 3端口中没有任何物品,但计算机将在鼠标移动时唤醒,直到禁用所有3个项目。
$ cat /proc/acpi/wakeup | sort
Device S-state Status Sysfs node
EHC1 S3 *disabled pci:0000:00:1d.0
EHC2 S3 *disabled pci:0000:00:1a.0
GLAN S4 *enabled pci:0000:08:00.0
.. ,, ..
USB7 S3 *disabled
WLAN S3 *disabled pci:0000:03:00.0
XHCI S3 *disabled pci:0000:07:00.0
要在每次启动时禁用唤醒项目,可以在/etc/rc.local
..中添加类似的内容。
echo EHC1 > /proc/acpi/wakeup
echo EHC2 > /proc/acpi/wakeup
echo XHCI > /proc/acpi/wakeup
由cipricus编辑:
我正在编辑此文件,因为我需要添加更多详细信息,以便根据该答案作为上述内容的重复项目来结束我的单独问题;我认为这比单独发布答案更有用。
***测试哪些项目需要被停用-指示此处 -为每个被张贴作为项的enabled
下cat /proc/acpi/wakeup | sort
通过在终端中运行的每个下面的命令,然后测试如果鼠标唤醒系统(而不需要重新启动) :
sudo sh -c "echo EHC1 > /proc/acpi/wakeup"
sudo sh -c "echo EHC2 > /proc/acpi/wakeup"
sudo sh -c "echo XHCI > /proc/acpi/wakeup"
(就我而言,即使使用其他USB端口进行测试,第一个也足够了)
***如果/etc/rc.local
文件不存在-根据这篇文章:
printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local
该文件应类似于:
#!/bin/bash
echo EHC1 > /proc/acpi/wakeup
echo EHC2 > /proc/acpi/wakeup
echo XHCI > /proc/acpi/wakeup
exit 0
重启。
如果仍然不起作用,则可能是文件/etc/systemd/system/rc-local.service
丢失或配置不正确。
测试
sudo /etc/init.d/rc.local start
和
sudo systemctl status rc-local
创建文件:
sudo nano /etc/systemd/system/rc-local.service
然后添加以下内容。
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
保存并关闭文件。要在Nano文本编辑器中保存文件,请按Ctrl + O,然后按Enter进行确认。要退出文件,请按Ctrl + X。
使用以下命令检查一切正常,没有错误:
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service
重新启动以查看更改。
我的系统是Ubuntu 15.10
我试图使用lsusb
命令来查找什么是鼠标设备。非常简单,您键入lsusb
然后拔下鼠标(在我的情况下,这是蓝牙接收器),然后lsusb
再次键入。该设备如下所示:
Bus 007 Device 008: ID 24ae:2000
现在/sys/bus/usb/devices/
,使用相同的方法(拔出/插入)在文件夹中找到它。就我而言,我发现它们位于以开头的文件夹中7-2*
。
现在尝试阅读idProduct和idVendor。例如:cat /sys/bus/usb/devices/7-2.3/idProduct
=> 2000
,cat /sys/bus/usb/devices/7-2.3/idVendor
=> 24ae
。而已。
最后,我在/lib/systemd/system-sleep
目录中创建一个脚本,并根据需要命名。
#! /bin/sh
if [ ! -r /sys/bus/usb/devices/7-2.3/power/wakeup ]; then
exit 0
fi
case "$1" in
pre )
echo disabled > /sys/bus/usb/devices/7-2.3/power/wakeup
;;
esac
全部做完。
这个脚本解决了我的问题。看看这个。
#!/bin/bash
# allow only one instance
r=$(pidof -x -o $$ ssmonoff.sh)
set -- $r
if [ "${#@}" -ge 1 ]; then
echo "Script already running. Exit..."
exit
fi
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | ( while read line; do
if echo $line | grep "boolean true" &> /dev/null; then
xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "0"
xset dpms force off
else
xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "1"
fi
done )
您所需要做的就是,首先运行sudo xinput list
,找到给定的USB鼠标名称,并将其放在脚本中。然后,将文件另存为“ ssmonoff.sh”,使其可执行,并将其设置为在启动时运行。
可能有一种特定于您的硬件的方式,在这种情况下,可以通过系统的BIOS设置使用该选项。
进入BIOS菜单更改设置也是特定于系统的。通常,您在重新启动后立即按一个键,并且该键通常显示在屏幕上。
但是,user138339的答案似乎是实现所需需求的更通用的方法,您可以从正在运行的系统中执行此操作。
这是我逐步为您准备的“教程”:
cat /proc/acpi/wakeup
显示唤醒设备列表sudo sh -c "echo XXXX >/proc/acpi/wakeup"
(用设备代码替换“ XXXX”)来切换设备状态(启用/禁用)。一次移动一台设备,尝试挂起您的计算机,然后使用您要禁用的设备将其唤醒,直到应得的设备将无法唤醒计算机。别忘了总是重新启用不想禁用的设备。#!/bin/sh
printf "XXXX" > /proc/acpi/wakeup
不要忘记用设备代码替换“ XXXX”)/etc/init.d/
。要复制文件,请使用以下命令:(
sudo cp /home/USERNAME/Desktop/acpi_wakeup /etc/init.d/acpi_wakeup
将“ USERNAME”替换为您的实际用户名)sudo chmod 755 /etc/init.d/acpi_wakeup
sudo update-rc.d acpi_wakeup defaults
它显示了,WARNING: ...missing LSB tags and overrides
但是可以。您不必担心。)资料和进一步阅读:
http://www.das-werkstatt.com/forum/werkstatt/viewtopic.php?f=7&t=1985 http://ubuntuforums.org/showthread.php?t=814939&page=3