[linux] Linux를 사용하여 USB 전원 공급 장치 제어 (켜기 / 끄기)

Linux를 사용하여 USB에서 수동으로 전원 공급 장치를 켜거나 끌 수 있습니까?

이 외부 USB 냉각 팬 (PC가 아닌 몸을 식히는 데 사용하는 종류)이 있으며 팬을 멀리 떨어진 곳에 놓고 싶기 때문에 터미널에서 제어 할 수있는 것이 좋습니다.

USB 장난감이 많기 때문에 다양한 다른 것들에도 유용 할 수 있다고 생각합니다. 공기 청정기 등이있을 수 있습니다 (실제로는 효과가 없다고 들었습니다).



답변

노트. 이 답변의 정보는 이전 커널 (최대 2.6.32)과 관련이 있습니다. 최신 커널에 대한 정보는 tlwhitec의 답변 을 참조하십시오 .

# disable external wake-up; do this only once
echo disabled > /sys/bus/usb/devices/usb1/power/wakeup

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

(usb1을 usb n 으로 변경해야 할 수도 있습니다 )

출처 : Documentation / usb / power-management.txt.gz


답변

문서 에 따르면 커널 2.6.32 에서 USB 전원 관리에 몇 가지 변경 사항이 있었으며 2.6.38 에서 해결 된 것으로 보입니다 . 이제 특정 장치 드라이버에 의해 제어되는 장치가 유휴 상태 가 될 때까지 기다려야합니다 . 드라이버가 지원해야합니다. 그렇지 않으면 장치가이 상태에 도달하지 않습니다. 불행하게도, 이제 사용자는 이것을 강제 할 기회가 없습니다. 그러나 운이 좋으면 기기가 유휴 상태가 될 수 있으면이 기능을 끄려면

echo "0" > "/sys/bus/usb/devices/usbX/power/autosuspend"
echo "auto" > "/sys/bus/usb/devices/usbX/power/level"

또는 2.6.38 이상의 커널의 경우 :

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

이것은 말 그대로 장치가 유휴 상태가 된 순간에 일시 중단됨을 의미 합니다.

따라서 팬이 장치로 볼 수 있고 드라이버가 제어 할 수있는 “지능형”장치가 아닌 경우 현재 커널에서 많은 운이 없을 것입니다.


답변

적어도 올바르게 구성된 Terminus FE 1.1 USB 허브 칩에서 작동하는 이러한 솔루션을 발견했습니다.

1. 허브의 모든 USB 포트에서 전원을 끄려면 다음을 사용하여 허브에서 커널을 바인딩 해제 할 수 있습니다.

echo "1-4.4.4" > /sys/bus/usb/drivers/usb/unbind

전원을 다시 켜려면-

echo "1-4.4.4" > /sys/bus/usb/drivers/usb/bind

내가 사용 할 수 있었다 : 개별적으로 각 포트에서 전원을 2.Switching하는 것은 까다 롭습니다 hubpower을 각 포트를 제어하는 -하지만 단점과 함께 제공 : hubpower 첫 번째 연결이 끊어 적어도 우분투 시스템에서 disconect에 USB 장치의 모든 원인 느릅 나무 usbdevfs :

usb_ioctl.ioctl_code = USBDEVFS_DISCONNECT;
rc = ioctl(fd, USBDEVFS_IOCTL, &usb_ioctl);

이 기능을 ioctl비활성화 하면 모든 장치를 분리하지 않고 개별 포트 전원을 끌 수 있었지만 전원이 즉시 다시 켜집니다 (아마 커널이 초기화되지 않은 장치를보고 있기 때문에) 일반적으로하고 싶었다. 패치 된 허브 파워가 여기 있습니다


답변

Intel의 PowerTOP 을 사용하면 USB 주변 장치와 같은 장치를 실시간으로 전환 할 수 있습니다. 이것을 ‘튜너 블’이라고합니다.

sudo apt install powertop
sudo powertop
  • ‘튜너 블’로 탭합니다.
  • 기기로 스크롤합니다.
  • 절전 모드를 전환하려면 Enter 키를 누르십시오 ( 양호 / 나쁨 )

여기에 이미지 설명을 입력하십시오

참고 것을 나쁜는 장치가 항상 의미합니다. 에 토글 좋은 것은 (기본값은 2000ms입니다) 사전 설정 비활성 절약 시간 후 장치를 끌 것입니다.

이러한 변경 사항을 영구적으로 유지하는 방법에 대한 자세한 내용은 PowerTOP 문서를 참조하십시오 .
이 스레드의 다른 포스터에서 설명한 것처럼 구성 스크립트를 생성합니다.

참고 :이 스크립트는 항상 켜져있는 USB 핀 전원에 영향을 미치지 않습니다.
장치를 활성화 및 비활성화하기 위해 드라이버 프로토콜 만 보냅니다.

핀 전원을 제어하려면 지원되는 스마트 USB 허브 또는 더 나은 마이크로 컨트롤러를 사용할 수 있습니다.


답변

내 도구 uhubctl 을 사용 하여 호환되는 USB 허브의 포트 당 USB 전원을 제어 할 수 있습니다 .


답변

나는 이것을하고 싶었고 USB 하드웨어로는 할 수 없었습니다. 나는 그것을하는 방법을 해킹 한 방법으로 썼다 :

http://pintant.cat/2012/05/12/power-off-usb-device/ .

짧은 방법으로 : 나는 USB 릴레이를 사용하여 다른 USB 케이블 의 V CC 를 열고 닫았습니다 …


답변

echo '2-1' |sudo tee /sys/bus/usb/drivers/usb/unbind

우분투에서 작동