如何在Linux中对USB 端口电源控制
在Linux中,libusb库用于控制对USB设备的访问。根据USB 2.0规范第11.15.1.2节,有2个请求可以关闭端口电源; ClearPortFeature(PORT_POWER) 和 SetConfiguration()。
如果要关闭集线器及其下的所有端口,可以通过 SetConfiguration() 请求来完成。
必须是 root 才能更改 USB 设备设置。 要使 libusb 发送 SetConfiguration() 请求,请导航到集线器的设备目录。 更改文件 bConfigurationValue 的权限。 将 0 写入该文件可关闭集线器和设备。
例如集线器 3-3:
$ cd /sys/bus/usb/devices/usb3/3-3
$ sudo chmod o+w bConfigurationValue
$ sudo echo 0 > bConfigurationValue
要重新打开集线器:
$ sudo echo 1 > bConfigurationValue
要关闭单个设备,可以将设备设置为在挂起时关闭,但如何以及何时发生取决于设备的驱动程序。
要设置要关闭的设备,请首先导航到设备的电源目录。 更改文件 pm_qos_no_power_off 的权限并向该文件写入 0:
例如设备 3-3.1:
$ cd /sys/bus/usb/devices/usb3/3-3/3-3:1.0/3-3-port1/power
$ sudo chmod o+w pm_qos_no_power_off
$ sudo echo 0 > pm_qos_no_power_off
当设备最终进入挂起状态时,libusb 将向集线器发送 ClearPortFeature(PORT_POWER) 请求。
需要对USB接口控制器进行控制 电源的控制?这个是不是得有USB的电源管理芯片来做? 一般是有管理芯片的,可以通过I2C的方式来实现 在Linux中,您可以使用USB接口的电源控制功能来管理USB设备的供电情况。这可以通过USB的sysfs接口来实现 确定USB端口的路径:首先,您需要确定要控制的USB端口的路径 通过lsusb命令,您可以找到您想要控制的USB设备的厂商ID和产品ID,以及设备的总线和端口信息 使用sysfs接口控制电源:一旦您确定了USB端口的路径,您可以使用sysfs接口来控制USB设备的电源 通常,USB设备的电源控制文件位于/sys/bus/usb/devices/目录下 需要注意的是,对USB设备进行电源控制需要root权限。因此,在进行电源控制操作时,请确保您有足够的权限 USB电源一般都会使用一个电子开关,直接控制该开关的通断就可以了。 请注意,对USB设备进行电源控制可能会影响设备的正常工作,因此在进行此类操作时,请谨慎考虑可能的影响 对USB操作你可以试试这个,
echo "on" > /sys/bus/usb/devices/usbX/power/control# 打开电源
echo "off" > /sys/bus/usb/devices/usbX/power/control# 关闭电源
页:
[1]