Apakah ada cara untuk mematikan perangkat USB menggunakan perangkat lunak?

11

Apakah ada cara saya dapat mematikan perangkat USB (khusus) sepenuhnya menggunakan perangkat lunak dari mesin Linux?

Saya ingin menggunakan ini untuk mematikan (sehingga LED mati) (USB) tunggal.

Apakah Anda tahu metode apa pun untuk mencapai ini? Misalnya menggunakan / sys / bus / usb atau sejenisnya?

Daniel Jour
sumber
Iya. Cukup lepaskan perangkat.
iglvzx
1
Tidak, itu tidak membantu. Ada juga kemungkinan bahwa tidak ada partisi yang dapat digunakan (yang bisa dipasang) pada tongkat.
Daniel Jour
Untuk flash drive, satu-satunya cara untuk menghapus disk adalah echo 1 > /sys/block/sd<letter[s]>/device/delete... (eject mungkin melakukan itu ...) MUNGKIN mengakibatkan perangkat menjadi (lunak) "dimatikan" ... (Jika itu berfungsi untuk disk, itu tidak akan berfungsi untuk perangkat non-disk ..)
Gert van den Berg

Jawaban:

10

Jika mesin Anda menggunakan kernel lama, Anda dapat mengeluarkan echo suspend > /sys/bus/usb/devices/X-X/power/leveluntuk memaksakan penangguhan perangkat.

Namun, sejak 2.6.32 ini tidak lagi mungkin:

Kami dapat mengategorikan peristiwa manajemen daya dalam dua kelas besar: eksternal dan internal. Peristiwa eksternal adalah yang dipicu oleh beberapa agen di luar tumpukan USB: sistem menangguhkan / melanjutkan (dipicu oleh userspace), resume dinamis manual (juga dipicu oleh userspace), dan pengaktifan jarak jauh (dipicu oleh perangkat). Peristiwa internal adalah yang dipicu dalam tumpukan USB : autosuspend dan autoresume. Perhatikan bahwa semua acara tunda dinamis adalah internal ; agen eksternal tidak diizinkan untuk mengeluarkan penangguhan dinamis.

power/control

    This file contains one of two words: "on" or "auto".
    You can write those words to the file to change the
    device's setting.

    "on" means that the device should be resumed and
    autosuspend is not allowed.  (Of course, system
    suspends are still allowed.)

    "auto" is the normal state in which the kernel is
    allowed to autosuspend and autoresume the device.

    (In kernels up to 2.6.32, you could also specify
    "suspend", meaning that the device should remain
    suspended and autoresume was not allowed.  This
    setting is no longer supported.

(dari http://www.kernel.org/doc/Documentation/usb/power-management.txt )

Saya kira hal terbaik yang dapat Anda lakukan adalah melepaskan ikatan perangkat dari driver , sehingga tidak akan ada aktivitas di dalamnya, dan kemudian mengkonfigurasi perangkat untuk belanja otomatis sesegera mungkin ( echo auto > /sys/bus/usb/devices/X-X/power/control && echo 0 > /sys/bus/usb/devices/X-X/power/autosuspend_delay_ms).

Namun, sejauh yang saya mengerti spesifikasi USB , bahkan jika Anda menangguhkan perangkat, beberapa daya pada port akan tetap ada, jadi mungkin tidak mungkin untuk menonaktifkan led jika didukung oleh skema 'dumb' (yaitu langsung terhubung ke + 5V dan GND pin).

sebuah daratan
sumber
Saya menandai ini sebagai jawaban yang diterima karena saya dapat melepaskan ikatan perangkat dari drivernya dan mengkonfigurasi autosuspend, yang mengarah ke perangkat yang dimatikan. Sayangnya, stik USB yang ditargetkan (atau: LEDnya) terhubung langsung ke + 5V dan GND, dan karenanya tidak dapat dimatikan.
Daniel Jour
3

Harus menggunakan perintah eject.

Jalankan eject /dev/<devicename>dan itu harus dimatikan.

soando
sumber
Sayangnya, ini tidak berfungsi untuk test stick saya di sini :(
Daniel Jour
2
Yang tidak mengejutkan jika USB stick Anda bukan drive CD, Floppy, Tape atau SCSI. ejecthanya bekerja dengan ini.
Dmitry Grigoryev