เปิด / ปิดพอร์ต USB


18

เป็นไปได้หรือไม่ที่จะเปิด / ปิดพอร์ต USB โดยใช้เทอร์มินัลใน Ubuntu?

lsusb แสดงผลลัพธ์ต่อไปนี้:

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เป็นฮาร์ดดิสก์ภายนอกของฉัน ฉันสามารถปิดมันในเทอร์มินัลได้หรือไม่?

ฉันพยายามควบคุมแหล่งจ่ายไฟ USB (เปิด / ปิด) กับลินุกซ์ usbXแต่ผมกำลังสับสนเกี่ยวกับสิ่งที่ควรจะถูกแทนที่ในสถานที่ของ

คำตอบ:


7

คำตอบก่อนหน้านี้ทั้งหมดพูดคุยเกี่ยวกับกลไกการระงับ USBเช่น "การปิดระบบโลจิคัล" พวกเขาจะไม่ตัด VBUS + 5V ทางกายภาพออกจากพอร์ต USB

เพียงไม่กี่ฮับจริงสามารถตัด VBUS ตามที่อธิบายไว้ที่นี่

hubpowerเครื่องมือที่สามารถทำมันได้ (ถ้าฮับสนับสนุน)


7

หลังจากพบปัญหาเดียวกันฉันพบว่าควรป้อนคำสั่งต่างกันเพื่อให้ "sudo" ใช้สิทธิ์อย่างเหมาะสม

ใช้คำสั่ง "tee"

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

จะใช้สิทธิ์รูทกับคำสั่ง "tee" ซึ่งจะเขียน 0 ลงในไฟล์ที่ระบุแทนที่สิ่งที่มีอยู่ในปัจจุบัน ในการผนวกให้ใช้คำสั่ง tee พร้อมตัวเลือก -a

สำหรับข้อมูลดูหน้าคนของ tee


2
teeคำสั่งจะมีผลข้างเคียงของการพิมพ์ไปยังหน้าจอ ถ้าคุณต้องการdd of=/sys/bus/...จะเขียนเฉพาะไฟล์และไม่มีที่อื่น
Brandon Rhodes

4

ที่จริงusbXคืออะไร แต่หมายเลขพอร์ต USB ที่Xหมายถึงจำนวนชอบ1หรือ2และอื่น ๆ ... ตัวอย่างเช่นusb1และusb2สำหรับพอร์ต1และ2 โดยทั่วไปแลปท็อปอาจมีพอร์ต USB สามหรือสี่พอร์ตพร้อมพอร์ต USB 2.0 และ USB 3.0

ในอูบุนตูusb1, usb2... มีการเชื่อมโยงไปยังusbX /sys/devices/pci000:00/*เพื่อให้เข้าใจได้ดีให้รันคำสั่งนี้:

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

ดังนั้นในการเปิด / ปิดการใช้งานพอร์ต USB usbXจะถูกแทนที่ด้วยusb1เมื่อคุณต้องการเปิด / ปิดการใช้งานUSB Port Number 1(หรืออ้างอิง Stack Exchange):


แก้ไข:ขอบคุณที่สเตฟาน Denchevจะบอกวิธีที่ถูกต้องสะท้อนข้อความบางส่วนไปยังแฟ้มโดยใช้sudo (ตรวจสอบความคิดเห็นของเขาด้วย) คุณไม่ควรได้รับข้อความปฏิเสธสิทธิ์ตอนนี้

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"

หลังจากที่ได้เห็นคุณlsusbผลดูเหมือนว่าซีเกทอุปกรณ์ของคุณเชื่อมต่อดังนั้นคุณจำเป็นต้องปิดการใช้งานPort No. 2 usb2จากนั้นคำสั่งจะเป็น:

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"

ขอบคุณ ถ้าฉันลองecho "0" > "/sys/bus/usb/devices/usb2/power/autosuspend_delay_ms"เอาท์พุทคือbash: /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms: Permission denied
อยากรู้อยากเห็น _coder

จากนั้นลองsudoดูว่าจะเกิดอะไรขึ้น ..
Saurav Kumar

พยายามมัน ยังคงมีข้อผิดพลาดเดียวกัน
curious_coder

จริงๆแล้วฉันไม่ได้ลองเปิด / ปิดพอร์ตใด ๆ ใน Linux .. คติประจำใจของฉันคือทำให้คุณเข้าใจusbXปัญหาได้อย่างชัดเจน หากคุณมีความชัดเจนมากเกี่ยวกับคำสั่งที่คุณคว้าจากStackOverflowนั้นเพียงคุณเท่านั้นที่ควรลอง ตอนนี้ฉันสนใจที่จะทราบด้วยว่าคำสั่งใดที่เปิดใช้งาน / ปิดใช้งานพอร์ตจริง ฉันจะตอบคุณเร็ว ๆ นี้เมื่อมันได้ผลสำหรับฉัน บอกจากนั้นให้คุณถอดปลั๊กอุปกรณ์แล้วลองอีกครั้ง stackoverflowหรือลองคำตอบแรกที่ได้รับ
Saurav Kumar

1
sudo sh -c "echo 'on' >> /sys/bus/usb/devices/usb4/power/control"
UIlrvnd

1

udisksctlมีpower-offธงซึ่งฉันขอแนะนำให้คุณใช้ร่วมกับ unmount

จาก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

การสาธิต

ที่นี่ฉันถอนการติดตั้ง jumpdrive USB ของฉันแล้วปิดเครื่อง

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:$ 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.