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 卡之前我想了解更多有关此的信息。
在总线上启用唤醒并不等于在挂起时为该总线提供全部电源。它只是意味着系统将侦听与该设备对应的线路上的唤醒信号。备用电源由适当的总线提供,但该功率远小于正常操作的满功率。添加 PCI/PCIe USB 卡可能允许也可能不允许 USB 唤醒,但当计算机处于 S3 模式时,它绝对不会为 USB 端口提供全部电源。相反,它将提供足以保持芯片组运行的电流,根据我从英特尔的本页收集的有关其网络适配器的信息,大约为 200mA @ 3.3V。
我认为这是一个特定于主板的功能,并且只能通过 BIOS 进行控制。我有一个 Thinkpad 和一个 Gigabyte 主板,允许在机器未唤醒时为 USB 设备供电,在这两种情况下,它都是 BIOS 中的设置,而不是在系统完全启动时可以更改的设置。想想看,Thinkpad 可能有一种方法可以在运行时进行配置,但 Thinkpad 因具有用于管理电源选项的特殊 ACPI 扩展而闻名。无论如何,对于这两个系统来说,这是一个要么全有要么全无的命题——没有针对每端口或每设备配置的选项。我相当确定挂起状态下的全功率 USB 并不是 PC 上的标准配置,因此,没有便携式方法来检查它是否可用。
虽然它是额外的硬件,但我认为最简单、最通用的解决方案是仅使用供电的集线器。
内核支持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 页面