USB portuna giden gücün kapatılması. Veya tüm usb alt sistemine giden gücü kapatın


28

Belirli bir zamanda programlı olarak kapatmak için özel olarak satın aldığım bir usb lambam var, bu yüzden usb portuna giden gücü kesmem gerekiyor.

USB6'da bir usb hub'ım olduğuna inanıyorum. Lamba bu hub'daki portlardan birine bağlanır:

#myhost$ lsusb 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 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 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...
...
Bus 008 Device 006: ID 050d:0234 Belkin Components F5U234 USB 2.0 4-Port Hub

İşte denedim:

İki çözüm burada , ilk bakışta:

echo disabled > /sys/bus/usb/devices/usb1/power/wakeup 
echo suspend > /sys/bus/usb/devices/usb1/power/level  # turn off

ama write error: Invalid argumentyazmaya çalıştığımda anlıyorum /sys/bus/usb/devices/usb1/power/level:

$sudo bash -c 'echo disabled > /sys/bus/usb/devices/usb6/power/wakeup'
$echo suspend|sudo tee /sys/bus/usb/devices/usb6/power/level suspend
tee: /sys/bus/usb/devices/usb6/power/level: Invalid argument
$sudo bash -c 'echo suspend> /sys/bus/usb/devices/usb6/power/level'bash: line 0: echo: write error: Invalid argument

İkinci çözüm:

sudo bash -c 'echo 0 > /sys/bus/usb/devices/usb6/power/autosuspend_delay_ms; echo auto > /sys/bus/usb/devices/usb6/power/control'

usb-hub aygıtına gücü kapatır.

Ben de takip etmeye çalışıyordum bu :

Ancak, lsusb -tsadece çıktısı :

$lsusb -t
4-1:0.0: No such file or directory
4-1:0.1: No such file or directory
^C

Bu da '2-1.1' kısmını almak için bu yöntemi kullanmamı engelliyor:

echo '2-1.1' > /sys/bus/usb/drivers/usb/unbind

Bu bilgiyi almanın alternatif bir yolu var mı?

Alternatif olarak, tüm usb alt sistemine giden gücü kesmenin bir yolu var mı? Gibi bir şey modprobe -r usb_etc?

Çekirdeğim:

$uname -r
3.2.0-4-amd64

ne sözdizimi hataları? Bu durumda, 'askıya alma', 'devre dışı bırakma' gibi basit dizelerden alıntı yapmaya gerek yoktur. alıntı yapma alışkanlığınız varsa, sizin için harika, ama bu durumda buna gerek yok.
user84207

lsusb -tAramayı başlatmaya çalıştım ve hata ayıklamak zorunda kaldığım sürede yararlı bir şey bulamadım. Gerçekten şu anda lsub’da böcek bulmak için zamanım yok ve şu anda onu yeniden bile üretemiyorum, bu yüzden muhtemelen fişe takılı cihazlara bağlı. Denemek için eve gitmek için beklemek zorundayım çoğalt.
user84207

Yanıtlar:


20

Uyumlu USB hub'ları için port başına USB gücünü kontrol etmek için uhubctl - komut satırı yardımcı programını kullanabilirsiniz.

Yalnızca bağlantı noktası başına güç geçişini destekleyen hub'larda çalışır, ancak birçok modern anakartın bu özelliği destekleyen USB hub'ları olduğunu unutmayın.

Derlemek için:

git clone https://github.com/mvp/uhubctl
cd uhubctl
make

Tüm hub'ların durumunu, konumlarını ve uhubctl tarafından kontrol edilebilecek bağlantı noktalarını listelemek için:

uhubctl

Uyumlu tek bir hub'ın 5 numaralı bağlantı noktasını açmak için:

uhubctl -a 0 -p 5

Bağlı birden fazla uyumlu hub varsa, -lonu kontrol etmek için hub konumunu belirtmek için kullanın :

uhubctl -a 0 -p 5 -l 3-1.2

Gücü kapatıp açmak için:

uhubctl -a 2 -p 5

USB 3.0 hub'larının da desteklendiğini ve birkaç yeni USB 3.0 hub'ının gerçekten iyi çalıştığını unutmayın.

Daha fazlasını buradan okuyun .

Açıklama - Ben uhubctl'nin yazarıyım.


Biraz daha fazla bilgi iyi olurdu. Özellikle yazar olduğunuz ve onun nasıl kullanılacağına dair standart bir paket örneği olmadığı için, ne varsa, herhangi bir yetenek / sınırlama varsa, risk varsa, yalnızca Linkler cevapları tercih edilmez.
Zachary Brady,

2
Tüm README dosyasını kopyalamak / yapıştırmak bana parlak bir fikir gibi görünmüyor. Tüm uyarıları açıkladı.
mvp

Hayır, tüm benioku aşırı olurdu. Sadece soruyu ortaya çıkan sorunu çözmek için programı nasıl kullanabilirsiniz. Ve bu özel kullanım durumunda herhangi bir uyarı varsa, tüm uygulamayı değil. Üzgünüm ilk yorumumda net değildim.
Zachary Brady,

1
Bilginize: Bu yöntem, Renesas UPD720202 PCIe-USB ana bilgisayar denetleyicileri ailesi için işe yarar. :) Teşekkürler.
Woss,

@Wossname teşekkürler. Bunu github.com/mvp/uhubctl/issues adresinde yeni sayı olarak ekler misiniz? Desteklenen cihazlar listesini güncelleyeceğim.
mvp

20

Yeni askıya alma "askıya alma" artık işe yaramazsa, Linux , kısa versiyon ile bir USB güç kaynağını kontrol etme (açık / kapalı) konusuna bakın :

echo "0" > "/sys/bus/usb/devices/usbX/power/autosuspend_delay_ms"
echo "auto" > "/sys/bus/usb/devices/usbX/power/control"

Ama kelimenin tam anlamıyla gücü kesmiyor, cihaza güç vermesi için sinyal veriyor, güç yönetimi uygulamak ve doğru olanı yapmak için cihaza bağlı.

Çekirdekteki resmi belgelerde birçok ayrıntıya sahipsiniz , burada /sys/bus/usb/devices/.../power/cihazların ve bağlantı noktalarının nasıl yönetileceği ve bunların nasıl yönetileceği açıklanmaktadır.

Gerçek usb aygıtları olmayan şeyler için (usb lambanız lsusb'da görünüyor mu?) Şansınız tükenirse, kendimi bir usb lambalı ve pili şarj eden ve veriyi gösteren usb üzerinden aktaran bir gps logger ile denedim Seri bir cp210x usb olarak ve hiçbiri poweroff. GPS'leri "kesebilir" echo '5-4.6' > /sys/bus/usb/drivers/usb/unbindve tekrar takabilirim , echo '5-4.6' > /sys/bus/usb/drivers/usb/bindancak akü şarj ucu her zaman açık.

Ancak bazı hub'ların düzgün şekilde yaptığı anlaşılıyor .


0

Öyle DEĞİL tek tek düzenlemek "için gerekli autosuspend_delay_ms " dosyaları.

USB otomatik yayılma, KÜRESEL ve KİŞİSEL olarak aşağıdakilerle devre dışı bırakılabilir :

sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/&usbcore.autosuspend=-1 /' /etc/default/grub

update-grub

systemctl reboot

Önerilen düzeltmeyi test etmek ve doğruluğunu onaylamak sadece birkaç saniye alır.

Aşağıdaki bir Ubuntu 18.04 açıklamalı ekran görüntüsü, TÜM USB otomatik yayma ayarları devre dışı bırakıldığında ana bilgisayarın yeniden başlatılmasına neden olan yukarıda açıklandığı şekilde değiştirilmesini göstermektedir :

Ubuntu 18.04 demosu küresel olarak USB otomatik yayılma özelliğini devre dışı bırakıyor

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.