Power on / off port USB

18

Apakah mungkin untuk menghidupkan / mematikan port USB tertentu menggunakan terminal di Ubuntu?

lsusb menampilkan hasil berikut:

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 adalah hard disk drive eksternal saya. Bisakah saya mematikannya di terminal?

Saya mencoba Mengontrol catu daya USB (on / off) dengan Linux . Tetapi saya bingung tentang apa yang harus diganti usbX.

curious_coder
sumber

Jawaban:

7

Semua jawaban sebelumnya berbicara tentang mekanisme USB suspend , yaitu "matikan daya logis", mereka tidak akan pernah secara fisik memotong VBUS + 5V dari port USB.

Hanya beberapa hub yang dapat memotong VBUS seperti dijelaskan di sini .

Alat hubpower dapat melakukannya (jika hub mendukungnya).

rustyx
sumber
7

Setelah mengalami masalah yang sama, saya menemukan bahwa perintah harus dimasukkan secara berbeda sehingga "sudo" akan menerapkan hak secara tepat.

Gunakan perintah "tee".

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

akan menerapkan hak root ke perintah "tee" yang akan menulis 0 ke file yang ditentukan, menggantikan apa pun yang saat ini ada. Untuk menambahkan, gunakan perintah tee dengan opsi -a.

untuk info lihat halaman manual tee

JohnMoore
sumber
2
The teeperintah akan memiliki efek samping juga mencetak ke layar. Jika Anda mau, dd of=/sys/bus/...akan menulis hanya ke file, dan tempat lain.
Brandon Rhodes
4

Sebenarnya usbXtidak lain adalah nomor port USB di mana Xmenunjukkan angka seperti 1atau 2dan sebagainya ... Misalnya, usb1dan usb2untuk port 1 dan 2 . Secara umum, laptop mungkin memiliki tiga atau empat port USB dengan port USB 2.0 dan USB 3.0.

Di Ubuntu, usb1, usb2... usbXadalah link ke /sys/devices/pci000:00/*. Untuk memahaminya dengan baik, jalankan perintah ini:

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

Jadi untuk mengaktifkan / menonaktifkan port USB usbXakan diganti dengan usb1ketika Anda ingin mengaktifkan / menonaktifkan USB Port Number 1(atau merujuk Stack Exchange):


Sunting: Terima kasih kepada Stefan Denchev untuk memberi tahu cara yang benar untuk menggema beberapa teks ke file menggunakan sudo . (Periksa komentarnya juga.) Anda seharusnya tidak mendapatkan izin pesan ditolak sekarang.

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"

Setelah melihat lsusbhasil Anda , sepertinya perangkat Seagate Anda terhubung Port No. 2, jadi Anda harus menonaktifkan usb2. Maka perintahnya adalah:

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"
Saurav Kumar
sumber
Terima kasih. Jika saya mencoba echo "0" > "/sys/bus/usb/devices/usb2/power/autosuspend_delay_ms"hasilnya adalahbash: /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms: Permission denied
curious_coder
kemudian coba dengan sudomelihat apa yang terjadi ..
Saurav Kumar
Sudah mencobanya. Kesalahan masih sama.
curious_coder
Sebenarnya saya tidak mencoba untuk mengaktifkan / menonaktifkan port apa pun di Linux .. Moto saya adalah membuat Anda jelas tentang usbXmasalah. Jika Anda jauh lebih jelas tentang perintah yang Anda ambil StackOverflowmaka hanya Anda yang harus mencobanya. Bagaimanapun juga saya juga tertarik untuk mengetahui perintah mana yang sebenarnya untuk mengaktifkan / menonaktifkan port. Saya akan membalas Anda segera, ketika itu berhasil untuk saya. Katakan kemudian Anda mencabut perangkat Anda dan coba lagi. atau coba jawaban pertama yang diberikan di stackoverflow.
Saurav Kumar
1
sudo sh -c "echo 'on' >> /sys/bus/usb/devices/usb4/power/control"
UIlrvnd
1

udisksctlmemiliki power-offflag, yang saya sarankan Anda gunakan bersama unmount

Dari 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

Demo

Inilah saya unmount jumpdrive USB saya dan kemudian matikan

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:$ 
Sergiy Kolodyazhnyy
sumber