มีวิธีการปิดอุปกรณ์ USB ด้วยซอฟต์แวร์หรือไม่?


11

มีวิธีที่ฉันสามารถปิดอุปกรณ์ USB (เฉพาะ) อย่างสมบูรณ์โดยใช้ซอฟต์แวร์จากเครื่อง Linux หรือไม่?

ฉันต้องการใช้สิ่งนี้ในการปิด (เพื่อให้ LED ดับ) เป็นแท่ง USB (เดี่ยว)

คุณรู้วิธีการเพื่อให้บรรลุสิ่งนี้หรือไม่? เช่นใช้ / sys / bus / usb หรือชอบ?


ใช่. เพียงยกเลิกการต่อเชื่อมอุปกรณ์
iglvzx

1
ไม่นั่นไม่ได้ช่วยอะไร นอกจากนี้ยังมีความเป็นไปได้ที่จะไม่มีพาร์ติชันที่ใช้งานได้ (ซึ่งสามารถติดตั้งได้) ที่ก้าน
Daniel Jour

สำหรับแฟลชไดรฟ์วิธีหนึ่งในการลบดิสก์คือecho 1 > /sys/block/sd<letter[s]>/device/delete... (การนำออกอาจทำเช่นนั้น ... ) อาจส่งผลให้อุปกรณ์ (อ่อน) "ปิดการใช้งาน" ... (หากใช้งานได้กับดิสก์ มันจะไม่ทำงานสำหรับอุปกรณ์ที่ไม่ใช่ดิสก์ .. )
Gert van den Berg

คำตอบ:


10

หากเครื่องของคุณใช้เคอร์เนลเก่าคุณสามารถออกคำecho suspend > /sys/bus/usb/devices/X-X/power/levelสั่งระงับอุปกรณ์ได้

อย่างไรก็ตามตั้งแต่ 2.6.32 สิ่งนี้เป็นไปไม่ได้อีกต่อไป:

เราสามารถจัดประเภทเหตุการณ์การจัดการพลังงานในสองระดับกว้าง: ภายนอกและภายใน เหตุการณ์ภายนอกคือสิ่งที่ถูกเรียกใช้โดยเอเจนต์บางตัวที่อยู่นอกสแต็ก USB: ระบบหยุดทำงาน / กลับสู่สถานะเดิม (ถูกเรียกใช้โดย userspace), เรซูเม่ไดนามิกแบบแมนนวล เหตุการณ์ภายในคือสิ่งที่เกิดขึ้นภายในสแต็ก USB : autosuspend และ autoresume โปรดทราบว่าไดนามิกทั้งหมดระงับเหตุการณ์ภายใน ; ตัวแทนภายนอกไม่ได้รับอนุญาตให้ออกการระงับแบบไดนามิก

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.

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

ฉันเดาว่าสิ่งที่ดีที่สุดที่คุณสามารถทำได้คือถอดอุปกรณ์ออกจากไดรเวอร์ดังนั้นจะไม่มีกิจกรรมใด ๆ อยู่บนอุปกรณ์จากนั้นกำหนดค่าอุปกรณ์ให้ปิดการจองอัตโนมัติโดยเร็วที่สุด ( echo auto > /sys/bus/usb/devices/X-X/power/control && echo 0 > /sys/bus/usb/devices/X-X/power/autosuspend_delay_ms)

อย่างไรก็ตามเท่าที่ฉันเข้าใจรายละเอียด USBแม้ว่าคุณจะระงับอุปกรณ์พลังงานบนพอร์ตบางส่วนจะยังคงอยู่ดังนั้นจึงอาจเป็นไปไม่ได้ที่จะปิดใช้งานไฟ LED หากมันถูกขับเคลื่อนโดยรูปแบบ 'ใบ้' (เช่นเชื่อมต่อโดยตรงกับ + 5V และ GND หมุด)


ฉันกำลังทำเครื่องหมายคำตอบนี้เป็นคำตอบที่ยอมรับได้เพราะฉันสามารถแยกอุปกรณ์ออกจากไดรเวอร์และกำหนดค่า autosuspend ซึ่งนำไปสู่การปิดอุปกรณ์ น่าเสียดายที่แท่ง USB เป้าหมาย (หรือ: ไฟ LED ของพวกมัน) เชื่อมต่อโดยตรงกับ + 5V และ GND ดังนั้นจึงไม่สามารถปิดเครื่องได้
Daniel Jour

3

การใช้คำสั่ง eject ควรใช้งานได้

เรียกใช้eject /dev/<devicename>และควรปิดเครื่อง


น่าเสียดายนี่ใช้ไม่ได้กับแท่งทดสอบของฉันที่นี่ :(
Daniel Jour

2
ซึ่งไม่น่าแปลกใจถ้าแท่ง USB ของคุณไม่ใช่ไดรฟ์ CD, Floppy, Tape หรือ SCSI ejectใช้ได้กับสิ่งเหล่านี้เท่านั้น
Dmitry Grigoryev
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.