erwin Posted January 10, 2012 Share Posted January 10, 2012 (edited) Ich benutze schon eine zeitlang eine spezielle Steckdosenleiste zur Abschaltung von Monitor, Soundanlage und DVB-USB. Diese Steckdosenleiste besitzt ein USB-Anschlusskabel welches bei laufendem PC mit der 5V USB-Spannnung gespeist wird und ein Relais in der Leiste auf Durchgang schaltet. Also garantiert kein Standby-Verbrauch bei ausgeschaltetem PC - genauer wenn seine USB-Ports stromlos sind. Die Dinger gibts zur Zeit bei Pearl für etwa 10 Euro. Der Gedanke liegt nahe USB Ports per Software stromlos schalten zu können. Man könnte dann solche Dinge wie - Beleuchtung ein-/ausschalten - Verdunklungsrollos herunterfahrenn - Beamer und Soundanlage einschalten - externe USB-Laufwerke nur bei Bedarf mit Strom versorgen - usw, usf per Software also z.B per Fernbedienung oder per Command.vbs schalten. Lt. Spezifikation gibt es für USB-Hubs die Option die Ports per Kommando stromlos zu schalten. Option heist hier: der Hersteller entscheidet ob er es einbaut. Es gibt für Windows eine Bibliothek zum Zugriff auf USB-Geräte: libusb-win32 Diese ist Open-Source und steht unter der GPL. Leider unterstützt diese keine USB-Hubs. Glücklicherweise ist sie quelloffen und darf unter den Bedingungen der GPL modifiziert, neu compilliert und vertrieben werden. Ich habe also diese gepatcht und diese für Hubs verfügbar gemacht. Hier eine Anmerkung: Der Ursprungsentwickler hat Hubs explizit per if-Anweisung ausgeschlossen gehabt. ER WIRD SEINE GRÜNDE DAFÜR GEHABT HABEN. Also benutzt die nun zugänglichen Hubs mit Vorsicht und nur zum Powerswitchíng (etwas anderes habe ich nicht getestet) Und. NATÜRLICH OHNE HAFTUNG meinerseits. Bei den Internetrecherchen bin ich auf einige libusb-win32-User gestoßen die sich ihr komplettes USB-System disabled hatten. Und dann hatten sie auch nur noch PC's OHNE PS2, also USB-Tastatur. USB-Maus. Peinlich! Ich selbst hatte solche Probleme nicht. Aber dennoch zur Vorsicht: Systemabbild zum Restore zum Zustand vor den Tests erstellen und Reparatur-CD bereithalten. So nun zur Anwendung. Vorerst hab ich nur eine Windows-XP Version. libusb0.sys nach system32\driver libusb0.dll nach system32 kopieren install-filter-win.exe benutzen um die Filterdriver der verwendeten HUBs zu installiere/deinstalieren. auf der Kommandozeile (oder eingebettet in *.BAT, *.CMD, COMMAND.VBS) UPS [ -h HUBNUM -p PORTNUM -S { on | off } ] UPS ohne Parameter zeigt die adressierbaren Hubs an, durchnummeriert beginnend mit 0. Dies Nummer ist als HUBNUM zu verwenden. Die PORTNUM beginnt bei 1. Also z.B.: UPS -h 1 -p 3 -s off schaltet den Strom des Port 3 des zweiten Hubs (#0, #1) aus, und UPS -h 1 -p 3 -s on wieder ein. Der Quelltext von UPS.exe liegt GPL gemäß bei. Achtung: mit der Konfiguration Hub an Hub hatte ich noch Probleme. Viel Spass erwin UPS.zip EDIT: 23.04.12 Hab das Teil wieder vom Download genommen. Ist bei Fehlanwendung doch ein ziemliches Risiko. Falls dennoch Interesse dann nur über PM. Edited April 23, 2012 by erwin Quote Link to comment
nuts Posted January 10, 2012 Share Posted January 10, 2012 Falss es dich interessiert und du dein System mal erweitern willst. Ich verwende für derartige Anwendungen das FS20 System: http://www.elv.de/FS20-PC-Sender-FS20-PCS,-Komplettbausatz/x.aspx/cid_74/detail_10/detail2_27743 Ist voll programmierbar und es gibt zahlreiche Erweiterungsmöglichkeiten. Allerdings etwas teurer als deine Lösung. Quote Link to comment
Portisch Posted January 11, 2012 Share Posted January 11, 2012 libusb-win32 Erlich gesagt wird mir da schlecht wenn ich libusb höre.. Damit habe ich mir schon mindestens 2 Win7 Systeme lahmgelegt. Ich weis aber nicht ob es mittlerweile Win7 x86/x64 kompatibel ist. Ist ca. 2-3 Jahre her. Das Problem war, dass überhaupt keine USB Geräte mehr funktionierten. Deinstallation von libusb ist laut Beschreibung nicht möglich -> neu aufsetzen. Dazu musste ich eine alte Tastatur mit PS2 anschließen um das System irgendwie steuern zu können. Unter WinXP scheint es aber keine Probleme zu geben. Quote Link to comment
erwin Posted January 11, 2012 Author Share Posted January 11, 2012 Hi, Portisch! Damit habe ich mir schon mindestens 2 Win7 Systeme lahmgelegt. Ich weis aber nicht ob es mittlerweile Win7 x86/x64 kompatibel ist. Ist ca. 2-3 Jahre her. Das Problem war, dass überhaupt keine USB Geräte mehr funktionierten. Deinstallation von libusb ist laut Beschreibung nicht möglich -> neu aufsetzen. Dazu musste ich eine alte Tastatur mit PS2 anschließen um das System irgendwie steuern zu können. Diese Misere hatte ich ja der Fairness halber mitbeschrieben, obwohl es eine Kontraempfehlung ist. Jeder sollte wissen was er tut. Ich hab die Soft trotzdem bereitgestellt weil ich lange nach einer Lösung zum Abschalten der Portstromversorgung gesucht habe und absolut nichts gefunden habe bis auf die oft geäußerte "Expertenmeinung" es gehe prinzipiell nicht. Ich will denjenigen eine Lösung anbieten die wie ich lange gesucht haben. Unter WinXP scheint es aber keine Probleme zu geben. In der Tat habe ich bis jetzt nichts Böses festgestellt - unter XP! Ich danke Dir für die Vorwarnung dasss dies unter Windows 7 ganz anders aussehen kann. Ich könnte mir vorstellen das falsche Kerneltreiber libusb0.sys verwendet worden sind. erwin Quote Link to comment
Portisch Posted January 13, 2012 Share Posted January 13, 2012 Es war damals die Version 0.1.12.2 von libusb die ich verwendet habe. Das Problem dabei war sobald man den Treiber installiert ging gar kein USB Device mehr. Unistall gibt (zumindest damals) ja nicht nicht -> System hinüber. Jetzt ist ja schon auf v1.2.2.0 vielleicht schaut es da besser aus - habe es aber nicht getestet. Nativ über Windows Funktionen kommt man da nicht ran? Libusb muss ja auch irgendwie rankommen. Quote Link to comment
SupaChris Posted January 13, 2012 Share Posted January 13, 2012 Das LibUSB Problem, dass dann gar nix mehr geht, ist ein Nutzer-Problem. Wenn man den Filter-Treiber installiert, und nicht aufpasst, was man anklickt, installiert der sich auf alle USB Geräte. Mittlerweile haben die diesen Inf-Generator überarbeitet und man hat da mehr Kontrolle. Die neue LibUSB ist sogar signiert kann also auf x64 genutzt werden. Über Windows-Boardmittel geht das bestimmt auch, WinUSB wäre da der Ansatzpunkt. Bin mir aber nicht sicher, ob WinUSB auch Hubs ansteuern kann. Quote Link to comment
erwin Posted January 13, 2012 Author Share Posted January 13, 2012 Es war damals die Version 0.1.12.2 von libusb die ich verwendet habe. Das Problem dabei war sobald man den Treiber installiert ging gar kein USB Device mehr. Unistall gibt (zumindest damals) ja nicht nicht -> System hinüber. Jetzt ist ja schon auf v1.2.2.0 vielleicht schaut es da besser aus - habe es aber nicht getestet. Ich hab Version 1.2.5 verwendet. Dort gibt es neben "Install a device filter" auch "Remove a device filter". Nativ über Windows Funktionen kommt man da nicht ran? Libusb muss ja auch irgendwie rankommen. Bestimmt. Nur ist dann das Programmieren von Kernel Device Drivern angesagt. Eine Programmierklasse für sich, und ob man dann die Probleme los ist wage ich zu bezweifeln. Oder anders gesagt, wenn man die Ursache erkennt, könnnte man es auch in libusb-win32 fixen falls es überhaupt ein Problem der Soft ist. Ich gehe da mit SupaChris. Fehlerhafte Anwendung des libusb-win32 filter installer etwa. Was passiert etwa wenn man "Install a device filter" auf die Root Hubs des Systems anwendet. Ich wills lieber nicht ausprobieren. erwin Quote Link to comment
erwin Posted January 13, 2012 Author Share Posted January 13, 2012 (edited) PS: jetzt wo ich das so geschrieben habe wird mir doch Einiges klar. Ich schrieb im Ausgangspost: Hier eine Anmerkung: Der Ursprungsentwickler hat Hubs explizit per if-Anweisung ausgeschlossen gehabt. ER WIRD SEINE GRÜNDE DAFÜR GEHABT HABEN. Ich hab nicht verstanden warum er die Hubs ausgeschlossen hat. Aber vielleicht sind die Root Hubs genau die Erklärung. In den früheren Versionen war dies vielleicht möglich, mit den unangenehmen Konsequenzen. Deshalb lieber zur Sicherheit alle Hubs ausschließen. In der von mir vorgestellten Version kann man übrigens keine Root Hubs zur Filter Installation auswählen erwin Edited January 13, 2012 by erwin Quote Link to comment
SupaChris Posted January 13, 2012 Share Posted January 13, 2012 (edited) Naja, die LibUSB als Treiber für einen Hub nehmen ist schon blöd, bei der Installation werden ja dann alle Hubs mit der gleichen VID/PID umgelabelt. Wenn man natürlich einen externen Hub hat, kann man sowas machen. Dann gehts aber auch mit der WinUSB. Theoretisch müsste es aber auch möglich sein, den Windows USB Hub Treiber direkt anzusprechen und zwar über die WinAPI und IOCONTROLS. Müsste man sich mal angucken. Aber das gefrickel ist eigentlich unnötig, es gibt doch den IOWarrior, der kann viel mehr und geht wesentlich besser zu bedienen. Edited January 13, 2012 by SupaChris Quote Link to comment
erwin Posted January 13, 2012 Author Share Posted January 13, 2012 Naja, die LibUSB als Treiber für einen Hub nehmen ist schon blöd, bei der Installation werden ja dann alle Hubs mit der gleichen VID/PID umgelabelt. ??? Was meinst Du? Wenn man natürlich einen externen Hub hat, kann man sowas machen. Einen externen Hub? Du meinst die, die man sich für wenige Euro kauft und dann anschließt? Ja sowas hab ich mir geleistet. Die internen, aka root hubs, wollte ich ja explizit ausgeschlossen wissen. Dann gehts aber auch mit der WinUSB. Ich hab mich auf libusb-win32 gestützt. WinUSB wäre da vorteilhafter? Theoretisch müsste es aber auch möglich sein, den Windows USB Hub Treiber direkt anzusprechen und zwar über die WinAPI und IOCONTROLS. Müsste man sich mal angucken. Ich suche seit ca. 2 Jahren. Her mit deinen Ideen! Aber das gefrickel ist eigentlich unnötig, es gibt doch den IOWarrior, der kann viel mehr und geht wesentlich besser zu bedienen. Ist ne Hardwarelösung oder? Kenn ich leider nicht. Danke Dir für den Hinweis. erwin Quote Link to comment
SupaChris Posted January 13, 2012 Share Posted January 13, 2012 Ich meine, wenn du mit dem LibUSB Inf Tool eine inf Datei erstellst, wird darin die USB Vendor ID (VID) und Product ID (PID) deines Hubs hinterlegt. Wenn du für den Hub dann die LibUSB als Treiber installierst, kannst du zwar aus dem User Space drauf zugreifen, aber der arbeitet natürlich nicht mehr als Hub. Und Windows installiert dann für alle Hubs die die gleiche VID/PID Kombination haben, LibUSB. Das ganze ist ein ziemlich unsauberes Gefrickel. Mit dem IOWarrior (USB Controller Chip, der einfach Ausgänge schalten kann) geht sowas viel einfacher und ohne Krücke. Ob und wenn ja wie man mit dem USB Hub Treiber von Windows sprechen kann, müsste ich mal untersuchen. Mit der WinUSB kenn ich mich aus, aber ich denke man kann auch so eventuell den Hub-Treiber ansprechen. Quote Link to comment
MadTax Posted March 3, 2012 Share Posted March 3, 2012 Hallo erwin, nettes Teil, das Du da kreiert hast. Habe ich schon lange gesucht. Vielen Dank dafür! Ich verwende ein aktives 7-Port-Hub von Xystec. An dem 7-Port Hub habe ich ein "USB auf Paralell-Kabel". Nach einiger Zeit, meist mehreren Stunden, nimmt der Drucker keine Druckaufträge mehr an. Durch Ein- und Ausschalten des ganzen Hubs geht es dann wieder. Da will ich probieren, ob nicht mit Hilfe Deines Tools eine Automatiserung möglich ist, um das abgestürzte Kabel zu reseten. Das Aus- und Einschalten funktioniert grundsätzlich, aber ich habe ein Problem mit der Aktualisierung im Gerätemanager. Schalte ich ein Gerät (Gerät1) aus, kommt auf der Commandline die Meldung, das der vorgang erfolgreich war. Im Gerätemanager tut sich aber nichts. Das Gerät ist auch weiterhin verwendbar. Erste wenn ich ein anderes Gerät (Gerät2) einschalte, verschwindet Gerät1 aus dem Gerätemanager und steht nicht mehr zur Verfügung. Schalte ich anstelle eines Gerätes einen freien Port am Hub ein, passiert auch nichts. Auch ein weiterer Ausschaltvorgang löst keine Aktualisierung aus. Weder mit noch ohne Gerät. Meine UPS.bat sieht deshalb so aus: "c:\programme\UPS\UPS.exe" -h 0 -p 4 -s %1 "c:\programme\UPS\UPS.exe" -h 0 -p 5 -s off "c:\programme\UPS\UPS.exe" -h 0 -p 5 -s on So kann ich Port 4 schalten, je nach übergebenen Parameter. Ohne Quälen des USB-Sticks auf Port 5 würde erst mal nichts passieren. Ich muss gestehen, dass ich bisher auch nicht die Geduld aufgebracht habe, mehr als eine Minute zu warten, ob der Ausschaltvorgang doch noch von alleine stattfindet. An dem 7-Port-Hub hängt unter anderem ein passives 4 Port Hub. An beiden Hubs kann ich mein Problem feststellen. Es ist damit zumindest nicht herstellerspezifisch. Für mich sieht das so aus, dass das Hub den Port erst ausschaltet, wenn ein Einschaltvorgang läuft. Ein Ausschaltvorgang führt nicht zum Ausschalten, er wird nur irgendwie vorgemerkt. Du hattest geschrieben, das Du bei Hub an Hub Schwierigkeiten hattest. Außer dem beschriebenen Problem mit der Aktualisierung treten bei mir keine auf. Ferner ist es bei mir so, dass alle Ports wieder an sind, wenn das aktive Hub vorübergehend stromlos gestellt wird. Ist das so gewollt? Ich hatte die Ausführungen über die Root-Hubs so verstanden, dass der geschaltete Zustand permanent ist. Ansonsten hätten die PC-Freunde, die ihre USB-Anlage lahmgelegt hatten, mit dem simplen Aus- und Einschalttrick eine Reparatur durchführen können. MadTax Quote Link to comment
MadTax Posted March 4, 2012 Share Posted March 4, 2012 Hi erwin, ich habe seit mehreren Stunden nun einen Druckertest laufen und dank Deines Tools bisher ohne Fehler. Ich freue mich! Als alter Stromsparer habe ich gleich die USB-Kamera am Xystec-Hub ausgeschalten. Bild war sofort weg. Allerdings als ich in die Nähe der Kamera kam, habe ich gesehen, dass die Beleuchtungsdioden an der Kamera noch leuchteten. Ich muss davon ausgehen, dass Dein Tool nur die Datenverbindung unterbricht, aber nicht den Strom. Wurde da der USB-Standard bei meinem Hub nicht richtig umgesetzt oder kannst Du bei Deinem Tool etwas ändern? MadTax Quote Link to comment
erwin Posted March 5, 2012 Author Share Posted March 5, 2012 (edited) aber ich habe ein Problem mit der Aktualisierung im Gerätemanager. Schalte ich ein Gerät (Gerät1) aus, kommt auf der Commandline die Meldung, das der vorgang erfolgreich war. Im Gerätemanager tut sich aber nichts. Das Gerät ist auch weiterhin verwendbar. Erste wenn ich ein anderes Gerät (Gerät2) einschalte, verschwindet Gerät1 aus dem Gerätemanager und steht nicht mehr zur Verfügung. Schalte ich anstelle eines Gerätes einen freien Port am Hub ein, passiert auch nichts. Auch ein weiterer Ausschaltvorgang löst keine Aktualisierung aus. Weder mit noch ohne Gerät. Ich versuch das mal nachzuvollziehen." Das Gerät ist auch weiterhin verwendbar." Lt. Gerätemanager, oder tatsächlich? Ferner ist es bei mir so, dass alle Ports wieder an sind, wenn das aktive Hub vorübergehend stromlos gestellt wird. Ist das so gewollt? Von mir gewollt? Nein. Scheint standardverhalten bei Hubs zu sein. Ich hatte die Ausführungen über die Root-Hubs so verstanden, dass der geschaltete Zustand permanent ist. Ansonsten hätten die PC-Freunde, die ihre USB-Anlage lahmgelegt hatten, mit dem simplen Aus- und Einschalttrick eine Reparatur durchführen können. Ich weiss nicht was die Pechvögel da wirklich geschafft haben, und will es auch gar nicht nachvollziehen ;-). Irgendwie haben die vielleicht das gesamte USB-System lahmgelegt. Als alter Stromsparer habe ich gleich die USB-Kamera am Xystec-Hub ausgeschalten. Bild war sofort weg. Allerdings als ich in die Nähe der Kamera kam, habe ich gesehen, dass die Beleuchtungsdioden an der Kamera noch leuchteten. Ich muss davon ausgehen, dass Dein Tool nur die Datenverbindung unterbricht, aber nicht den Strom. Ich hatte ja geschrieben, dass die Unterstützung hardwareabhängig ist. In der Tat unterstützen nur sehr sehr wenige im Handel erhältliche Hubs dieses Feature. Eines dieser Exoten ist das DELOCK 87445. Ohne Werbung machen zu wollen, ist dieses sehr preiswert z.Z. bei Reichelt für 4,45 Euro erhältlich http://www.reichelt.de/USB-Hubs/DELOCK-87445/index.html?;ACTION=3;LA=2;ARTICLE=87439;GROUPID=4831;artnr=DELOCK+87445;SID=10T1RPf38AAAIAAE-A5xUcd5f30728b9dc8d3493b5a6e6327525f Die anderen verhalten sich so, als wenn sie die Ports nur disablen (die LED bleibt z.B. an; wäre auch über devcon erreichbar). Ob tatsächlich Power-off Feature vorhanden sieht man an der Ausgabe im Commandwindow. power switching capabilities: individual power switching. Der Hub ist fähig jeden Port einzeln zu schalten. power switching capabilities: ganged switching. Der Hub schaltet (nur) Gruppen von Ports. Bei fast allen meinen Hubs (Ausnahme oben genannt) bekomme ich diese Meldung, ohne jedoch hier irgendwelche Gruppen feststellen zu können (was aber nicht heisst, dass es Hubs mit wirklich dedizierten Gruppen von Ports gibt). Resultat: nur ein disable. erwin Edited March 5, 2012 by erwin Quote Link to comment
MadTax Posted March 5, 2012 Share Posted March 5, 2012 Hallo Erwin, danke für Deine Stellungnahme. Ich habe gleich einmal das Ausschalten untersucht. Also das Gerät ist aus. Windows weiß aber nix davon (z. B. Gerätemanager). Ich muss mich für meine obflächliche Analyse entschuldigen. Das Vorhandensein der Geräte im Gerätemanager und der USB-Laufwerke im Explorer hat micht zu meinem vorschnellen Schluss kommen lassen. Das von Dir erwähnte Delock Hub kenne ich aus einem anderen Thread, in dem es auch um das Schalten von Ports am USB-Hub geht: http://www.vdr-portal.de/board19-verschiedenes/board52-andere-hardware/102608-stromversorgung-schalten-mit-usb-hub-f%C3%BCr-3-70-eur/ Ich werde mir das nun doppelt empfohlene Hub zulegen. Auf Deine Antwort hin bin ich gleich in den Keller geflitzt und habe mein Delock Hub gesucht. Es ist ein anderes, ein 61393. Und es ist unsichtbar für Dein Tool. Zuerst ans Xystec-Hub angeschlossen, nix. Dann direkt am Roothub ebenfalls nix. Dann als einziges Hub am Rechner. Kein Hub gefunden. Muss ein Stealth-Hub sein. Ich habe da noch eine Verständnisfrage: Bei einem Teil der Hubs (ganged switching) kann im Ergebnis nur die Datenleitung gekappt werden. Bei einem anderen Teil (individual switching) werden immer die Datenleitung und die Stromleitung uno acto gekappt. Ist es vorstellbar, nur die Stromleitung zu kappen? Ich benutze einen USB zu Paralell-Adapter für einen alten Drucker. Und der Adapter geht nur, wenn er keinen Strom vom Hub bekommt (und ein passives Hub zwischengeschalten ist). Ich habe eine USB-Verlängerung in der Weise präpariert, dass die Stromleitungen durchtrennt sind. Könnte ich den Strom am Hub ausschalten, wäre das chicer. MadTax Quote Link to comment
erwin Posted March 5, 2012 Author Share Posted March 5, 2012 (edited) Ich habe da noch eine Verständnisfrage: Bei einem Teil der Hubs (ganged switching) kann im Ergebnis nur die Datenleitung gekappt werden. Bei einem anderen Teil (individual switching) werden immer die Datenleitung und die Stromleitung uno acto gekappt. Ist es vorstellbar, nur die Stromleitung zu kappen? Ich benutze einen USB zu Paralell-Adapter für einen alten Drucker. Und der Adapter geht nur, wenn er keinen Strom vom Hub bekommt (und ein passives Hub zwischengeschalten ist). Ich habe eine USB-Verlängerung in der Weise präpariert, dass die Stromleitungen durchtrennt sind. Könnte ich den Strom am Hub ausschalten, wäre das chicer. Auf die schnelle habe ich in der USB-Spezifikation nur folgendes gefunden: Bezüglich der Stati eines USB-Hub-Ports 11.5.1.3 Disconnected A port transitions to this state in any of the following situations: • From the Powered-off state when the hub receives a SetPortFeature(PORT_POWER) request • From any state except the Not Configured and Powered-off states when the port’s disconnect timer times out • From the Restart_S or Restart_E state at the end of the restart interval In the Disconnected state, the port’s differential transmitter and receiver are disabled and only connection detection is possible Er geht also in den "Disconnected"-Status wenn er mit SetPortFeature(PORT_POWER) angesteuert wird. Dies macht das UPS-Programm. In the Disconnected state, the port’s differential transmitter and receiver are disabled and only connection detection is possible Wenn dir das was sagt? Genaueres in der im Web verfügbaren USB-Spezifikation. Und was nicht in der Spezifikation steht, kann jeder Hersteller auslegen wir er will. erwin PS: Was ist das denn für ein seltsames Teil, wo du dann manuell selbst ein USB-Verlängerungskabel aufsplitten must? Edited March 5, 2012 by erwin Quote Link to comment
MadTax Posted March 5, 2012 Share Posted March 5, 2012 (edited) Hi erwin, warum das USB-Parallel-Kabel keinen Strom haben darf, kann ich Dir nicht sagen. Die Geschichte ging so: Mein derzeitiges Spielzeug ist ein modifizierter Cedar 4000 Disc-Publisher mit Autoloader. Der besteht bei mir aus einer über die serielle Schnittstelle geteuerten Be- und Entladeeinheit, einem DVD/CD-Drucker mit Parallelschnittstelle, zwei DVD-Brennern mit IDE Schnittstelle und einer USB-Kamera. Alles wird über USB Adapter oder direkt auf das Xystec-Hub im Inneren der Einheit verbunden und vom PC per USB angesteuert (Ein einziges Kabel). Zuerst hatte ich nur das Parallel-Kabel am 7-Port Hub im Autoloader. Ging ohne Einschränkungen. Dann habe ich die USB-Seriell-Schnittstelle dazugetan. Es ging. Dann den ersten USB / IDE Adapter plus DVD-Laufwerk. Es ging. Freude strahlte über mein Gesicht. Dann das Entsetzen, als ich den zweiten USB / IDE Adapter plus DVD-Laufwerk angestöpselt hatte. Die USB-Druckerunterstützung wurde nicht mehr erkannt. Ein unbekanntes Gerät in der Systemsteuerung. Da vorher alles ging kombinierte ich: Durch das vierte Gerät hat sich die Spannungsversorgung im Hub verändert. Zuerst habe ich ein aktives Hub zwischen den Xystec und das Parallel-Kabel geschalten, damit das Kabel mehr Spannung erhält. Resultat: Das Kabel wurde nicht mehr gefunden. Nicht einmal mehr als unbekanntes Gerät. Also nächste Schlussfolgerung: Nicht zu wenig, sondern zuviel Strom liegt auf dem Gerät. Das erschien mir logisch, da in meiner Vorstellung USB-Hubs mit 7 Ports zwei hintereinander geschaltete 4-Port Hubs sind (Bei 11 Ports sind es drei Hubs in meiner Theorie). Bei Gerät Nr. 4 war ich auf dem anderen internen Hub und habe so die Anpassung der Strommenge nach oben erzwungen. Also habe ich die Verlängerung mit durchtrennter Stromleitung gebaut. Das Experiment war mir die drei Euronen für das Kabel wert. Und es hat funktioniert. Bis, ja bis ich es toll fand, noch einen USB-Stick auf Port 5 zu stecken. Plötzlich ging nichts mehr. Das Parallel-Kabel wieder ein unbekanntes Gerät im Systemmanager. Diesmal hat ein passiver Hub zwischen Xystec und dem stromaderndurchtrennten Kabel geholfen. Die Stromkabel waren ja durchtrennt , deshalb konnte es nur am Datenkabel liegen. Ein Gerät mehr bedeutet anscheinend, dass der Hub die Strommenge auch auf den Datenkabeln erhöht. Die kann ich durch einen passiven Hub quasi als Leitungswiderstand vermindern. Tja und seitdem geht es mit der Einschränkung unregelmäßiger Abstürze bei langer Laufzeit. Ich habe auch ein zweites baugleiches Parallel-Kabel, bei dem ist es genauso. Ich folgere daraus, dass es nicht defekt ist. Mein Erklärungsversuch: Zum einen ist das Parallel-Kabel USB 1.1 und das muss das Hub umsetzen. Zum anderen liegt am Parallel-Anschluss Spannung an. Die Spannung speist auch den Adapter. Ist der Autoloader aus, aber der Drucker an, leuchtet die Betriebs-LED auf der Platine des Autoloaders bei Verwendung von Standardkabeln. Das kann nur durch die Spannung am parallelen Port bewirkt werden, die über USB auf das HUB und von dort über den USB-Seriell-Adapter auf die Platine geführt wird. Da läuft etwas nicht richtig. Durch das Trennen der Stromadern kann kein Strom mehr in die verkehrte Richtung fließen. Der Drucker ist ein Primera-Signature IV. Die Füllstandsanzeige für die Tintenpatrone funktioniert nur mit einer parallelen Verbindung, also nicht über USB. Ich glaube, da werden einfach unbelegte Leitungen von Drucker und Druckertreiber benutzt. Die USB-Schnittstelle benutzt die nicht, wird aber irritiert. Daher auch der Absturz in unregelmäßigen Abständen. Mehr Erklärung kann ich nicht liefern. Vor jedem Druck wird durch Dein Tool der Port des Drucker-Kabels am passiven Hub einmal aus- und wieder eingeschalten. Beim letzten Lauf sind durch diesen Reset die Abstürze der USB-Verbindung zum Drucker vollständig vermieden worden. Ich habe schon überlegt, ob ich nicht die ganzen Probleme mit einem hochwertigerem USB-Parallel-Kabel loswerden kann. Ich habe aber noch keines gefunden, bei dem ich mir sicher sein kann, dass es nicht baugleich mit meinem jetzigen ist. Nach Deiner Beschreibung ist der von mir gewünschte Zustand der "powered-off". Ich werde mich da schlau machen. Ich habe das Delock Hub bestellt. Kostet 7,80 Euronen inklusive Versand in der Bucht. Da soll das Druckerkabel und die Kamera dran. Denn die Kamera stört mich, wenn sie auch dann hell erleuchtet ist, obwohl ich sie nicht brauche. Und der Drucker besteht darauf, dass sein Hub vor dem Druck aus- und wieder eingeschalten wird. Werden bei Verwendung dieses Hubs die Geräte im Gerätemanager beim Ausschalten auch ohne Einschaltvorgang deaktiviert? Na ich werde es erfahren, wenn das Hub geliefert wird. Und zur Not habe ich meinen Workaround. Ich hoffe nicht gelangweilt zu haben. MadTax Edited March 5, 2012 by MadTax Quote Link to comment
MadTax Posted March 10, 2012 Share Posted March 10, 2012 Hi Erwin, meine letzten Ausführungen waren wohl zu lang . Jetzt konzentrierter: 1) Ich habe das empfohlene Delock Hub ausprobiert und mit dem ist das Powerport-Switching möglich. Allerdings muss ich meinen Workaraound einsetzen, damit Windows das Ausschalten sofort mitbekommt. 2) Ich habe nach Deiner Emfehlung auch den Standard runtergeladen (Stand 27. April 2000) und bin mir nicht ganz schlüssig, ob SetPortFeature(PORT_ENABLE) ClearPortFeature(PORT_POWER) funktioniert, um den von mir gewünschten Status "ohne Strom aber funktioniert", zu erreichen. Ich habe keine gegenteilige, explizite Auskunft gefunden. Aber der Disabled-Status wird "From any, but the Powered-Off ... on receipt of a ClearPortFeature(PORT_ENABLE) request" (11.5.1.4) eingestellt. Das könnte nur dann der Fall sein, wenn Powered-Off bereits zwingend mit Disabled verbunden ist. Muss ich ausprobieren. Im Standard habe ich zum ganged-switching folgendes gefunden: Ein Self-powered-Hub muss keinen Stromswitch haben. Ein Bus-powered-Hub muss einen Stromswitch haben. Bei "individual power switching" muss ein Hub den Strom beim einzelnen Port abschalten. Bei "ganged switching" muss das Hub den Strom dann (aber nicht nur dann) abschalten, wenn alle Ports im Status Powered-Off, also abgeschalten sind (11.11 Abs. 2). Die Abschaltungsbefehle erfolgen aber auch hier portweise. Ich habe alle meine "ganged switching"-Hubs durchprobiert. Keines schaltet den Strom ab, wenn auch der letzte Port Powered-Off wird. Allerdings nimmt keine meiner Switch in Anspruch, ein dem Standard entsprechendes Bus-powered-Hub zu sein. Gibt es hier andere Erfahrungen? Von daher glaube ich, dass Dein Tool nicht nur den Strom, sondern auch immer das Gerät selbst ausschaltet. Kannst Du das bitte prüfen? Nach meinem Verständnis muss das über einen ClearPortFeature(PORT_ENABLE) erfolgen. MadTax Quote Link to comment
erwin Posted March 11, 2012 Author Share Posted March 11, 2012 meine letzten Ausführungen waren wohl zu lang . schwer verdaulich Ich habe alle meine "ganged switching"-Hubs durchprobiert. Keines schaltet den Strom ab, wenn auch der letzte Port Powered-Off wird. Allerdings nimmt keine meiner Switch in Anspruch, ein dem Standard entsprechendes Bus-powered-Hub zu sein. Gibt es hier andere Erfahrungen? Ich hatte bisher nicht den Ehrgeiz meine anderen Hubs auf die Einhaltung des Standards zu prüfen. Gehe aber davon aus dass diese es tun. Was da genau im Standard gemeint ist habe ich nicht versucht zu begreifen, es hat mir gereicht dass bei besagtem Hub der Strom tatsächlich weg war. Von daher glaube ich, dass Dein Tool nicht nur den Strom, sondern auch immer das Gerät selbst ausschaltet. ??? Nach meinem Verständnis muss das über einen ClearPortFeature(PORT_ENABLE) erfolgen Nein Enable/Disable habe ich nicht geschaltet, nur die POWER. Wenn du der C-Sprache kundig sein solltest, oder zumindest den Code-Abstract zu bilden im Stande bist, empfehle ich dir den mitgelieferten Quelltext. erwin Quote Link to comment
MadTax Posted March 12, 2012 Share Posted March 12, 2012 Hi Erwin, ich habe das jetzt kapiert: Da Dein Tool in den PowerState Powered-off schaltet, gibt es den von mir gesuchten Zustand nicht, da immer nur ein PowerState vorliegen kann. Ich habe mit meinem vorletzten Beitrag versucht zu erklären, wie ich drauf gekommen bin, zwischen den beiden Datenleitungen und den beiden Stromleitungen in einem USB-Kabel zu unterscheiden. Es gibt Geräte, wie die von Dir erwähnte Steckdosenleiste (Ich habe mehrere von Gembird, die verhalten sich genauso wie Deine.), die nur Strom über USB beziehen. Aber keine Daten. Deshalb finde ich solche Geräte auch nicht im Gerätemanager. Auf der anderen Seite habe ich unter den Geräten ein paar Sensibelchen, die nur dann funktionieren, wenn sie gerade keinen Strom über die Stromleitungen, wohl aber Daten über die Datenleitungen erhalten. Dies geht natürlich nur, wenn die Geräte eine andere Stromquelle haben. Bei dieser ist auch die Ursache für das Verhalten zu suchen. Ein USB-Port eines Per-port-power-switching-Hub kann Strom und Daten getrennt schalten. Z.B. Powered-off---------->Strom aus----------->Daten aus, Disconnected------->Strom an------------->Daten aus (jedenfalls der Differential-Transmitter) oder Enabled------ -------->Strom an------------->Daten an. Beim Ganged-power-switching-Hub schaltet Dein Tool den Strom gerade nicht ab, das kann es nicht. Es schaltet nur die Datenleitungen aus, indem es den Port in den Portstate Powered-off versetzt. Die Folge ist, dass das angeschlossene Gerät nicht mehr funktioniert, aber noch Strom abbekommt. Das habe ich mit Gerät abschalten (=Kappen der Datenleitungen) gemeint. Es gibt im Standard nur keinen PortState mit Strom aus und Daten an. Ich bleibe daher bei meiner Bastlerlösung und präpariere Kabel. Ich habe versucht Dein Projekt mit Visual Express 2010 zu laden, habe es aber nicht geschafft. Ich bin nicht gut genug im Umgang mit VC und / oder C, um den Fehler zu finden. Es kommt die Meldung, dass etwas fehlen würde. Ich möchte Deine Arbeit bitte nicht kritisieren, das steht mir nicht zu. Und ich benutzte Dein Tool, also bin ich zufrieden. Noch eine kleine Sache: Der Port-Status wird nach Ausführen der UPS.exe ausgegeben. Die Abfrage der Stati geschieht aber zeitlich so knapp nach dem Schaltvorgang, dass Durchlauf-Zustände, wie z. B. Disconnected , noch ausgegeben werden. Dies ist dann hinderlich, wenn ein anderer Zustand danach noch erreicht wird. Vielleicht eine kurze Pause vor der Abfrage einbauen, damit der Port in den endgültigen Zustand kommen kann. MadTax Quote Link to comment
erwin Posted March 13, 2012 Author Share Posted March 13, 2012 Schöne Analyse von Dir. Ich habe versucht Dein Projekt mit Visual Express 2010 zu laden, habe es aber nicht geschafft. Ich bin nicht gut genug im Umgang mit VC und / oder C, um den Fehler zu finden. Es kommt die Meldung, dass etwas fehlen würde. Was genau? Ich möchte Deine Arbeit bitte nicht kritisieren, das steht mir nicht zu. Sachliche Kritik? Nur zu! Und ich benutzte Dein Tool, also bin ich zufrieden. Doch wohl nicht ganz? Noch eine kleine Sache: Der Port-Status wird nach Ausführen der UPS.exe ausgegeben. Die Abfrage der Stati geschieht aber zeitlich so knapp nach dem Schaltvorgang, dass Durchlauf-Zustände, wie z. B. Disconnected , noch ausgegeben werden. Dies ist dann hinderlich, wenn ein anderer Zustand danach noch erreicht wird. Vielleicht eine kurze Pause vor der Abfrage einbauen, damit der Port in den endgültigen Zustand kommen kann. Ich hatte mich erstmal gefreut, dass diese "Durchlaufzustände" auch zur Anzeige kommen. Nochmal UPS ohne Parameter aufgerufen und man sieht den Endzustand. Diese Doppelanfrage könnte man natürlich auch einprogrammieren, wenns denn was bringt. erwin Quote Link to comment
MadTax Posted March 14, 2012 Share Posted March 14, 2012 Hi Erwin, also ich bin schon zufrieden. Ich musss es halt erst verstehen. Und mir ist klar, dass Dein Focus auf "Strom-aus-Daten-egal" lag. Das liegt an der von Dir gesteuerten Steckdosenleiste, die nur prüft, ob an der Stromleitung Spannung anliegt. Ich habe Deine Dateien öffnen, aber kein Projekt laden können. Das liegt aber an mir. Ich habe ein Buch über Visual Express bestellt, das mir hoffentlich weiterhelfen wird. Bei meiner prüferischen Durchsicht der Dateien ist mir folgender Teil in der UPS.cpp aufgefallen: printf( "\nhub: #%d * vid: %0.4X pid: %0.4X * %s * device %03d\n", index, dev->descriptor.idVendor, dev->descriptor.idProduct, bus->dirname, dev->devnum ); switch ( ( ( ( char ) uhd.wHubCharacteristics ) & 0x0003 ) ) { case 0: { printf( " power switching capabilities: ganged switching.\n" ); break; } case 1: { printf( " power switching capabilities: individual power switching.\n"); break; } case 2: case 3: { printf( " power switching capabilities: not supported.\n"); break; } } } else { printf( "can't get hub descriptor\n" ); usb_close( uh ); continue; } hubs[ index ].dev = dev; hubs[ index ].nport = uhd.bNumberOfPorts; hub_port_status( uh, hubs[ index ].nport, index ); index++; usb_close( uh ); } } } return index; } case2: hängt meiner Meinung nach komisch rum. Und Dein Tool gibt nie etwas anderes als "ganged switching" oder "individual power switching" zurück. Keines meiner Hubs war ein "not supported", obwohl sich einige so verhalten haben. Wahrscheinlich in Ordnung, vermag ich nicht zu beurteilen. MadTax Quote Link to comment
erwin Posted March 15, 2012 Author Share Posted March 15, 2012 (edited) case 2: case 3: { printf( " power switching capabilities: not supported.\n"); break; } case2: hängt meiner Meinung nach komisch rum. Ist syntaktisch OK und gar nicht so selten gebrauchter C-Stil. Das ist ein Fall-Trough, d.h. tritt Fall 2 ein wird er von case 2: behandelt, wo hier im speziellen nichts passiert (also auch kein break, welches den switch beenden würde!) und "fällt" in den case 3: herein, wo es dann weitergeht. Aber du hast Recht: es sieht verdächtig nach einem Programmierfehler aus (wurde hier was vergessen?). Normalerweise kommmentiere ich solche Fälle in der Art: case 2: { // break; // no break! -> case 3: } case 3: { printf( " power switching capabilities: not supported.\n"); break; } Und Dein Tool gibt nie etwas anderes als "ganged switching" oder "individual power switching" zurück. Keines meiner Hubs war ein "not supported", obwohl sich einige so verhalten haben. Wahrscheinlich in Ordnung, vermag ich nicht zu beurteilen. Schau mal hier: http://www.mail-archive.com/linux-usb-users@lists.sourceforge.net/msg13470.html und Folgendes erwin Edited March 15, 2012 by erwin Quote Link to comment
MadTax Posted March 28, 2012 Share Posted March 28, 2012 Hi Erwin, ich habe mir die Sache mit der Bestimmung der Art des Hubs einmal angesehen. In Deinem Tool werden die ersten beiden Bits von wHubCharakteristics abgefragt. Danach wird über die von mir bereits im anderen Zusammenhang erwähnte Stelle Deines Tools wie folgt entschieden: 00 ----> Ganged Power switching 01 ----> Individual Port Power Switching 10 ----> Power Switching not supported 11 ----> Power Switching not supported Im Standard (11.23.2.1) steht beim zweiten Bit von wHubCharakteristics: "1X Reserved. Used only on 1.0 Compliant hubs that implement no power switching." Das bedeutet, dass alle USB 1.1 oder 2.0 Hubs an der zweiten Stelle immer eine Null haben. Ich verstehe die Aussage in dem von Dir angegebenen Link genauso. Der Standard (11.11 Absatz 6) legt ferner fest: "For a hub with no power switches, bPwrOn2PwrGood must be set to zero." Diese Variable wird von Deinem Tool zur Bestimung der Hubart nicht abgefragt. Ich vermute deshalb werden alle meine Switches als Ganged-Power-Switching angezeigt. Ich habe kein USB 1.0 Hub, um das zu verifizieren. Ist das viel Aufwand, die Abfrage von bPwrOn2PwrGood einzubauen? Damit könnte ein Hub softwareseitig auf Schaltbarkeit geprüft werden. Im Augenblick werden nur Hubs mit Individual-Power-Switching zuverlässig erkannt. Die Definition von bPwrOn2PwrGood steht ebenfalls in 11.23.2.1 des Standards. MadTax Quote Link to comment
erwin Posted March 30, 2012 Author Share Posted March 30, 2012 (edited) ups.zip erwin EDIT: 23.04.12 Hab das Teil wieder vom Download genommen. Ist bei Fehlanwendung doch ein ziemliches Risiko. Falls dennoch Interesse dann nur über PM. Edited April 23, 2012 by erwin Quote Link to comment
erwin Posted April 23, 2012 Author Share Posted April 23, 2012 @MadTax und andere! Ich hab den Download wieder zurückgezogen. Was war passiert? Hab im PC-off Zustand, aber bei installierten USB-(Hub)Filtertreibern die USB-Verkabelung neu arrangiert. Also umgesteckt. Jetzt geht USB-mäßig so gut wie gar nichts mehr. Auch nach Windows Neuinstallation!!! Es sind alle installierten OS betroffen!!! Ich empfehle eine saubere Deinstallation aller installierten USB-(Hub)Filtertreiber, also über das Tool. Quote Link to comment
Knickohr Posted June 13, 2012 Share Posted June 13, 2012 Hallo erwin. Danke für die UPS.exe Das sieht ja schon mal gar nicht schlecht aus : C:\>UPS.exe no hubs found. Usage: UPS [ { -h HUBNUM | -i VID.PID } -p PORTNUM -s { on | off } ] C:\>UPS.exe hub: #0 * vid: 1A40 pid: 0201 * bus-0 * device 001 power switching capabilities : ganged switching. power on till power good [ms]: 100 number of ports : 7 max current [mA] : 100 port status: hub #0 port 1: power on, disabled, port 2: power on, disabled, port 3: power on, disabled, port 4: power on, disabled, port 5: power on, disabled, port 6: power on, highspeed, enabled, connected, port 7: power on, lowspeed, enabled, connected, Usage: UPS [ { -h HUBNUM | -i VID.PID } -p PORTNUM -s { on | off } ] C:\>UPS.exe -h 0 -p 6 -s off hub: #0 * vid: 1A40 pid: 0201 * bus-0 * device 001 power switching capabilities : ganged switching. power on till power good [ms]: 100 number of ports : 7 max current [mA] : 100 port status: hub #0 port 1: power on, disabled, port 2: power on, disabled, port 3: power on, disabled, port 4: power on, disabled, port 5: power on, disabled, port 6: power on, highspeed, enabled, connected, port 7: power on, lowspeed, enabled, connected, HUB #0 CLEAR FEATURE USB_PORT_FEAT_POWER, PORT 6 port status: hub #0 port 1: power on, disabled, port 2: power on, disabled, port 3: power on, disabled, port 4: power on, disabled, port 5: power on, disabled, port 6: power off, disabled, port 7: power on, lowspeed, enabled, connected, C:\>UPS.exe -h 0 -p 6 -s on hub: #0 * vid: 1A40 pid: 0201 * bus-0 * device 001 power switching capabilities : ganged switching. power on till power good [ms]: 100 number of ports : 7 max current [mA] : 100 port status: hub #0 port 1: power on, disabled, port 2: power on, disabled, port 3: power on, disabled, port 4: power on, disabled, port 5: power on, disabled, port 6: power off, disabled, port 7: power on, lowspeed, enabled, connected, HUB #0 SET FEATURE USB_PORT_FEAT_POWER, PORT 6 port status: hub #0 port 1: power on, disabled, port 2: power on, disabled, port 3: power on, disabled, port 4: power on, disabled, port 5: power on, disabled, port 6: power on, disabled, connected, port 7: power on, lowspeed, enabled, connected, C:\>UPS.exe hub: #0 * vid: 1A40 pid: 0201 * bus-0 * device 001 power switching capabilities : ganged switching. power on till power good [ms]: 100 number of ports : 7 max current [mA] : 100 port status: hub #0 port 1: power on, disabled, port 2: power on, disabled, port 3: power on, disabled, port 4: power on, disabled, port 5: power on, disabled, port 6: power on, highspeed, enabled, connected, port 7: power on, lowspeed, enabled, connected, Usage: UPS [ { -h HUBNUM | -i VID.PID } -p PORTNUM -s { on | off } ] C:\> Es scheint prinzipiell zu funktionieren. Zumindest wird die Kamera getrennt und erscheint auch nicht mehr im Device-Manager. Ob sie allerdings wirklich aus geschaltet ist, bezweifle ich, da mein jetziger HUB nur "ganged switching" kann. Aber kein Problem, der DELOCK kommt ja die nächsten Tage. Zuerst hatte ich ein paar Probleme, den HUB für UPS.exe sichtbar zu bekommen. Erst ein deaktivieren des HUBs mit anschließender "Neusuche im Device-Manager" brachte das Gerät zum Vorschein. Der Filter ließ sich komischerweise schon vorher setzen. Allerdings mußte er nach der Neusuche erneut gesetzt werden Was mir noch auffällt, das mein HUB anscheinend nur 100mA pro Port liefern kann, obwohl er "self powered" ist. Vielleicht liegt ja da sogar das Problem, das sich meine Kamera hin und wieder unaufgefordert abmeldet. Aber egal, es kommt ja der neue HUB dran. Danke nochmal, Thomas Quote Link to comment
xayide Posted April 22, 2016 Share Posted April 22, 2016 Anyone got this ups.zip to send to me? PM link or maybe use sendit? Quote Link to comment
xayide Posted April 24, 2016 Share Posted April 24, 2016 Anyone got this to work in Win7 x64? It doesn't find the hubs. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.