USB 포트가 있는 USB 제어 전원 스트립이 있습니다.
내 컴퓨터가 켜져 있고 USB를 통해 전원 스트립에 연결된 경우 전원 스트립이 모든 콘센트에 전원을 공급합니다. 멀티탭에 연결된 컴퓨터의 USB 포트 전원을 프로그래밍 방식으로 비활성화하고 싶습니다.
이것은 작동하지 않습니다:
$ echo suspend > /sys/bus/usb/devices/usb*/power/level
-bash: echo: write error: Invalid argument
다른 방법이 있나요? 다른 곳에서 내 서버에 연결하고 전기 콘센트에 연결된 모든 장치의 전원을 끌 수 있기를 원합니다.
답변1
멀티탭은 연결된 USB 포트에서 공급되는 +5V를 읽는 것 이외의 작업을 수행합니까? (붙일 때 아무 것도 보이지 않나요? dmesg
꽂은 후 출력이 바뀌나요?) 그렇지 않으면 커널이 추가된 내용조차 인식하지 못할 수도 있습니다. lsusb
장치가 자체적으로 열거되지 않으면 장치를 일시 중지할 수 없습니다. 장치는 /sys/bus/usb/devices 아래에 나타나지 않으며 USB를 사용하면 포트가 아닌 장치를 일시 중지할 수 있습니다.
또한 다음에서 제공됩니다 Documentation/usb/power-management.txt
.
power/control
This file contains one of two words: "on" or "auto".
You can write those words to the file to change the
device's setting.
"on" means that the device should be resumed and
autosuspend is not allowed. (Of course, system
suspends are still allowed.)
"auto" is the normal state in which the kernel is
allowed to autosuspend and autoresume the device.
(In kernels up to 2.6.32, you could also specify
"suspend", meaning that the device should remain
suspended and autoresume was not allowed. This
setting is no longer supported.)
따라서 마지막 면책 조항에 따르면 커널이 2.6.32보다 최신인 경우 어쨌든 USB 장치를 강제로 정지시킬 수 없는 것처럼 들립니다.
죄송합니다. 귀하가 정말로 원하는 답변을 드릴 수 없습니다. 귀하가 하려는 작업은 간결하게 들리지만 도움이 되기를 바랍니다.
답변2
# To enforce suspend immediately when device is unused:
echo -n "0" >$DEV_POWER_PATH"/power/autosuspend_delay_ms"
echo -n "auto" >$DEV_POWER_PATH"/power/control"
# Make the device was not used
rmmod drv_name # see result of lsmod
# Power on:
echo -n "2000" >$DEV_POWER_PATH"/power/autosuspend_delay_ms"
echo -n "on" >$DEV_POWER_PATH"/power/control"
# Make the device was used.
modprobe drv_name
답변3
여기에도 같은 문제가 있습니다. ls -al은 루트에게만 쓰기 권한이 있음을 보여줍니다.
-rw-r--r-- 1 root root 4.0K May 8 10:27 level
그래서 sudo로 동일한 명령을 실행하려고 시도했지만 여전히 동일한 오류가 발생했습니다.
내가 찾은 유일한 방법은 이 파일을 chmod한 다음 쓰는 것입니다. 게다가. 제 생각에는 control과 autosuspens_delay_ms만으로는 충분하지 않습니다. 실제로 일시 중지하려면 바인딩을 해제해야 합니다.
sudo chmod 777 /sys/bus/usb/devices/2-1.7/power/control
sudo chmod 777 /sys/bus/usb/devices/2-1.7/power/autosuspend_delay_ms
sudo chmod 777 /sys/bus/usb/drivers/usb/unbind
echo "auto" > "/sys/bus/usb/devices/2-1.7/power/control"
echo "0" > "/sys/bus/usb/devices/2-1.7/power/autosuspend_delay_ms"
echo -n "2-1.7" > /sys/bus/usb/drivers/usb/unbind
답변4
허브를 사용하고 해당 허브에 전원을 공급하면 허브가 자체 전원 장치에 연결되지 않습니다. 위 게시물의 장치처럼 작동하는 한 허브를 종료할 수 있습니다.
하지만 실제로 (우연히) 이 스트립으로 전원이 공급되는 다른 포트에 USB 장치를 두는 것은 제대로 마운트 해제되지 않기 때문에 지겨워질 것입니다.
컴퓨터 전원을 끄고 유용할 수 있는 멀티탭을 끄는 방법이 있습니다. 하지만 지금은 좋은 해결책이 떠오르지 않습니다.