edustudy 发表于 2024-4-7 15:24

如何在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) 请求。

weifeng90 发表于 2024-4-7 19:45

需要对USB接口控制器进行控制

b5z1giu 发表于 2024-4-24 15:48

电源的控制?这个是不是得有USB的电源管理芯片来做?

suw12q 发表于 2024-4-24 16:53

一般是有管理芯片的,可以通过I2C的方式来实现

p0gon9y 发表于 2024-4-24 18:14

在Linux中,您可以使用USB接口的电源控制功能来管理USB设备的供电情况。这可以通过USB的sysfs接口来实现

w2nme1ai7 发表于 2024-4-24 19:20

确定USB端口的路径:首先,您需要确定要控制的USB端口的路径

g0d5xs 发表于 2024-4-24 20:25

通过lsusb命令,您可以找到您想要控制的USB设备的厂商ID和产品ID,以及设备的总线和端口信息

ex7s4 发表于 2024-4-24 21:32

使用sysfs接口控制电源:一旦您确定了USB端口的路径,您可以使用sysfs接口来控制USB设备的电源

cen9ce 发表于 2024-4-24 22:49

通常,USB设备的电源控制文件位于/sys/bus/usb/devices/目录下

lix1yr 发表于 2024-4-25 07:16

需要注意的是,对USB设备进行电源控制需要root权限。因此,在进行电源控制操作时,请确保您有足够的权限

lidi911 发表于 2024-4-25 08:30

USB电源一般都会使用一个电子开关,直接控制该开关的通断就可以了。

lamanius 发表于 2024-4-25 09:20

请注意,对USB设备进行电源控制可能会影响设备的正常工作,因此在进行此类操作时,请谨慎考虑可能的影响

liu96jp 发表于 2024-4-25 11:34

对USB操作你可以试试这个,
echo "on" > /sys/bus/usb/devices/usbX/power/control# 打开电源
echo "off" > /sys/bus/usb/devices/usbX/power/control# 关闭电源
页: [1]
查看完整版本: 如何在Linux中对USB 端口电源控制