如何正确配置WakeOnUSB?


13

如何在10.04或10.10 Ubuntu(2.6.36及更高版本,如果需要)上正确配置Wake-On-USB?(USB唤醒是指计算机处于睡眠状态,例如USB键盘事件将唤醒计算机!)笔记本计算机是Acer Aspire Timeline X 1830T。我不知道Linux内核以哪种方式支持控制器。

有多种方法可以解决此问题,例如/ proc / acpi / wakeup ...或UDEV ...或带有HAL的东西?

/proc/acpi/wakeup 显示S4中的每个设备,但我需要S3。

Device S-state Status Sysfs node
P0P2 S4 *disabled
PEGP S4 *disabled
P0P1 S0 *disabled pci:0000:00:1e.0
EHC1 S4 *disabled pci:0000:00:1d.0
USB1 S4 *enabled
USB2 S4 *disabled
USB3 S4 *disabled
USB4 S4 *disabled
EHC2 S4 *disabled pci:0000:00:1a.0
USB5 S4 *disabled
USB6 S4 *disabled
USB7 S4 *disabled
HDEF S0 *disabled pci:0000:00:1b.0
RP01 S5 *disabled pci:0000:00:1c.0
PXSX S5 *disabled pci:0000:01:00.0
RP02 S0 *disabled pci:0000:00:1c.1
PXSX S5 *disabled pci:0000:02:00.0
RP03 S0 *disabled
PXSX S5 *disabled
RP04 S0 *disabled
PXSX S5 *disabled
RP05 S0 *disabled
PXSX S5 *disabled
RP07 S0 *disabled
PXSX S5 *disabled
RP08 S0 *disabled
PXSX S5 *disabled
GLAN S0 *disabled
PEG3 S4 *disabled
PEG5 S4 *disabled
PEG6 S4 *disabled
SLPB S3 *enabled
  • S4,这是Suspend-To-Disk afaik ...如果我在唤醒表中回显USB1,似乎也不起作用。它只是设置一个S4标志。
  • 我可以在S3中获得USB端口吗?

我想使机器从Suspend-To-Ram(S3,ACPI standard)唤醒,以防按下外部键盘上的某个。仅在按下内部笔记本电脑键盘上的键时才会唤醒...从Suspend To Ram。如果我插入USB鼠标,似乎USB端口甚至没有通电。我没有BIOS选项可以更改此设置。

有关设备的更多特定信息:

usb-devices
T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 13 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=04d9 ProdID=1603 Rev=03.10
S: Manufacturer=
S: Product=USB Keyboard
C: #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid
I: If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid

root@underwater-laptop:/# lsusb
[...]
Bus 001 Device 013: ID 04d9:1603 Holtek Semiconductor, Inc.
Bus 001 Device 004: ID 0bda:0138 Realtek Semiconductor Corp.
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[...]

如果这不起作用,我必须正确解释原因:(-但我认为很难研究此内核的内部。这里是否提供了很好的信息提示?我希望有可能...我正在寻找任何解决方案。

编辑:这在USB上唤醒,可在Windows上使用!

非常感谢Marius


1
如果您说您没有BIOS选项可通过外部USB端口传递信号,并且如果外部USB设备甚至都没有电源(对于电池驱动的笔记本电脑来说很有意义),那么这应该怎么做?Ubuntu没有魔术可以做到这一点。
塔卡特

它适用于Windws。因此,我假设有一个选项可以将特定标志传递给硬件。;)在硬件和Linux方面,我有这样的雄心壮志:每个人都可以驾驶运输飞机并运行Windows。但是只有少数人可以驾驶战斗机并运行Linux;)
wishi 2010年

哦是的,Top Gun:每个人都可以使Windows崩溃,但是使Linux崩溃是一件非常困难的事情;如果Windows上的LAN唤醒功能可以为您的USB设备供电(可能处于节能模式)。
塔卡特

Answers:


4

由于没有USB *设备与PCI总线绑定,因此系统的ACPI表似乎有问题。

在笔记本电脑上,插入USB键盘后,可以在输出中看到pci路径0000:00:1d.0dmesg

input: ... as /devices/pci0000:00/0000:00:1d.0/usb6/6-2/6-2.3/6-2.3:1.0/input/input14

从那里,我可以在中找到ACPI设备名称/proc/acpi/wakeup,并在其中回显以启用它:

USB0  S3 enabled  pci:000:00:1d.0

我假设由于您的系统缺少pci总线到ACPI设备的映射,因此无法使其正常工作。您可能需要开始调试DSDT,以获取更多信息。http://acpi.sourceforge.net/dsdt/index.php


1

我在2.6.32-37的Ubuntu Lucid 10.04.3上发现使用毫无用处/proc/acpi/wakeup。似乎/sys唯一重要的事情。

usb-wakeup下面链接的我的脚本使/sys树反向移动以仅启用USB设备,即键盘和鼠标。它还启用了其父集线器和控制器。这就是我使它工作所需的时间。udev规则在启动时以及插入任何USB设备时触发脚本。

udev脚本要求该脚本在其中/usr/local/sbin,并确保使该脚本可执行chmod 755 /usr/local/sbin/usb-wakeup


1

使用lsusb获取您的USB设备的产品和供应商ID:

Bus 004 Device 002: ID 0458:002e KYE Systems Corp. (Mouse Systems)

在我的情况下,其鼠标ID为0458:002e,然后创建新的udev规则:

sudo nano /etc/udev/rules.d/90-keyboardwakeup.rules

插入此代码,并用lsusb中的正确ID替换idVendor和idProduct

SUBSYSTEM=="usb", ATTRS{idVendor}=="0458", ATTRS{idProduct}=="002e" RUN+="/bin/sh -c 'echo enabled > /sys$env{DEVPATH}/../power/wakeup'"

重新启动并测试。在11.04和12.04上进行了测试(也可以在较低版本上使用)。我在此论坛帖子中找到了答案(ederopaa的答案)


1
欢迎来到Ask Ubuntu!虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
伊利亚·卡根
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.