Linux USB: Ein- und Ausschalten?
Wie kann ich programmgesteuert aktivieren und deaktivieren, die macht zu einem bestimmten USB-port auf Linux? Ist so etwas überhaupt möglich? Mac Antworten geschätzt, wie gut!
Ich versuche für ein BOC (behaupte nicht, Sie nicht versuchen, eines zu bekommen!) und endete mit einem von diesen, und würde gerne einige nutzen aus der Sache durch Einhaken es bis zu unserem server überwachen.
InformationsquelleAutor der Frage Mark Harrison | 2009-07-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dringt durch Lesezeichen
http://blog.andrew.net.au/2009/01/01#usb_power_control
Scheint, wie Sie benötigen, schließen Sie es an einen hub und Steuerung der hub mit Strom versorgt. Keiner der root-hubs, die ich gesehen habe, scheint in der Lage sein, um die Unterstützung von power control.
InformationsquelleAutor der Antwort Savant Degrees
Gibt es ein sys-Eintrag für diese in Linux. Von Documentation/usb/power-management.txt:
Etwas wie:
echo on > /sys/bus/usb/devices/usb5/power/level
Können Sie spielen müssen, mit dem autosuspend-Einstellung auch. Ohne den kernel zu versuchen zu stoppen, aussetzen der port automatisch.
Glück!
InformationsquelleAutor der Antwort mixonic
Den usbfs Interaktion scheint sich verändert zu haben eine Anzahl von Zeiten, da wurde diese Frage ursprünglich beantwortet. So, hier ist, wie ich cycle hub port power auf Ubuntu Oneiric Ocelot aus einer Bash-shell.
Suche für den bus und die device-Nummer:
Suchen Sie das Gerät in die bus - /hub-port-Hierarchie mit dem bus-und device-Nummer:
Die syntax scheint zu sein, " bus-port.port.port.port.port... " Zum Beispiel, meine Maus ist angeschlossen an einen externen hub die Verbindung zu meinem computer hub intern eine Verbindung zu einem root-hub:
So, '2-1.1.1' in dem oben genannten Fall. Schließlich-Zyklus Anschluss Leistung:
Habe ich noch nicht angeschlossen ein Protokoll-analyzer, um zu sehen, was tatsächlich geschieht, auf den bus, aber ich weiß, dass meine Maus das Licht schaltet sich aus, wenn ich die Bindung. Ich vermute, auf einer niedrigeren Ebene diese Interaktion ist mit dem EHCI-host-controller, um tatsächlich abgeschaltet power off auf den Hafen. Dies ist besonders nützlich für embedded-Geräte wie UVC webcams, die nie scheinen, um richtig zu funktionieren und sonst erfordert einen system-Neustart zurückgesetzt.
Siehe auch die
udevadm
Befehl.InformationsquelleAutor der Antwort Stephen Niedzielski
Könnten Sie uhubctl - Befehlszeilen-Dienstprogramm, Steuerung USB-power-pro-Anschluss für kompatible USB-hubs.
Funktioniert es nur auf hubs, die Unterstützung der per-port power switching, aber beachten Sie, dass viele moderne motherboards haben USB-hubs, die diese Funktion unterstützen. Auch die Letzte version des uhubctl unterstützt USB-3.0-hubs, und die gute Nachricht ist, dass schon ein paar neue USB-3.0-hubs unterstützen diese Funktion.
Kompilieren:
Liste status aller hubs und ports, die kontrolliert werden kann durch uhubctl:
Zum ausschalten auf port 5 der single-kompatibel-Nabe:
Einschalten der Stromversorgung für alle Anschlüsse für alle kompatiblen Naben:
Toggle power off dann auf:
Lesen mehr hier.
Offenlegung - ich bin der Autor von uhubctl.
InformationsquelleAutor der Antwort mvp
Dies ist ein Beispiel mit einer Logitech-USB-wireless-Maus unter linux.
Entsprechenden Absatz Lesen von "/proc/bus/usb/devices" nach, um Ihre Geräte "Vendor" (Hersteller-id) und "ProdID" (Produkt-id)
oder "Hersteller" und "Produkt" (alle diese Werte sind als Konstanten pro Gerät).
(Erster Absatz mit Gerät eingeschaltet, die zweite mit demselben Gerät ausgeschaltet, aber noch eingesteckt)
Müssen Sie zwei Variablen, die hier.
Sie befinden sich in der "T:" - Zeile (erste Zeile des Absatzes).
Diese Variablen sind :
Bus (Bus=01 in diesem Beispiel)
Cnt (Cnt=01 in diesem Beispiel)
Müssen Sie "1" (arithmetische) "Cnt" zu bekommen den Rang
Rang=Cnt+1 (dies ist eine mathematische Funktion, Rang=2 in diesem Beispiel)
Also das Gerät, das Sie suchen, ist die folgende Zeichenfolge ein :
Bus-Rank (das ist nicht eine mathematische Funktion, die eine Zeichenfolge, 1-2 in diesem Beispiel)
Beachten Sie auch die "C:" - Linie.
Es enthält Infos rund um die power (Strom) das Gerät.
Wenn es ein Sternchen in der "C:" (wie in unserem 1. Beispiel), dann das Gerät eingeschaltet ist.
Wenn nicht ("C:") dann das Gerät "mehr oder weniger" ausgeschaltet, d.h. es ist immer ein winzigen Strom, wenn ein Gerät eingesteckt ist, sonst wären wir nicht in der Lage zu Lesen diese info.
Geist endlich "ich:" - Zeile.
Wenn das Feld "I:*" enthält ein Sternchen (wie in unserem 1. Beispiel), dann gibt es input, von oder zu dem Gerät, ich bin mir nicht sicher, vielleicht beide.
Die Letzte Zeile Feld enthält den Treiber verwendet ("usbhid" in unserem 1. Beispiel)
Wir sind bereit, schalten Sie die Stromversorgung unserer Geräte :
ausschalten
macht auf
Im folgenden ist ein einfaches bash-Skript "USBMS" (USB-Maus-Schalter), der steuert die Leistung des Gerätes in unserem Beispiel oben.
Es ist nicht sehr dynamisch und es nutzt das "Produkt" und "Hersteller" - Konstanten, suchen Sie den entsprechenden Abschnitt von "/proc/bus/usb/devices"
Sollten Sie die "Vendor" (Hersteller-id) und "ProdID" (Produkt-id) statt.
Es überprüft auch den Status der Stromversorgung des Geräts.
Führen Sie als superuser.
Befehl aus : ./USBMS Aktion
parameter : action = "off" oder "0" schalten, - action = "on" oder "1" zu schalten (ohne die Anführungszeichen)
InformationsquelleAutor der Antwort RVF16
@Kristian in der Regel werden Sie nicht finden, software-gesteuerte port power controlled beworben, weil der Benutzer sollte nicht bewusst sein, von dieser Ebene. Ich glaube nicht, dass es viele Anwendungsfälle, für die es außer Kraft allerletzter bus-powered Geräte in einem bekannten Zustand befindet, und der Handgriff dumm wie ein post-Geräte, verwenden Sie nur USB für Stromversorgung. Vielleicht Markieren Sie das Gerät fällt in die letztere Kategorie. Es ist eine rohe, last-resort-Mechanismus.
Als ich erwähnte, ich habe nicht geschaut in die details der Implementierung für die unverbindliche hack und ich habe nur versucht es auf der EHCI-host-controller, eingebettet in mein Mainboard ein "Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller (rev 05)." Ich würde vermuten, dass dieser host-controller hat die PPC bisschen HCSPARAMS gesetzt, die angibt, software-Steuerung-Anschluss power-Schalter, - pro EHCI spec.
Wenn Sie die Verknüpfung mit einem externen hub, eine "Drehscheibe zeigt an, ob oder nicht, es unterstützt power-Schaltung, die durch die Einstellung der Logischen Energie-Schaltungs-Modus-Feld in wHubCharacteristics", nach der USB 2.0 Spezifikation. Ich don ' T erinnern, wenn die compliance-tests sorgen für diese Funktion oder nicht, aber wenn Sie es tun, brauchen Sie nur einen hub mit dem USB 2.0-logo. Ich spekulieren den hack schicken würde, ein set port feature-request, aber es kann Zyklus mehr als nur der Ziel-port. Wieder, per USB 2.0 spec, "ein hub mit power-Schalter schalten Sie die Stromversorgung zu allen Häfen, als eine Gruppe/gang, um jeden port einzeln, oder eine beliebige Anzahl von Banden von einem oder mehreren ports." Ich bin mir nicht sicher ob es ein nettes Kommandozeilen-tool zu bekommen wHubCharacteristics.
Kurz gesagt, es gibt nicht eine große Allgemeine Möglichkeit, um dieses problem zu umgehen, soweit ich weiß. Es ist jedoch möglich, befragen Sie einen internen oder externen hub, um festzustellen, das Niveau der Unterstützung, und dann, falls unterstützt, verwenden Sie es. Es ist nur eine Frage, wie viel Zeit Sie ausgeben wollen, dies zu tun.
InformationsquelleAutor der Antwort Stephen Niedzielski
In OS X Sie können den Zugriff auf ein USB-Gerät vom user-space, und fordern Sie auszusetzen.
Finden Sie ein Allgemeines Beispiel in der USB-Device-Schnittstelle Guide. Sie müssen den IOUSBDeviceInterface182 (oder höher) USBDeviceSuspend Methode.
Hinweis: Hubs und-controller die ports untersetzten Strom versorgt, d.h. die gleichen Schalter gemeinsam von mehreren ports. wenn dies der Fall ist, und Ihr Gerät ist in derselben Gruppe wie ein anderes aktives Gerät, wird es nicht heruntergefahren werden.
InformationsquelleAutor der Antwort Hasturkun
Schritt 1: so habe ich, usb1, usb2, usb3, usb4 ....
Schritt 2: wie würde ich wissen, welches das ist? (
Optional 1:
im Falle der lsusb zeigt und finden müssen spezifischeOptional 2: im Falle keines gefunden - reboot fails to power cycle use Arduino relais-over-udp
Arduino relais:
InformationsquelleAutor der Antwort YumYumYum
Ich würde eher dazu neigen, schneiden Sie den Draht und Haken es bis zu einem serial port w/irgendeine Art von einfachen relais läuft aus einem der 'empfangen bereit'pin. Dann könnten Sie einfach ziehen Sie die Zeile nach unten (signal "ich bin bereit zu empfangen'), um die serielle Schnittstelle die Datei jedes mal gibt es einige isssue. Wenn es fertig ist, nur das signal 'ich bin voll'
Mein Verständnis von diesen Dingen, jedoch, ist, dass Sie ziehen eine Menge Strom, bis Sie vollständig den Kondensator, dann lassen Sie es alle auf einmal blinkt die Glühlampe. Ich kann mir nicht vorstellen, wie ein plötzlicher Entlastung ist gut für die Schaltung des Computers. möglicherweise müssen Sie einige diode Strom fallen, um zu verhindern, dass feedback in den seriellen port.
InformationsquelleAutor der Antwort Ape-inago
Ihre laufen nur "echo" als root versuchen:
InformationsquelleAutor der Antwort Adaś
Einen einige usb-hubs können schalten Ihre ports auf und ab, wie erklärt in dem link. Ich habe noch zu finden, ein motherboard mit usb-ports, die aktiviert oder deaktiviert werden kann.
InformationsquelleAutor der Antwort ptonelli
Nicht den Kauf eines teuren smart-hub gerade für die Dreh-USB-gadgets-und ausgeschaltet.
Alles, was Sie brauchen, ist ein mikrocontroller.
Arduino Nano™ ATmega328 *
Der Nano ist ein 16MHz 8-bit-computer mit 2 Kb RAM und 32 Kb flash-Speicher.
Es hat 22 programmierbare pins (8 analoge und 14 digitale).
Es kann Lesen/schreiben USB, und ist powered by die 5,0-V-Micro-USB-Anschluss (bis zu 12.0 V extern).
Exquisite kleine Fälle zur Verfügung (auch kostenlos 3d-printables).
C4Labs Zebra Black Ice Fall
* Verwenden Sie Original-Arduino-Nano™ nur. Hüten Sie sich vor Fälschungen.
UPDATE: Miniaturisierte ATtiny und wireless mikrocontroller sind auch verfügbar.
InformationsquelleAutor der Antwort Dominic Cerisano
So wie ich das verstehe, Ihre Geräte sind geliefert durch USB-power line VCC(~5V).
Das problem ist, dass dieses power-line kann nicht kontrolliert werden, vom user-space in der standard-linux-framework, es sei denn, Sie die Schnittstelle Ihres Geräts mit den hubs aktiviert mit power-control. Ony kernel-code kann durch berühren dieser power-line.
InformationsquelleAutor der Antwort Parikshit Pareek