Làm cách nào để kết nối lại thiết bị USB bị ngắt kết nối logic?


55

Thiết bị lưu trữ USB có thể bị ngắt kết nối một cách logic: thiết bị vẫn được cắm, nhưng vô hình với hệ điều hành (ví dụ: nó không được liệt kê bên dưới /proc/bus/usb). Có lẽ điều này có thể xảy ra với các loại USB khác hoặc các thiết bị di động khác. Điều này có thể xảy ra ví dụ:

Điều gì đang xảy ra trong trình điều khiển hoặc trong phần cứng và quan trọng nhất là (làm thế nào) thiết bị có thể được kết nối lại một cách hợp lý (mà không cần cắm vật lý vào và quay lại)?

Lưu ý rằng câu hỏi này không phải là về gắn kết. Trong trạng thái logic bị ngắt kết nối trên nền tảng, hạt nhân tin rằng không có gì trên bus USB (và do đó, tất nhiên không có mục nào bên dưới /dev).


Câu trả lời:


21

Đôi khi có thể thực hiện một chu kỳ nguồn trên nhánh của bus USB nơi thiết bị được cắm:

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

Các 1-1cần được điều chỉnh để cấu hình của bạn. Bạn có thể xem phần nào của cây USB mà thiết bị của bạn được cắm bằng cách chạy lsusb -ttrước khi đẩy nó ra.

Bạn có thể tìm thấy thông tin chi tiết về danh sách gửi thư linux-usb, chủ đề này chẳng hạn.


6
"đình chỉ" không hoạt động trên hạt nhân sau 2.6.36.
alexonomm

Giả sử dmesgbáo cáo ID thiết bị chính xác ("usb 9-4: Ngắt kết nối USB [...]"), điều này không hoạt động trên Arch Linux mới nhất. Không có con đường nào /sys/bus/usb/devices/9-4sau đó.
l0b0

1
1. dmesg: CẢNH BÁO! quyền lực / cấp độ bị phản đối; sử dụng sức mạnh / điều khiển thay thế 2. superuser.com/questions/371068/ từ
ổ cắm

Cũng suspendkhông còn được hỗ trợ trên các phiên bản kernel gần đây ....
Gert van den Berg

6

Đặt lại thiết bị hoặc trung tâm mà nó được kết nối và thiết bị sẽ xuất hiện lại. Đây là một chương trình nhỏ để làm điều đó:

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

Nó hoạt động với hầu hết các ổ USB mà tôi đã thử, nhưng vẫn có trường hợp ngoại lệ, như Kingston DT 101 II 4GB của tôi, không thực hiện được các lệnh INQUIRY và READ KHẢ NĂNG sau khi đặt lại và vẫn không sử dụng được cho đến khi chạy bằng điện.

Bạn có thể quay vòng thiết bị mà không cần rút phích cắm nếu thiết bị lấy nguồn từ cổng và bộ chia USB của bạn hỗ trợ điều khiển nguồn trên mỗi cổng. Đây là một chương trình nhỏ để kiểm soát sức mạnh:

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

Thật không may, hầu như không có bộ chia USB nào hỗ trợ tính năng này và rất khó tìm được bộ hỗ trợ. Các nhà sản xuất không quảng cáo nó. Nhiều trung tâm cũng nói dối về nó, ví dụ nếu bạn thực hiện "lsusb -v", bạn có thể thấy "Chuyển đổi năng lượng trên mỗi cổng" được quảng cáo trong "wHubCharacteristic", nhưng thực tế nó không hoạt động. Chipset có thể hỗ trợ nó, nhưng nó dễ dàng hơn / rẻ hơn cho nhà sản xuất để kết nối trực tiếp các chân nguồn với nguồn điện thay vì đi qua chipset.


5

Tôi tìm thấy câu trả lời này để làm việc tuyệt vời trên hệ thống Gentoo của tôi. Cũng xin nhớ bật lại thiết bị của bạn nếu đó là một phần quan trọng trong hệ thống của bạn (ví dụ: chuột hoặc bàn phím).

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

Để xem những gì bạn đang vô hiệu hóa / kích hoạt lại:

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

Điều này dường như thực hiện mánh khóe trên hệ thống Fedora 25 hiện đại của tôi. Một số phương pháp khác không còn có thể.
xenithor

5
udevadm info -a -n /dev/sdb

Bây giờ hãy kiểm tra Kernel. Ví dụ: nếu nó được kết nối với Cổng 2 của Front UIP thì nó sẽ là 1-1.2 và nếu nó được kết nối với Cổng 1 của Front UIP thì nó sẽ là 1-1.1.

Đối với Cổng 2: Để ngắt kết nối USB:

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

Để kết nối USB:

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

3

Tôi đã thử hầu hết các đề xuất trên, nhưng chúng không hiệu quả với tôi. Tôi đã tìm thấy cách đặt lại thiết bị USB từ dòng lệnh: https://askubfox.com/a/290519

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

nơi $ibạn có thể sử dụng ID thiết bị phù hợp từ /sys/bus/pci/drivers/ehci_hcd.


Xin vui lòng gửi nhiều hơn các liên kết; bao gồm một số chi tiết để mọi người không phải nhấp qua để trả lời.
jasonwryan


-5

Tôi không chắc chắn rằng tôi hiểu đúng câu hỏi của bạn, nhưng trên hệ thống của tôi nếu thiết bị usb được cắm nhưng không được gắn kết, tôi có thể 'nhìn thấy nó'

$> fdisk -l

Điều đó cho tôi biết thiết bị nào được liên kết với (tức là / dev / sdd1 hoặc một cái gì đó), sau đó tôi tự gắn thiết bị.


5
Một lần nữa: không, câu hỏi không phải là về một hệ thống tập tin trở nên không thể truy cập (tức là không thể đếm được), đó là về một thiết bị không thể truy cập được ( nhân không nhìn thấy thiết bị, vì vậy tất nhiên không có mục nào bên dưới /dev).
Gilles 'SO- ngừng trở nên xấu xa'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.