Pertanyaan Hidupkan / matikan port USB


Apakah mungkin untuk mengaktifkan / menonaktifkan 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 eksternal saya. Bisakah saya mematikannya di terminal? Saya mencoba https://stackoverflow.com/questions/4702216/controlling-a-usb-power-supply-on-off-with-linux. Tetapi bingung apa yang harus diganti sebagai pengganti usbX


13
2017-09-06 06:52


asal




Jawaban:


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


6
2017-11-16 18:31



Itu tee perintah akan memiliki efek samping juga mencetak ke layar. Jika kamu mau, dd of=/sys/bus/... hanya akan menulis ke file, dan tidak di tempat lain. - Brandon Rhodes


Semua jawaban sebelumnya berbicara tentang a USB ditangguhkan mekanisme, yaitu "power-off logis", mereka tidak akan pernah secara fisik memotong VBUS + 5V dari port USB.

Hanya beberapa hub yang benar-benar dapat memotong VBUS seperti yang dijelaskan sini.

Itu hubpower alat dapat melakukannya (jika hub mendukungnya).


5
2017-12-21 13:38





Sebenarnya usbX tidak lain adalah USB nomor port di mana X menandakan angka seperti 1 atau 2 dan seterusnya .. Misalnya usb1 dan usb2 untuk port 1 dan 2. Secara umum laptop mungkin memiliki 3 atau 4 port USB dengan USB 2.0 danUSB 3.0 port

Di mana-mana usb1, usb2...usbX adalah tautan ke /sys/devices/pci000:00/*. Untuk memahaminya, jalankan perintah ini dengan baik:

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

Jadi aktifkan / nonaktifkan port USB usbX akan diganti menjadi usb1 ketika Anda ingin mengaktifkan / menonaktifkan USB Port Number 1 (atau rujuk StackExchange):

Edit

Terimakasih untuk Stefan Denchev untuk memberi tahu cara yang benar gema beberapa teks ke file menggunakan sudo. (Periksa komentarnya juga.) Anda tidak seharusnya mendapatkannya permission denied pesan 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 Anda lsusb Hasilnya terlihat bahwa Anda Seagate perangkat tersambung ke Port No. 2 jadi Anda perlu 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"

Semoga berhasil dan Anda bisa mengerti sekarang.


4
2017-09-06 07:43



Terima kasih. Jika saya mencoba echo "0" > "/sys/bus/usb/devices/usb2/power/autosuspend_delay_ms" hasilnya adalah bash: /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms: Permission denied - curious_coder
kemudian coba sudo lihat apa yang terjadi .. - Saurav Kumar
Sudah mencobanya. Masih kesalahan yang sama. - curious_coder
Sebenarnya saya tidak mencoba mengaktifkan / menonaktifkan port apa pun di Linux. Moto saya adalah membuat Anda jelas usbX masalah. Jika Anda sangat jelas tentang perintah yang Anda ambil StackOverflow maka hanya Anda yang harus mencobanya. Bagaimanapun juga saya juga tertarik untuk mengetahui perintah 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 pada stackoverflow. - Saurav Kumar
sudo sh -c "echo 'on' >> /sys/bus/usb/devices/usb4/power/control" - UIlrvnd


udisksctl punya power-off bendera, 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 unmounting USB saya melompat dan kemudian mematikannya

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:$ 

1
2017-11-09 18:58