USB 포트 전원 켜기 / 끄기


18

Ubuntu의 터미널을 사용하여 특정 USB 포트를 켜거나 끌 수 있습니까?

lsusb 다음 결과를 표시합니다.

Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 2232:1020
Bus 002 Device 009: ID 0bc2:a013 Seagate RSS LLC
Bus 002 Device 003: ID 0a5c:219c Broadcom Corp.

Seagate 는 내 외장 하드 디스크 드라이브입니다. 터미널에서 전원을 끌 수 있습니까?

Linux에서 USB 전원 공급 장치 제어 (켜기 / 끄기)를 시도했습니다 . 그러나 나는 대신에 무엇을 대체해야하는지 혼란스러워합니다 usbX.

답변:


7

이전의 모든 답변은 USB 일시 중단 메커니즘, 즉 "논리적 전원 끄기" 에 대해 이야기 하며 USB 포트에서 VBUS + 5V를 물리적으로 차단하지는 않습니다.

여기에 설명 된대로 소수의 허브 만 실제로 VBUS를 차단할 수 있습니다 .

그만큼 hubpower의 도구를 (허브가 지원하는 경우) 할 수 있습니다.


7

같은 문제가 발생한 후 "sudo"가 권한을 적절하게 적용 할 수 있도록 명령을 다르게 입력해야한다는 것을 알았습니다.

"tee"명령을 사용하십시오.

echo 0 | sudo tee /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms

"tee"명령에 루트 권한을 적용하여 지정된 파일에 0을 쓰고 현재 존재하는 모든 것을 대체합니다. 추가하려면 -a 옵션과 함께 tee 명령을 사용하십시오.

정보는 man 페이지를 참조하십시오 tee


2
tee명령은 화면에도 인쇄하는 부작용이 있습니다. 원하는 경우 dd of=/sys/bus/...파일에만 쓰고 다른 곳에 쓸 수 없습니다.
Brandon Rhodes

4

사실 usbX아무것도하지만 USB 포트 번호 X와 같은 번호를 표시 1하거나 2등등 ... 예를 들어, usb1usb2포트 12 . 일반적으로 랩톱에는 USB 2.0 및 USB 3.0 포트가있는 3 개 또는 4 개의 USB 포트가있을 수 있습니다.

우분투에서 usb1, usb2... usbX에 대한 링크가 있습니다 /sys/devices/pci000:00/*. 잘 이해하려면 다음 명령을 실행하십시오.

ls -l /sys/bus/usb/devices/

따라서 활성화 / 비활성화하기 위해 USB 포트를 활성화 / 비활성화 할 때 (또는 스택 교환 참조) usbX대체합니다 .usb1USB Port Number 1


편집 : sudo를 사용하여 파일에 텍스트를 에코 하는 올바른 방법을 알려주는 Stefan Denchev 에게 감사드립니다 . (그의 주석도 확인하십시오.) 권한 거부 메시지가 표시 되지 않아야합니다 .

sudo sh -c "echo '0' > /sys/bus/usb/devices/usb1/power/autosuspend_delay_ms"
sudo sh -c "echo 'auto' > /sys/bus/usb/devices/usb1/power/control"

lsusb결과를 확인한 후 Seagate 장치가에 연결된 것처럼 보이 Port No. 2므로 비활성화해야합니다 usb2. 그런 다음 명령은 다음과 같습니다.

sudo sh -c "echo '0' > /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms"
sudo sh -c "echo 'auto' > /sys/bus/usb/devices/usb2/power/control"

감사. echo "0" > "/sys/bus/usb/devices/usb2/power/autosuspend_delay_ms"출력을 시도 하면bash: /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms: Permission denied
curious_coder

그런 다음 sudo어떻게되는지 보십시오 ..
Saurav Kumar

그것을 시도했다. 여전히 같은 오류입니다.
curious_coder

실제로 Linux에서 포트를 활성화 / 비활성화하려고 시도하지 않았습니다. 나의 좌우명은 usbX문제 에 대해 명확하게하는 것이 었습니다 . 당신이 잡은 명령에 대해 많은 것이 확실하다면 StackOverflow시도해보십시오. 어쨌든 이제는 포트를 활성화 / 비활성화하는 실제 명령이 무엇인지 알고 싶습니다. 그것이 효과가있을 때 곧 회신 해 드리겠습니다. 그런 다음 장치의 플러그를 뽑았다가 다시 시도하십시오. 또는에서 주어진 첫 번째 답변을 시도하십시오 stackoverflow.
Saurav Kumar

1
sudo sh -c "echo 'on' >> /sys/bus/usb/devices/usb4/power/control"
UIlrvnd

1

udisksctl 있다 power-off 당신과 함께 사용할 내가 제안 플래그를, unmount

에서 man udisksctl:

power-off
           Arranges for the drive to be safely removed and powered off. On the
           OS side this includes ensuring that no process is using the drive,
           then requesting that in-flight buffers and caches are committed to
           stable storage. The exact steps for powering off the drive depends
           on the drive itself and the interconnect used. For drives connected
           through USB, the effect is that the USB device will be deconfigured
           followed by disabling the upstream hub port it is connected to

데모

USB 점프 드라이브를 마운트 해제 한 다음 전원을 끕니다.

testdir:$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 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 001 Device 009: ID 154b:007a PNY 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

testdir:$ lsblk                                                                
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 111.8G  0 disk 
└─sda1   8:1    0 111.8G  0 part /
sdb      8:16   1    30G  0 disk 
└─sdb1   8:17   1    30G  0 part /media/xieerqi/6A32C4555E1C5B4D
sr0     11:0    1  1024M  0 rom  

testdir:$ udisksctl unmount -b /dev/sdb1 && udisksctl power-off -b /dev/sdb1
Unmounted /dev/sdb1.

testdir:$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 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 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

testdir:$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 111.8G  0 disk 
└─sda1   8:1    0 111.8G  0 part /
sr0     11:0    1  1024M  0 rom  

testdir:$ 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.