如何避免在机器暂停时关闭某些 USB 设备

int*_*ted 9 linux ubuntu usb power-management usb-drive

当系统进入挂起(又名 S3 或“挂起到 RAM”)模式时,我想为 USB 供电的驱动器保持供电。

通常,机器在暂停时会切断电源,这会导致机器被拆卸,然后在系统恢复时重新安装。这不是很好,特别是如果驱动器本身支持电源管理。

虽然我可以在单独的电源上运行它,但我更愿意避免为一些可以(至少在理论上)使用现有硬件完成的事情分配更多的布线。

我如何确定是否可以在我的系统上执行此操作,以及如何安排特定 USB 设备(即此外壳)始终以这种方式处理?

我正在运行 ubuntu 10.10。

更新

发现了这个 ubuntuforums 线程,它建议用于acpitool -w确定 USB 控制器的可用唤醒级别。

在我的系统上运行它会显示 USB 控制器的 S1:

$ acpitool -w
   Device   S-state   Status   Sysfs node
  ---------------------------------------
  1. LID      S3    *enabled   
  2. PBTN     S4    *enabled   
  3. PCI0     S3    *disabled  no-bus:pci0000:00
  4. USB0     S1    *disabled  pci:0000:00:1d.0
  5. USB1     S1    *disabled  pci:0000:00:1d.1
  6. USB2     S1    *disabled  pci:0000:00:1d.2
  7. USB3     S1    *disabled  pci:0000:00:1d.7
  8. MODM     S3    *disabled  
  9. PCIE     S4    *disabled  pci:0000:00:1e.0
Run Code Online (Sandbox Code Playgroud)

这似乎在告诉我,唤醒功能只能在 S1 状态下为 USB 启用。

我不确定这有多大用处,因为提供全功率和允许唤醒可能是正交问题。它可能启用唤醒仅提供低功率,因此可能有不同的方式来启用全功率。

如果打开唤醒确实等同于提供全功率,看起来我可以通过将 USB 卡放入扩展槽中来做我想做的事情(我猜这PCIE就是?)。虽然我想在尝试挖掘 USB2 PC 卡之前我想了解更多有关此的信息。

Mil*_*ach 5

在总线上启用唤醒并不等于在挂起时为该总线提供全部电源。它只是意味着系统将侦听与该设备对应的线路上的唤醒信号。备用电源由适当的总线提供,但该功率远小于正常操作的满功率。添加 PCI/PCIe USB 卡可能允许也可能不允许 USB 唤醒,但当计算机处于 S3 模式时,它绝对不会为 USB 端口提供全部电源。相反,它将提供足以保持芯片组运行的电流,根据我从英特尔的本页收集的有关其网络适配器的信息,大约为 200mA @ 3.3V。

我认为这是一个特定于主板的功能,并且只能通过 BIOS 进行控制。我有一个 Thinkpad 和一个 Gigabyte 主板,允许在机器未唤醒时为 USB 设备供电,在这两种情况下,它都是 BIOS 中的设置,而不是在系统完全启动时可以更改的设置。想想看,Thinkpad 可能有一种方法可以在运行时进行配置,但 Thinkpad 因具有用于管理电源选项的特殊 ACPI 扩展而闻名。无论如何,对于这两个系统来说,这是一个要么全有要么全无的命题——没有针对每端口或每设备配置的选项。我相当确定挂起状态下的全功率 USB 并不是 PC 上的标准配置,因此,没有便携式方法来检查它是否可用。

虽然它是额外的硬件,但我认为最简单、最通用的解决方案是仅使用供电的集线器。


raj*_*h87 3

内核支持USB 2.0省电功能

要在启动后禁用它,您可以尝试

echo 1 > /sys/bus/usb/devices/ your-USB-device /power/autosuspend

echo "on" > /sys/bus/usb/devices/ your-USB-device /power/level

有关更多详细信息,请参阅lesswatts.org 页面