논리적으로 분리 된 USB 장치를 다시 연결하는 방법은 무엇입니까?


55

USB 저장 장치의 논리적 연결이 끊어 질 수 있습니다. 장치가 여전히 연결되어 있지만 운영 체제에서는 보이지 않습니다 (예 : 아래에 나열되지 않음 /proc/bus/usb). 아마도 이것은 다른 종류의 USB 또는 다른 이동식 장치에서도 발생할 수 있습니다. 예를 들면 다음과 같습니다.

드라이버 나 하드웨어에서 무슨 일이 일어나고 있으며, 가장 중요한 것은 (물리적으로 연결하거나 다시 연결하지 않고) 장치를 논리적으로 다시 연결할 수있는 방법은 무엇입니까?

이 질문은 마운트에 관한 것이 아닙니다. "논리적으로 연결이 끊긴"상태에서 커널은 USB 버스에 아무것도 없다고 믿습니다 (물론 아래에 항목이 없습니다 /dev).


답변:


21

장치가 연결된 USB 버스의 분기에서 전원을 껐다 켜는 경우가 있습니다.

# echo suspend > /sys/bus/usb/devices/1-1/power/level
# echo auto > /sys/bus/usb/devices/1-1/power/level

1-1구성에 조정되어야한다. 장치 lsusb -t를 꺼내기 전에 USB 트리의 어느 부분이 연결되어 있는지 확인할 수 있습니다 .

이 스레드같은 linux-usb 메일 링리스트에서 자세한 정보를 찾을 수 있습니다 .


6
2.6.36 이후에는 "suspend"가 커널에서 작동하지 않습니다.
alexisdm

dmesg올바른 장치 ID ( "usb 9-4 : USB disconnect [...]")를보고 한다고 가정하면 최신 Arch Linux에서는 작동하지 않습니다. /sys/bus/usb/devices/9-4이후 에는 경로가 없습니다 .
l0b0

1
1. dmesg : 경고! 전력 / 레벨은 더 이상 사용되지 않습니다. 대신에 전원 / 제어를 사용하십시오. 2. superuser.com/questions/371068/…
socketpair

suspend최근 커널 버전 에서도 더 이상 지원되지 않습니다 ....
Gert van den Berg

6

장치 또는 연결된 허브를 재설정하면 장치가 다시 나타납니다. 여기에 작은 프로그램이 있습니다 :

http://marc.info/?l=linux-usb-users&m=116827193506484

그것은 시도한 대부분의 USB 드라이브에서 작동하지만 재설정 후 INQUIRY 및 READ CAPACITY 명령에 실패하고 전원을 껐다 켤 때까지 사용할 수없는 Kingston DT 101 II 4GB와 같은 예외가 있습니다.

포트에서 전원을 공급 받으면 플러그를 뽑지 않고 장치의 전원을 껐다가 다시 켤 수 있으며 USB 허브는 포트 별 전원 제어를 지원합니다. 다음은 전력을 제어하는 ​​작은 프로그램입니다.

http://marc.info/?l=linux-usb-devel&m=113724451205634

불행히도이 기능을 지원하는 USB 허브는 거의 없으며,이를 지원하는 USB 허브를 찾기가 매우 어렵습니다. 제조사는 광고하지 않습니다. 예를 들어 "lsusb -v"를 수행하면 "wHubCharacteristic"에 "포트 별 전원 전환"이 표시되지만 실제로는 작동하지 않습니다. 칩셋이이를 지원할 수도 있지만 제조업체가 칩셋을 거치지 않고 포트 전원 핀을 전원 공급 장치에 직접 연결하는 것이 더 쉽고 저렴했습니다.


5

이 답변이 Gentoo 시스템에서 잘 작동한다는 것을 알았습니다 . 장치가 시스템의 중요한 부분 (예 : 마우스 또는 키보드) 인 경우 장치를 다시 활성화해야합니다.

sudo sh -c 'AUTHFILE="/sys/bus/usb/devices/5-2/authorized" ; echo 0 > "$AUTHFILE" ; sleep 1 ; echo 1 > "$AUTHFILE"'

사용 중지 / 재 활성화중인 항목을 확인하려면 다음 단계를 따르십시오.

cat /sys/bus/usb/devices/5-2/product

이것은 현대 Fedora 25 시스템에서 트릭을 수행하는 것처럼 보였습니다. 다른 방법 중 일부는 더 이상 가능하지 않습니다.
xenithorb

5
udevadm info -a -n /dev/sdb

이제 커널을 확인하십시오. 예를 들어 전면 UIP의 포트 2에 연결되어 있으면 1-1.2가되고 전면 UIP의 포트 1에 연결되어 있으면 1-1.1이됩니다.

포트 2의 경우 : USB 연결을 해제하려면 :

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

USB를 연결하려면

echo '1-1.2' | tee /sys/bus/usb/drivers/usb/bind

3

위의 제안을 대부분 시도했지만 효과가 없었습니다. 커맨드 라인에서 USB 장치를 재설정하는 방법을 찾았습니다 : https://askubuntu.com/a/290519

echo $i >/sys/bus/pci/drivers/ehci_hcd/bind

에서 $i적절한 기기 ID를 사용할 수 있습니다 /sys/bus/pci/drivers/ehci_hcd.


링크보다 더 게시하십시오; 사람들이 답변을 위해 클릭 연결하지 않아도되도록 세부 정보를 포함합니다.
jasonwryan


-5

귀하의 질문을 올바르게 이해하고 있는지 확실하지 않지만 USB 장치가 연결되어 있지만 마운트되지 않은 경우 시스템에서 '볼 수 있습니다'

$> fdisk -l

그러면 어떤 장치가 연결되어 있는지 (예 : / dev / sdd1 등) 알려주고 수동으로 마운트합니다.


5
다시 말하지만, 파일 시스템에 액세스 할 수 없게되는 것 (즉 마운트 해제)에 관한 것이 아니라 장치 가 액세스 할 수 없게 되는 것입니다 (커널에 장치 가 표시되지 않으므로 물론 아래에 항목이 없음 /dev).
Gilles
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.