Bagaimana cara menghubungkan kembali perangkat USB yang terputus secara logis?

55

Dimungkinkan untuk perangkat penyimpanan USB menjadi terputus secara logis: perangkat masih terhubung, tetapi tidak terlihat dari sistem operasi (misalnya itu tidak terdaftar di bawah /proc/bus/usb). Mungkin ini bisa terjadi pada USB jenis lain atau perangkat yang dapat dilepas lainnya. Ini bisa terjadi misalnya:

Apa yang terjadi pada driver atau di perangkat keras, dan yang paling penting, (bagaimana) dapat menghubungkan kembali perangkat secara logis (tanpa secara fisik menghubungkannya kembali dan kembali)?

Perhatikan bahwa pertanyaan ini bukan tentang pemasangan. Dalam keadaan "terputus secara logis", kernel percaya tidak ada apa-apa di bus USB (dan tentu saja tidak ada entri di bawah /dev).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Plug Shameless: answer berfungsi untuk kernel 3.x dan lebih tinggi
Dmitry Grigoryev

Jawaban:

21

Kadang-kadang dimungkinkan untuk melakukan siklus daya pada cabang bus USB di mana perangkat terhubung:

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

The 1-1harus disesuaikan dengan konfigurasi Anda. Anda dapat melihat bagian pohon USB mana yang dicolokkan perangkat Anda dengan menjalankannya lsusb -tsebelum mengeluarkannya.

Anda dapat menemukan informasi terperinci di milis linux-usb, utas ini misalnya.

jon_d
sumber
6
"menangguhkan" tidak bekerja pada kernel setelah 2.6.36.
alexisdm
Dengan asumsi dmesgmelaporkan ID perangkat yang benar ("usb 9-4: USB disconnect [...]"), ini tidak berfungsi pada Arch Linux terbaru. Tidak ada jalan /sys/bus/usb/devices/9-4sesudahnya.
l0b0
1
1. dmesg: PERINGATAN! daya / level sudah usang; gunakan power / control sebagai gantinya 2. superuser.com/questions/371068/…
socketpair
Juga suspendtidak lagi didukung pada versi kernel terbaru ....
Gert van den Berg
6

Setel ulang perangkat, atau hub yang terhubung, dan perangkat akan muncul kembali. Berikut ini adalah program kecil untuk melakukannya:

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

Ini bekerja untuk sebagian besar drive USB yang saya coba, tetapi ada pengecualian, seperti Kingston DT 101 II 4GB saya, yang gagal perintah INQUIRY dan READ CAPACITY setelah reset, dan tetap tidak dapat digunakan sampai power-cycled.

Anda dapat melakukan siklus daya pada perangkat tanpa mencabutnya jika mendapatkan daya dari port, dan hub USB Anda mendukung kontrol daya per-port. Berikut ini adalah program kecil untuk mengontrol daya:

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

Sayangnya, hampir tidak ada hub USB yang mendukung fitur ini, dan sangat sulit untuk menemukan hub yang mendukungnya. Produsen tidak mengiklankannya. Banyak hub juga berbohong tentang hal itu, misalnya jika Anda melakukan "lsusb -v" Anda dapat melihat "Per-port power switching" diiklankan di "wHubCharacteristic", tetapi pada kenyataannya itu tidak bekerja. Chipset mungkin mendukungnya, tetapi lebih mudah / lebih murah bagi pabrikan untuk menghubungkan pin daya port langsung ke catu daya daripada melalui chipset.

pengguna6223
sumber
5

Saya menemukan jawaban ini berfungsi dengan baik di sistem Gentoo saya. Harap ingat juga untuk mengaktifkan kembali perangkat Anda jika itu bagian penting dari sistem Anda (mis. Mouse atau keyboard).

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

Untuk melihat apa yang Anda nonaktifkan / aktifkan kembali:

cat /sys/bus/usb/devices/5-2/product
Avio
sumber
Ini sepertinya melakukan trik pada sistem Fedora 25 modern saya. Beberapa metode lain tidak lagi mungkin.
xenithorb
5
udevadm info -a -n /dev/sdb

Sekarang periksa Kernel. Misalnya jika terhubung ke Port 2 dari Front UIP maka itu akan menjadi 1-1.2 dan jika terhubung ke Port 1 dari Front UIP maka itu akan menjadi 1-1.1.

Untuk Port 2: Untuk melepaskan USB:

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

Untuk menghubungkan USB:

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

Saya sudah mencoba sebagian besar saran di atas, tetapi itu tidak berhasil untuk saya. Saya menemukan cara mengatur ulang perangkat USB dari baris perintah: https://askubuntu.com/a/290519

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

dari mana $iAnda dapat menggunakan ID perangkat yang sesuai /sys/bus/pci/drivers/ehci_hcd.

Kakanakov
sumber
Silakan kirim lebih dari tautan; sertakan beberapa detail sehingga orang tidak perlu mengklik untuk mendapatkan jawaban.
jasonwryan
-5

Saya tidak yakin bahwa saya benar memahami pertanyaan Anda, tetapi pada sistem saya jika perangkat usb terpasang tetapi tidak dipasang saya bisa 'melihatnya' oleh

$> fdisk -l

Itu memberitahu saya perangkat apa yang terkait dengannya (yaitu / dev / sdd1 atau sesuatu), kemudian saya memasangnya secara manual.

bev
sumber
5
Sekali lagi: tidak, pertanyaannya bukan tentang sistem file yang tidak dapat diakses (mis. Unmounted), ini tentang perangkat yang tidak dapat diakses ( kernel tidak melihat perangkat, jadi tentu saja tidak ada entri di bawah /dev).
Gilles 'SANGAT berhenti menjadi jahat'