Wie man einen "hundertjährigen" USB-Hub in einen intelligent verwalteten verwandelt und 300 US-Dollar spart

Irgendwie brauchte ich lange Zeit einen Hub, vorzugsweise mit einer großen Anzahl von Anschlüssen und einer ziemlich praktischen Form, der zum Einbetten anstelle eines Diskettenlaufwerks in den 3,5-Zoll-Schacht geeignet war. Ein kurzer Blick auf den Flohmarkt warf das Modell D-Link DUB-H7 und sogar in der Kombination von „2 zum Preis von 1“. Die externe Inspektion ergab nichts Besonderes, der Hub als Hub wurde solide hergestellt, der Haupt- "Drucker" USB AM-BM auf der Rückseite und ein 3 A Netzteil. Wie immer freute ich mich als erstes über eine kleine Anzahl leerer Stellen anstelle von Elementen, gepaart mit hochwertigem Löten und Beruhigen. Für alle Fälle ging ich ins Internet, um zu sehen, was für ein Hub es war und ob es interessante Projekte mit seiner Teilnahme gab. Es gab keine Projekte, User Reviews 50/50, im Allgemeinen keine Dynamik. Der Hub hat 5-7 Jahre lang ziemlich gut funktioniert und seine Aufgabe erfüllt, ist dann reibungslos in den elektronischen Papierkorb übergegangen und wäre möglicherweise zusammen mit unbekannten Adaptern, Adaptern usw. verschwunden. Aber ein Ereignis in meinem Leben ist passiert Ich habe in Säcken mit altem Müll herumgewühlt, diesen, wie sich herausstellte, als einzigartigen D-Link gefunden und den Staub abgeschüttelt, um ihn ins Licht Gottes zu ziehen. Wenn Sie wissen möchten, warum, dann können Sie gerne schneiden.


blink blink

Intro oder Weinen über die gierigen Hersteller von USB-Hubs


Mit dem Aufkommen kleiner, praktischer SoC-Router (wie dem Tutorial zum „Konditionieren“ eines Klons des beliebten chinesischen Mini-Routers Hame A15, der auch als „A5-V11 ohne Marke “ bezeichnet wird ) und der weit verbreiteten Einführung von OpenWRT für die Verwaltung von Hostgeräten (in der überwiegenden Mehrheit) In Fällen, in denen es sich um Geräte handelt, die über USB angeschlossen sind, wird die Steuerung der Stromversorgung aller Arten von Modems, Kartenlesern, USB-RS232-Konvertern usw. usw. zu einer sehr dringenden Aufgabe. Die Notwendigkeit, den Anschluss bei der Arbeit mit GSM-Mo zu steuern, ist am häufigsten Emami (neu zu starten, zum Beispiel). Grundsätzlich haben die Menschen bereits genügend Entscheidungen getroffen . Für diese Zwecke, von der Verwendung freier GPIO-Pins im Router bis hin zu vorgefertigten Relais. Es gibt Lösungen von Drittherstellern. Dies ist zum Beispiel ein programmierbarer USB-Hub für 4 Ports von Acroname , der reich an Software und Hardware ist, aber etwa 300 US-Dollar kostet.


Bild

Es gibt eine günstigere Option, einen Smart Switchable Hub mit dem schönen Namen Yupkit YKUSH für nur 35 €:


Bild

Die wirtschaftlichsten können eine Reihe der billigsten USB-Hubs, normalerweise geschlossene 5-V-Relais, und alle Arduino-k verwenden, um bei Bedarf die Stromversorgung vom USB-Anschluss zu trennen. Die Kosten für eine solche Lösung betragen <10 USD, ohne die Zeit, die für das Löten und Programmieren von Arduino aufgewendet wird.


Es scheint eine Sackgasse zu sein. Entweder teuer und schön oder einfach und rotzig . Es stellte sich jedoch heraus, dass es eine dritte Option gibt. Darüber hinaus ist die Lösung alt, wie die USB 2.0-Spezifikation für Hubs, in denen sie beschrieben wird.


Auszüge aus Spezifikationen zur USB-Energieverwaltung

Hubs mit eigener Stromversorgung verfügen möglicherweise über Netzschalter, die die Stromversorgung der nachgeschalteten Ports steuern, sind jedoch nicht erforderlich. Busbetriebene Hubs müssen über Netzschalter verfügen. Ein Hub mit Netzschaltern kann die Stromversorgung zu allen Ports als Gruppe / Gruppe, zu jedem Port einzeln oder zu einer beliebigen Anzahl von Banden eines oder mehrerer Ports schalten. Ein Hub gibt an, ob er die Leistungsumschaltung unterstützt, indem das Feld Logischer Leistungsumschaltmodus in wHubCharacteristics festgelegt wird. Wenn ein Hub die Stromumschaltung pro Port unterstützt, wird die Stromversorgung eines Ports eingeschaltet, wenn eine SetPortFeature-Anforderung (PORT_POWER) für den Port empfangen wird. Die Port-Stromversorgung wird ausgeschaltet, wenn sich der Port im ausgeschalteten oder nicht konfigurierten Zustand befindet. Wenn ein Hub das Umschalten der Stromversorgung unterstützt, wird die Stromversorgung aller Ports in einer Gruppe eingeschaltet, wenn ein Port in einer Gruppe eine SetPortFeature-Anforderung (PORT_POWER) empfängt. Die Stromversorgung einer Gruppe wird nur ausgeschaltet, wenn sich alle Ports in einer Gruppe im Status "Ausschaltet" oder "Nicht konfiguriert" befinden.
...
Obwohl für die Implementierung der Stromumschaltung kein Hub mit eigener Stromversorgung erforderlich ist, muss der Hub den ausgeschalteten Zustand für alle Ports unterstützen. Darüber hinaus muss der Hub die PortPwrCtrlMask (alle Bits auf 1B gesetzt) ​​implementieren, obwohl der Hub keine Netzschalter hat, die von der USB-Systemsoftware gesteuert werden können.


Bei der Übersetzung ins Russische stellt sich heraus, dass der USB-Standard bereits die Möglichkeit definiert, die Stromversorgung des Ports mithilfe des sogenannten zu steuern Per-Port Power Switching (PPPS) , aber ein Gerät zu finden, das diese Funktion unterstützt, ist nicht nur schwierig, sondern auch sehr schwierig. Zur Implementierung der PPPS-Funktion werden zusätzliche Komponenten (Feldeffekttransistoren und Verkabelung) benötigt, die zum Speichern nicht in den Hubs installiert sind.


Einige Hersteller reagieren sensibel auf Marktanforderungen und geben die PPPS-Funktion in den Spezifikationen der Hubs an. In Wirklichkeit geht dies jedoch nicht über die Aufschrift auf der Box hinaus. Grundsätzlich ist es schwierig, Fehler zu finden, da viele Chips in den Hubs diese Funktion unterstützen, aber es ist unmöglich, sie ohne zusätzliche Schalter (Transistoren) zu implementieren (meistens werden USB-Anschlüsse direkt an die + 5V-Leitung angeschlossen).


Ich habe sogar einige kleine USB-Hubs, die ich zusammen mit dem A5-V11-Router verwenden wollte, speziell zerlegt. Darin befanden sich: der GL850G- Chip und der von den chinesischen FE1.1s geliebte. Natürlich wurden nur die Controller selbst mit einem Minimum an Details im Inneren gefunden. Aufgrund der Miniaturgröße der Platine ist es selbst bei einer Klappinstallation schwierig, einen Transistor und Teile, die mit der Platine verbunden sind, zu platzieren. Ich musste mich beruhigen. Obwohl je nach Chip im Datenblatt die Überstromerkennung und die individuelle oder gesteuerte Leistungsregelung erwähnt werden , ist es möglich, einen intelligenten Betrieb eines solchen Geräts nach dem im Artikel beschriebenen Verfahren durchzuführen. Ein Freund verwendete eine Kombination aus einem Transistor und einer Reihe von Widerständen, um die PPPS-Funktion in seinem Hub zu aktivieren.


Änderungsschema und Aussehen des Geräts
Bild
Bild

Wenn Sie die Dokumentation lesen, werden Sie feststellen, dass es kein Nein gibt, und es wird erwähnt, dass der Portsteuerungsmodus implementiert werden kann, indem der Schaltung ein AIC1526-0 oder MIC2026 (Zweikanal-Stromverteilungsschalter) hinzugefügt wird.


Schemata aus Datenblättern lassen nicht lügen


Teil der Haupt- oder auf den Punkt kommen


Überwältigt von düsteren Gedanken über den Kauf chinesischer Hubs mit unbekannter Funktionalität ("ein Schwein im Sack") und der Unmöglichkeit, diese vorab zu überprüfen, stieß ich versehentlich auf einen Artikel über die Einrichtung von openwrt, um die Leistung eines USB-Hubs zu steuern vergessen D-Link DUB-H7 in einem grauen Gehäuse.



Nachdem wir das Material untersucht hatten, wurde klar, dass an Bord des Hubs neben dem ziemlich fortschrittlichen Philips ISP1521BE-Controller eine ganze Reihe derselben Zweikanal-Stromverteilungsschalter AIC1528-0 für die vollständige Leistungsumschaltung vorhanden sind. Nach dem Datenblatt zu urteilen, kann ein Chip mit einem Minimum-Body-Kit selbst die Leistung von Downstream-Ports steuern (und es gibt auch viele Dinge, die dort nicht implementiert wurden, z. B. die Anzeige von Upstream-Port-Aktivitäten mithilfe der GoodLink-Technologie oder einen USB 1.1-Host, um eine Mischung aus 2.0 und 1.1 korrekt zu unterstützen Downstream-Ports usw. usw.).


Übrigens, für diejenigen, die meinen Weg wiederholen möchten, sage ich sofort, dass die modernen Versionen des D-Link DUB-H7 (in einem glänzenden schwarzen Gehäuse) nicht mehr so ​​nützlich sind wie die alten grauen.



Nach Informationen von wikidevi.com ( 1 , 2 , 3 , 4 ) gibt es mehrere Revisionen dieses Hubs mit unterschiedlichen Komponenten an Bord und entsprechend unterschiedlichen Funktionen (A1 / A5 - ISP1521BE 7-Port, B1-2xGL854G 4-Port, C1 - 2xGL850Z 4-Port).


Die Aufmerksamkeit auf den D-Link DUB-H7 wird auch gelenkt, weil er neben seiner guten Funktionalität auch die kostengünstigste Option (sowohl hinsichtlich des Preises als auch der Verbreitung) in unserer Region ist. Von den Modellen, die auf dem Weg zu "Per-Port Power Switching" erwähnt werden könnten, können wir beispielsweise zusätzlich Folgendes feststellen:


  • Linksys USB2HUB4 USB 2.0 Hub.
  • D-Link DFB-H7 Combo Hub
  • Elecom U2H-G4S
  • Sanwa Supply USB-HUB14GPH
  • Targus Inc. PAUH212
  • Hawking Technology UH214

Ich hatte keine Gelegenheit, nach den genannten Geräten zu suchen, da ich einmal Glück mit der Revisionsversion A5 hatte. Die Wahrheit ist nun, wenn ich einen solchen Hub kaufen müsste, würde ich versuchen, die B1- Revision zu finden, da der Chip, auf dem er aufgebaut ist (GL854G), nicht nur die Leistung der Ports steuert, sondern auch einen Multi Transaction Translator enthält .



Die Bedeutung eines Multi Transaction Translator (MTT) in einem USB-Hub


Ein kleiner Exkurs, um zu erklären, was dieser Multi Transaction Translator (MTT) ist und warum er so wichtig und notwendig ist. Ein Transaktionssender (Transaction Transmitter, TT) ist eine wichtige Komponente jedes Hochgeschwindigkeits-Hubs, der die Kommunikation zwischen den Upstream- und Downstream-Ports eines Hubs ermöglicht, insbesondere wenn diese Ports mit unterschiedlichen Datenraten arbeiten. Tatsächlich trennt TT Geräte mit niedriger und mittlerer Geschwindigkeit von Geräten mit hoher Geschwindigkeit (z. B. nur USB 2.0) und ist für die Arbeit mit USB 1.1-Geschwindigkeiten verantwortlich.


Der Operationssender kann von zwei Typen sein - einzeln (dt. Single Transaction Translator, STT) oder mehrfach (dt. Multiple Transaction Translator, MTT). Im Fall von STT wird ein Sender für alle Ports verwendet, und im Fall von MTT hat jeder Port seinen eigenen Sender. Es ist klar, dass die erste Option billiger und einfacher ist. Woher kommt der Hauptnachteil dieser Option? Wenn mehrere USB 1.1-Ports an den Hub angeschlossen sind, funktionieren alle über einen einzigen Engpass. Ich denke, Sie können sich vorstellen, was mit der Geschwindigkeit des Austauschs passieren wird.



In einfachen Worten, STT-Hubs haben eine Begrenzung für die Anzahl der Geräte, die gleichzeitig verwendet werden können. Andernfalls besteht ein Paketverlust aufgrund von Konflikten bei der Planung der Datenübertragung, der Überlastung des Hubs (insbesondere bei Geräten, die aktiv Daten austauschen, wie z. B. Soundkarten) usw. Daher ist es besser, wenn Sie einen Hub auswählen, um sich sofort auf Geräte mit MTT zu konzentrieren, und dann nicht nach der Ursache für Instabilität in der Arbeit zu suchen. Wenn Sie bereits einen Hub haben und sich leider bei STT herausgestellt hat, müssen Sie nur die Standards der an den Hub angeschlossenen Geräte sorgfältig überprüfen und, wenn möglich, die Anzahl der angeschlossenen USB 1.1 auf eins reduzieren.


Leider hat die überwiegende Mehrheit der kostengünstigen Hubs, die auf Budget-Chips basieren (z. B. 1.1s, GL850G und ISP1521BE meines A5-Hubs), STTs an Bord, die teurer und fortschrittlicher sind (GL852G, GL854G (B1-Revision des D-Link DUB-H7 wird diskutiert). GL3520, VL812, VL813, SMSC USB2514) führen MTT aus.


Sie können den Typ des Operationssenders überprüfen, indem Sie entweder das Datenblatt auf dem Chip lesen (aber oft können oder wollen die Chinesen die Marke des Chips nicht mitteilen) oder indem Sie den Hub an den * nix-Computer anschließen und den Befehl lsusb -v ausführen und eine Serviceinformation für den untersuchten Hub finden (von Name). Die DeviceProtocol- Zeile zeigt entweder Single TT oder Multi TT an . Es ist klar, dass das Kaufen nur mit Multi besser ist :)


Beschreibung der vom lsusb-Team herausgegebenen Hub-Eigenschaften

Bus 001 Gerät 005: ID 2001: f103 D-Link Corp. DUB-H7 USB 2.0-Hub mit 7 Anschlüssen
Gerät konnte nicht geöffnet werden, einige Informationen fehlen
Gerätebeschreibung:
Länge 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 9 Hub
bDeviceSubClass 0 Nicht verwendet
bDeviceProtocol 1 Single TT
bMaxPacketSize0 64
idVendor 0x2001 D-Link Corp.
idProduct 0xf103 DUB-H7 USB 2.0-Hub mit 7 Anschlüssen
bcdDevice 1.00
iManufacturer 0
iProduct 0
iSerial 0
bNumConfigurations 1
Konfigurationsdeskriptor:
bLänge 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bKonfigurationswert 1
iConfiguration 0
bmAttributes 0xe0
Autark
Remote Wakeup
MaxPower 0mA
Schnittstellendeskriptor:
bLänge 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Nicht verwendet
bInterfaceProtocol 0 Hub mit voller Geschwindigkeit (oder Root)
iInterface 0
Endpunktdeskriptor:
Länge 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Übertragungstyp Interrupt
Synchronisationstyp keine
Verwendungsartdaten
wMaxPacketSize 0x0001 1x 1 Bytes
Intervall 12


Wenn Sie den Befehl lsusb -v -t ausführen , sehen Sie eine ziemlich hierarchische Struktur der verbundenen USB-Geräte.



Anstelle von lsusb können Sie das Dienstprogramm hwinfo mit dem Schalter --usb verwenden (es wird empfohlen, es über sudo apt-get install hwinfo vorinstallieren). Dann sieht die Ausgabe von Informationen über USB-Geräte etwas anders aus:


Informationen von hwinfo

lab @ lab-G: ~ $ hwinfo --usb
23: USB 00.0: 10a00 Hub
[Erstellt am usb.122]
Eindeutige ID: zFuK.sOcBcpBDhs4
Übergeordnete ID: k4bc.9T1GDCLyFd9
SysFS-ID: /devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.0
SysFS BusID: 1-8: 1.0
Hardware-Klasse: Hub
Modell: "D-Link DUB-H7 USB 2.0-Hub mit 7 Anschlüssen"
Hotplug: USB
Anbieter: usb 0x2001 "D-Link"
Gerät: USB 0xf103 "DUB-H7 7-Port USB 2.0 Hub"
Revision: "1.00"
Treiber: "Hub"
Treibermodule: "usbcore"
Geschwindigkeit: 480 Mbit / s
Modul-Alias: "usb: v2001pF103d0100dc09dsc00dp01ic09isc00ip00in00"
Konfigurationsstatus: cfg = neu, verfügbar = ja, erforderlich = nein, aktiv = unbekannt
Beigefügt zu: # 21 (Hub)


Im Allgemeinen haben wir kurz die Funktionen der Geräte mit niedriger Geschwindigkeit herausgefunden und jetzt ist es Zeit, mit dem Software-Teil fortzufahren.


Verwalten Sie die Stromversorgung des USB-Anschlusses


Ich werde sofort sagen, dass ich keine Möglichkeit gefunden habe, die PPPS-Funktionalität in einer Windows-Umgebung zu implementieren (zumindest aus müßigem Interesse). Das Maximum besteht darin, das Gerät mit dem Dienstprogramm devcon zu aktivieren / deaktivieren. Ich würde mich freuen, wenn einer der Leser korrigiert und ergänzt. In der Zwischenzeit werden alle Prozeduren am Beispiel von Ubuntu ausgeführt (im Fall von openwrt - der Algorithmus ist ähnlich, obwohl er im letzten Trunk bereits in der "Distribution" enthalten sein sollte).


Daher ist die Möglichkeit des Per-Port Power Switching (PPPS) oder des "Port Power Switching" auf Hubs mit Hardware-Unterstützung für diese Funktion mithilfe des Hub-Ctrl- Programms oder seines Nachkommen uhubctrl implementiert . Ich werde sie der Reihe nach betrachten.


Hub-Strg


Das Programm wurde 2006 vom japanischen Unabhängigkeitskämpfer Niibe Yutaka geschrieben . Aber jetzt funktioniert es ohne Probleme. Für die Installation benötigen wir eine * nix- und libusb-dev- Bibliothek. Für Ubuntu 16.04 LTS lautet der Algorithmus wie folgt:


  Installieren Sie add.  Pakete: sudo apt-get update && sudo apt-get installiere libusb-dev git gcc
 Quelle herunterladen: Git-Klon https://github.com/codazoda/hub-ctrl.c
 Kompiliert mit gcc: cd hub-ctrl.c && gcc -o hub-ctrl hub-ctrl.c -lusb 

Wenn die Adresse nicht verfügbar ist, können Sie die Quellen manuell von hier oder von hier herunterladen und mit dem oben beschriebenen Befehl kompilieren.


Das Programm hat eine ziemlich einfache Befehlszeilensyntax, die in die folgende Beschreibung passt:


./ hub-ctrl [{-h HUBNUM | -b BUSNUM -d DEVNUM}] \ [-P PORT] [{-p [VALUE] | -l [WERT]}]
Wobei HUBNUM - Hubnummer, BUSNUM-Busnummer, DEVNUM-Gerätenummer, PORT-Portnummer


Um diese Parameter herauszufinden, führen Sie einfach den Befehl lsusb aus :



Übrigens kann das Hub-Ctrl-Programm als eine Art „Sonde“ des USB-Hubs fungieren, da es die Port-Power verwalten kann. Es reicht aus, es mit dem Schalter -v auszuführen. Wir erhalten eine Liste der im System verfügbaren unterstützten Hubs (INFO-Leitung) und den Portstatus (in meinem Fall sind alle Ports deaktiviert).


lab @ lab-G: ~ / hub $ sudo ./hub-ctrl -v
Hub # 0 um 001: 006
INFO: individuelle Leistungsumschaltung.
WARNUNG: Portanzeigen werden NICHT unterstützt.
Hub-Port-Status:
Port 1: 0000.0000
Port 2: 0000.0000
Port 3: 0000.0000
Port 4: 0000.0000
Port 5: 0000.0000
Port 6: 0000.0000
Port 7: 0000.0000

Und so sieht die Konfiguration aus, wenn alle Ports eingeschaltet sind:


lab @ lab-G: ~ / hub $ sudo ./hub-ctrl -v
Hub # 0 um 001: 006
INFO: individuelle Leistungsumschaltung.
WARNUNG: Portanzeigen werden NICHT unterstützt.
Hub-Port-Status:
Port 1: 0000.0100 Stromversorgung
Port 2: 0000.0100 Stromversorgung
Port 3: 0000.0100 Stromversorgung
Port 4: 0000.0100 Stromversorgung
Port 5: 0000.0100 Stromversorgung
Port 6: 0000.0100 Stromversorgung
Port 7: 0000.0100 Stromversorgung

Um einen der Ports zu aktivieren, müssen Sie den Befehl sudo ausführen ./hub-ctrl -h 0 -P 1 -p 1 , wobei -h angibt, welchen Hub wir verwenden (in meinem Fall der 0.), -P angibt, welcher Port (1- th Port in meinem Fall) und -p gibt den Status an (0-aus, 1-ein).



Um die Konfiguration wie in der Abbildung oben zu erhalten, mussten die folgenden Befehle nacheinander ausgeführt werden (für anfangs deaktivierte Ports):


sudo ./hub-ctrl -h 0 -P 2 -p 1
sudo ./hub-ctrl -h 0 -P 4 -p 1
sudo ./hub-ctrl -h 0 -P 6 -p 1


Dementsprechend ist es nicht schwierig, ein Skript zu schreiben, mit dem die LEDs zum Spaß in der gewünschten Reihenfolge blinken. Beispiele für solche Dinge existieren bereits und funktionieren erfolgreich:
Morsecode auf einem USB-Hub, Weihnachtsgirlanden usw. usw. Aufgrund der Funktionen von Hub-Ctrl reichte die zyklische Schaltfunktion für mich nicht aus, um meine momentanen Beleuchtungsphantasien zu verwirklichen (um keine Zeit mit dem Schreiben eines Skripts usw. zu verschwenden). Dieser lästige Fehler wird im Nachfolger beseitigt - uhubctl.


UHUBCTL


Das uhubctl-Programm ist ein optimiertes Hub-Ctrl-Analogon und weist einige kosmetische Unterschiede auf (und unterstützt natürlich mehr Geräte).


Mit uhubctl Arbeit:

Theoretisch kann das Dienstprogramm so kompiliert werden, dass es in einer Windows-Umgebung ausgeführt wird, aber ... Derzeit interagiert es mit Dienstprogrammen über den winusb.sys-Treiber, der nicht direkt auf den Hub zugreifen kann. Das Programm behauptet auch, USB 3.0 zu unterstützen (USB 3.0-Hubs, die Per-Port Power Switching unterstützen, sind übrigens viel mehr als USB 2.0-Hubs mit ähnlichen Funktionen). Wenn Sie mit einem USB 3.0-Hub arbeiten, der an einen USB 3.0-Upstream-Port angeschlossen ist, definiert das Programm diesen als zwei unabhängige virtuelle Hubs: USB 2.0 und USB 3.0. Die USB-Geräte selbst werden je nach ihren Fähigkeiten und ihrer Verbindungsgeschwindigkeit an einen von ihnen angeschlossen . Dementsprechend aktiviert / deaktiviert das Programm zum Verwalten solcher Geräte standardmäßig das Einschalten virtueller Hubs (Sie können das Dienstprogramm in den manuellen Modus schalten, indem Sie dem Startbefehl den Schalter -e hinzufügen).


Wichtig: Das Adressierungssystem für USB-Anschlüsse kann zu Verwirrung führen (ähnlich wie bei Hub-Strg und UHUKTL). Bei der Arbeit wird dieselbe Adressierungsmethode verwendet wie im Linux-Kernel: bx.yz, wobei b die USB-Busnummer und x, y, z die Portnummern der Hostkette sind, beginnend mit dem Stamm-USB-Hub für diesen Bus. Wenn es mehr als einen verwalteten USB-Hub gibt, können Sie die richtigen Optionen ermitteln, indem Sie uhubctl mit der Option -l (Speicherort) ausführen. Ich stelle fest, dass diese Adressierung halbstabil ist - sie ändert sich nicht, wenn Sie USB-Geräte trennen und wieder an denselben physischen Port anschließen.


Der Kompilierungsalgorithmus des Programms ähnelt dem Algorithmus für hub-ctrl. Die einzige Ausnahme besteht darin, dass Sie die libusb-1.0-Bibliothek (Version 1.0.12 oder höher) mit dem üblichen Befehl sudo apt-get install libusb-1.0-0-dev installieren und dann die Binärdatei mit dem Befehl make kompilieren müssen.


Die Syntax zum Starten des Programms lautet wie folgt.


uhubctl -a off -p 2


Dieser Befehl schaltet die Stromversorgung (-a aus oder -a 0) an Port 2 (-p 2) aus. Unterstützte Aus / Ein / Zyklus (oder 0/1/2) Befehle. Der Zyklusschalter schaltet die Stromversorgung aus, wartet eine Weile (bestimmt durch den Schalter -d) und schaltet sie wieder ein. Das heißt, Jetzt kann der Hub den Mikrocontroller zum Blinken problemlos ersetzen.


Was folgt aus all dem oder Schlussfolgerungen


Daraus folgt, dass das "Geheimnis" im alten Hub von D-Link alles da ist. Die Verwendung der beschriebenen Technologie (PPPS) ist gerechtfertigt, wenn Sie eine Reihe von Geräten, die an den USB-Bus angeschlossen sind, fernsteuern müssen. Darüber hinaus wird diese Methode bereits zum Deaktivieren von Festplatten , Webcams und GSM-Modems (wie im Bild) verwendet:


Bild

Obwohl es bei Modems und dem von mir erwähnten D-Link DUB-H7 Leute gibt, die die Funktionsfähigkeit eines solchen Bundles in Frage stellen (wenn sie mit dem Hub-Ctrl-Programm arbeiten).


Der Grund ist, dass ...

"... Experimente mit dem Dlink DUB H-7 haben gezeigt, dass hub-ctrl -p 0 die Spannung nur auf 1,47 V senkt. Nach dem Einsetzen des Modems in einen solchen" deaktivierten Port "blinkt die LED jedoch nicht, sondern die Dateien / dev / ttyUSBx . . ."


Die im Artikel beschriebenen Dienstprogramme (lsusb, hwinfo, hub-ctrl) können eine hervorragende Hilfe bei der Auswahl des nächsten USB-Hubs sein, insbesondere wenn kein Zugriff zum Anzeigen des internen Geräts vorhanden ist. Auf einen Benutzer wurden bereits Ideen und Erwartungen von idealen USB-Hubs beschrieben ( hier und hier ). Die beschriebenen Algorithmen zur Überprüfung bestehender Hubs werden meiner Meinung nach die von den Autoren beschriebenen Ansätze perfekt ergänzen und verwässern. Und so sieht der Held meines Artikels (D-Link DUB-H7 Version A5) meiner Meinung nach aus Sicht der Schaltungslösungen sehr gut aus. Vielleicht verneige ich mich vor der Sim :)



PS Auf der Suche nach einer Frage an Mitglieder der Habr-Community, die plötzlich ganz zufällig in einem grauen Fall wie mein D-Link DUB-H7 herumlagen.



( - )? RP1...RP2 ( 0- c).


: - EEPROM 24C02, :



Wichtig! - - lab66 . , , :)


Source: https://habr.com/ru/post/de430220/


All Articles