从命令行禁用 USB 供电灯?

从命令行禁用 USB 供电灯?

我有一个漂亮的小 USB 灯,它没有关闭开关,插入电源后就会一直处于“亮”状态。

我的问题是,有没有办法禁用 USB 端口,以便在插上电源时关闭灯?最好是从命令行完成此操作,但如果有可能,那无论如何都会很酷。我使用 Mac 和 Linux,但有兴趣了解这是否可以在任何操作系统上实现,或者物理硬件是否阻止了这样的使用。

答案1

在大多数情况下,风扇和灯等 USB 配件并不是真正的 USB 设备 - 它们只需要一点点 5v 电源。

USB 对实际设备的工作方式是,它们在启动时获得少量电量,足以让它们打开。然后它们会使用 USB 控制器进行枚举并请求更多电量。

由于这些伪 USB 设备实际上根本没有与计算机通信,因此关闭它的唯一方法就是完全切断该 USB 端口的电源,据我所知,通常无法通过软件来做到这一点。

答案2

我实际上并没有亲自尝试过,但从我对这个主题所做的研究来看(为了完成与您完全相同的事情),您将需要:

  • 支持“每端口电源切换”的 USB 集线器 - 支持此功能的集线器并不多
  • 一个可以实际切换电源的实用程序

看一眼http://www.gniibe.org/development/ac-power-control-by-USB-hub/index,他正在做类似的事情,并包括一些关于该主题的背景、支持的集线器列表以及构建实用程序的 C 源代码。

我在美国找不到他提到的任何 USB 集线器,与我联系后确认 D-Link DUB-H7 可以使用 - 例如,你可以在亚马逊上买到它。

我还没有找到在 Windows 上执行此操作的方法,但看起来你对 Linux 最感兴趣。

答案3

7 端口 USB 集线器 D-Link DUB_H7 修订版 2(黑色)没有每端口电源切换,它仅支持联动电源切换

#lsusb -v

输出显示两次 4 端口集线器,这里是集线器描述符的输出:

Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             4
  wHubCharacteristic 0x00e0
    Ganged power switching
    Ganged overcurrent protection
    TT think time 32 FS bits
    Port indicators
  bPwrOn2PwrGood       50 * 2 milli seconds
  bHubContrCurrent    100 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
 Hub Port Status:
   Port 1: 0000.0100 power
   Port 2: 0000.0100 power
   Port 3: 0000.0100 power
   Port 4: 0000.0100 power

答案4

尝试使用http://www.nirsoft.net/utils/usbdeview.zip。此可执行文件显示连接到您的计算机的所有 USB 设备,并允许您根据需要单独断开它们的连接。

正如自述文件中所述:

USBDeview 是一款小型实用程序,可列出当前连接到计算机的所有 USB 设备以及您之前使用的所有 USB 设备。对于每个 USB 设备,都会显示扩展信息:设备名称/描述、设备类型、序列号(用于大容量存储设备)、设备添加的日期/时间、供应商 ID、产品 ID 等... USBDeview 还允许您卸载之前使用的 USB 设备,并断开当前连接到计算机的 USB 设备。您还可以在远程计算机上使用 USBDeview,只要您以管理员用户身份登录该计算机即可。

相关内容