USB 포트의 전원을 끕니다. 또는 전체 USB 하위 시스템의 전원을 끄세요.

USB 포트의 전원을 끕니다. 또는 전체 USB 하위 시스템의 전원을 끄세요.

특정 시간에 꺼지도록 프로그래밍할 수 있도록 특별히 구입한 USB 조명이 있으므로 USB 포트에서 전원을 뽑아야 합니다.

USB 허브 USB6이 있다고 생각합니다. 조명은 이 허브의 포트 중 하나에 연결됩니다.

#myhost$ lsusb 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...
...
Bus 008 Device 006: ID 050d:0234 Belkin Components F5U234 USB 2.0 4-Port Hub

내가 시도한 것은 다음과 같습니다.

두 가지 솔루션은여기, 첫 번째 제안:

echo disabled > /sys/bus/usb/devices/usb1/power/wakeup 
echo suspend > /sys/bus/usb/devices/usb1/power/level  # turn off

하지만 내가 write error: Invalid argument글을 쓰려고 할 때 /sys/bus/usb/devices/usb1/power/level:

$sudo bash -c 'echo disabled > /sys/bus/usb/devices/usb6/power/wakeup'
$echo suspend|sudo tee /sys/bus/usb/devices/usb6/power/level suspend
tee: /sys/bus/usb/devices/usb6/power/level: Invalid argument
$sudo bash -c 'echo suspend> /sys/bus/usb/devices/usb6/power/level'bash: line 0: echo: write error: Invalid argument

두 번째 해결 방법:

sudo bash -c 'echo 0 > /sys/bus/usb/devices/usb6/power/autosuspend_delay_ms; echo auto > /sys/bus/usb/devices/usb6/power/control'

이렇게 하면 USB 허브 장치의 전원이 꺼집니다.

나도 따라해보려고 했는데이것:

그러나 출력이 lsusb -t중단됩니다.

$lsusb -t
4-1:0.0: No such file or directory
4-1:0.1: No such file or directory
^C

이로 인해 "2-1.1" 부분을 얻기 위해 이 방법을 사용할 수 없습니다.

echo '2-1.1' > /sys/bus/usb/drivers/usb/unbind

이 정보를 얻을 수 있는 다른 방법이 있나요?

또는 전체 USB 하위 시스템의 전원을 끄는 방법이 있습니까? 그것은 마치 modprobe -r usb_etc?

내 커널은 다음과 같습니다

$uname -r
3.2.0-4-amd64

답변1

내 도구를 사용할 수 있습니다.uhubctl- 호환되는 USB 허브의 각 포트에 대한 USB 전원을 제어하기 위한 명령줄 유틸리티입니다.

포트별 전원 전환을 지원하는 허브에서만 작동하지만 많은 최신 마더보드에는 이 기능을 지원하는 USB 허브가 있습니다.

첫째, 운영 체제의 패키지 저장소에 이미 uhubctl이 있을 수 있습니다.읽어보기 파일설치 방법을 알아보고 최신 버전(작성 당시 2.4.0)을 사용하고 있는지 확인하세요.

운영 체제에 이 패키지의 최신 버전이 없는 경우 다음과 같이 소스에서 설치할 수 있습니다.

엮다:

git clone https://github.com/mvp/uhubctl
cd uhubctl
make

시스템 전체에 설치하려면 다음을 수행하십시오 /usr/sbin/uhubctl.

sudo make install

uhubctl로 제어할 수 있는 모든 허브, 해당 위치 및 포트의 상태를 나열합니다.

sudo uhubctl

sudo(udev USB 권한이 구성된 경우 이는 피할 수 있습니다).

단일 호환 허브의 포트 5에서 전원을 끄려면:

sudo uhubctl -a 0 -p 5

호환되는 허브가 여러 개 연결되어 있는 경우 -l허브 위치를 지정하여 제어하세요.

sudo uhubctl -a 0 -p 5 -l 3-1.2

전원을 껐다가 다시 켜려면:

sudo uhubctl -a 2 -p 5

USB 3.0 허브도 지원되며 상당수의 새로운 USB 3.0 허브가 실제로 잘 작동합니다.

읽다여기에서 더 알아보기.

답변2

바라보다Linux를 사용하여 USB 전원(켜기/끄기) 제어, 최신 커널을 사용하는 짧은 버전인 "hang"은 더 이상 작동하지 않습니다.

echo "0" > "/sys/bus/usb/devices/usbX/power/autosuspend_delay_ms"
echo "auto" > "/sys/bus/usb/devices/usbX/power/control"

그러나 실제로 전원을 차단하는 것은 아닙니다. 장치에 전원을 끄라는 신호를 보내고, 전원 관리를 구현하고 올바른 작업을 수행하는 것은 장치에 달려 있습니다.

그 안에 많은 세부사항이 들어있어요공식 문서커널 내에서는 다양한 파일 /sys/bus/usb/devices/.../power/과 장치 및 포트를 관리하는 방법을 설명합니다.

실제 USB 장치가 아닌 경우(USB 표시등이 lsusb에 표시됩니까?) 운이 좋지 않을 수도 있습니다. USB 표시등과 GPS 로거를 사용하여 배터리를 충전하고 USB를 통해 데이터를 전송해 보았습니다. cp210x USB to 직렬 포트로 작동하는 것은 컴퓨터가 꺼져도 작동하지 않습니다. GPS를 "연결 해제"했다가 echo '5-4.6' > /sys/bus/usb/drivers/usb/unbind다시 연결할 수 있지만 echo '5-4.6' > /sys/bus/usb/drivers/usb/bind배터리 충전 표시등은 계속 켜져 있습니다.

하지만 것 같다일부 허브는 훌륭한 일을 수행합니다..

관련 정보