Wake on USB mit Arduino

Hi Ich möchte mir einen Keyboardemulator aus einem Arduino Nano bauen. Er soll Signale einer IR-Fernbedienung in emulierte Tastendrücke umsetzen. Weiss jemand, ob man damit auch einen Tastaturcode (per Keyboard.write(key) ) für die Aufweck-Taste (die es an einigen Tastaturen gibt) senden kann und somit den Rechner per IR-Fernbedienung aufwecken kann? Die restlichen Bedingungen sind natürlich erfüllt, also Wake on USB und funktionierender Schlafmodus etc.

Also bevor ich mit dem Projekt anfange würde ich gerne wissen ob das mit dem Wake On USB bei jemanden funktioniert oder ob ihr da Gegenteiliges wisst. Will später damit ein Mediacenter unter Linux steuern (OpenElec XBMC).

Gruß Jarny

Ich möchte mir einen Keyboardemulator aus einem Arduino Nano bauen.

Das geht mit dem Nano (USB über FTDI) nicht bzw. nur mit erheblichem zusätzlichem Hardware-Aufwand. Ich würde Dir eher einen Arduino Micro empfehlen, dort ist ein ATmega32U4 wie beim Leonardo verbaut, welcher die USB-Kommunikation direkt im Hauptprozessor erledigen kann.

Weiss jemand, ob man damit auch einen Tastaturcode (per Keyboard.write(key) ) für die Aufweck-Taste (die es an einigen Tastaturen gibt) senden kann und somit den Rechner per IR-Fernbedienung aufwecken kann?

Die meisten Wake-on-USB-Funktionen reagieren auf jede Taste, die an der Tastatur gedrückt wird, es braucht also keine spezielle Taste. Hast Du das bei Dir schon mal getestet?

Danke für den Hinweis mit dem Arduino Micro. Werde mir dann auch mal so einen besorgen. Habe im Moment nur ein Uno, mehrere Nanos und einen Mini+USB-Breakout.

Die meisten Wake-on-USB-Funktionen reagieren auf jede Taste, die an der Tastatur gedrückt wird, es braucht also keine spezielle Taste. Hast Du das bei Dir schon mal getestet?

Ich habe es noch nicht getestet weil ich vorher auf positive Rückmeldung warten will. Gibt es hier jemand der sowas schonmal aufgebaut hat oder es irgendwie verifizieren kann, dass ein Wakeup funktionieren könnte? Ohne funktionierendes Wakeup on USB würde ich das Projekt gar nicht anfangen weil es dann keinen Sinn macht.

Gruß Jarny

PS: Andererseits fällt mir gerade ein, dass ich immernoch die Möglichkeit hätte mit dem Arduino den Powerbutton des Motherboards zu brücken um ein manuelles Einschalten zu simulieren. Das würde ich im Notfall in Erwägung ziehen.

Die restlichen Bedingungen sind natürlich erfüllt, also Wake on USB und funktionierender Schlafmodus etc.

Wenn Wake-on-LAN bei Dir funktioniert (wie Du ja angibst), wie hast Du das dann getestet? Je nach BIOS ist das anders umgesetzt und somit stark von Deiner Hardware (welche Du noch nicht verraten hast) abhängig, viel weniger von der Software auf dem Arduino.

Gibt es hier jemand der sowas schonmal aufgebaut hat oder es irgendwie verifizieren kann, dass ein Wakeup funktionieren könnte?

Ja, es kann funktionieren, aber nur weil es bei mir funktioniert, heisst das noch lange nicht, dass es mit dem gleichen Setup bei Dir auch tut. Ich sende einfach irgend einen Tastencode und der Rechner erwacht. Es wäre als das Einfachste, Du würdest das bei Dir mal mit einer normalen Tastatur testen, dann weisst Du auch, ob es mit dem Arduino funktionieren wird.

Wenn Wake-on-LAN bei Dir funktioniert (wie Du ja angibst), wie hast Du das dann getestet? Je nach BIOS ist das anders umgesetzt und somit stark von Deiner Hardware (welche Du noch nicht verraten hast) abhängig, viel weniger von der Software auf dem Arduino.

Ich hatte an dem XBMC Rechner eine Medion Funkfernbedienung (433Mhz) mit passenden USB Empfänger. Leider funktioniert diese Fernbedienung nicht mehr, so dass ich auf IR-Fernbedienung umsteigen will. Die alte Medion Fernbedienung konnte den Rechner aufwecken und schlafen legen, Wake on USB funktioniert also grundsätzlich mit dem Board. Inwieweit das alles mit ner Tastatur funktioniert kann ich mangels vernünftiger USB Tastatur nicht sagen. Mein Motherboard ist ein Ion Atom330 von PointOfView. Der USB-Empfänger war an einen interne USB-Pfostenleiste angeschlossen.

Ja, es kann funktionieren, aber nur weil es bei mir funktioniert, heisst das noch lange nicht, dass es mit dem gleichen Setup bei Dir auch tut. Ich sende einfach irgend einen Tastencode und der Rechner erwacht. Es wäre als das Einfachste, Du würdest das bei Dir mal mit einer normalen Tastatur testen, dann weisst Du auch, ob es mit dem Arduino funktionieren wird.

Ich weiss halt nicht, wie Wake on USB funktioniert, bei meiner alten Fernbedienung ist der Rechner nur aufgewacht wenn man auf die Powertaste der Fernbedienung gedrückt hat. Es passiert da also irgendwas besonderes was bei den anderen Tasten nicht passiert.

Gruß Jarny

Falls Deine Geräte die offizielen Wake-up-Features von HID benützen, dann solltest Du das hier verlinkte ZIP-File herunterladen und in Deinem IDE-Verzeichnis entpacken:

http://forum.arduino.cc/index.php?topic=150157.msg1297589#msg1297589

Damit meldet sich der Micro/Leonardo dann als USB-Gerät an, das den Wake-up unterstützt. Du musst das Feature dann auf Deinem Rechner freigeben (ich nehme an, das ist im BIOS drin) und mit dem dort geposteten Cal kannst Du dann Deinen Rechner wecken.

Ok, Danke. Interessanter Thread den du verlinkt hast. Wenn mein Arduino Micro angekommen ist werde ich es mal ausprobieren.

Danke und Gruß Jarny

Mein Arduino Pro Micro ist gestern angekommen. Weiss jemand, ob man den unter der Arduino IDE 1.5.4 programmieren kann?
Habe mir das ProMicro-Addon runtergeladen aus dem Link von dieser Seite http://oceancontrols.com.au/SFA-105.html.
Ich habe dem Readme gefolgt (Das Zip in einem ‘hardware’ Unterordner entpacken im Sketchbook-Home, aber leider wird das Board immer noch nicht in der IDE gelistet.

Will mir nicht irgendwas zerschießen beim Versuch ihn zu programmieren, deshalb frag ich lieber mal vorher was das sein könnte.

Gruß
Jarny

Weiss jemand, ob man den unter der Arduino IDE 1.5.4 programmieren kann?

Kann man, aber Du solltest die stabile Version 1.0.5 verwenden, die 1.5.x Versionen sind als Beta gekennzeichnet und nur für den Due und den Yun gedacht.

Habe mir das ProMicro-Addon runtergeladen aus dem Link von dieser Seite http://oceancontrols.com.au/SFA-105.html.

Wenn du eine 5V-Version hast, brauchst Du das nicht und kannst einfach als Board den Leonardo auswählen.

Ich habe dem Readme gefolgt (Das Zip in einem ‘hardware’ Unterordner entpacken im Sketchbook-Home, aber leider wird das Board immer noch nicht in der IDE gelistet.

Wo genau hast Du das denn hin entpackt? Du solltest uns auch Dein Betriebssystem bekanntgeben, denn die Pfade varieren da. Bei Linux wäre der Pfad ~/sketchbok/hardware/ProMicro, wobei das ProMicro ja bereits im Zip enthalten ist.

Ok, bevor das hier zum Doppelposting meinerseits wird würde ich gerne in diesem Thread http://forum.arduino.cc/index.php?topic=210428.0 weitermachen. Dort wird über das gleiche Thema diskutiert und ich habe dort auch gepostet.

Ich arbeite übrigens unter WindowsXP mit der Arduino IDE 1.5.4

Gruß Jarny

Wollte nochmal Rückmeldung geben. Nachdem ich den Arduino Pro Micro nun programmieren kann (Siehe anderen Thread) habe ich das mit dem Wakeup on USB mal ausprobiert. Ich habe die 3 Dateien USBCore.cpp, USBCore.h, USBAPI.h ausgetauscht und ein kleines Testprogramm geschrieben. Funktioniert alles so wie es soll. Der Rechner wacht auf wenn man die Methode USBDevice.wakeupHost() aufruft. Perfekt :)

Gruß Jarny

Danke für die Erfolgsmeldung, ist leider hier im Forum (noch) nicht selbstverständlich, aber so können Benutzer mit dem gleichen oder ähnlichen Problem sofort profitieren.

Muss mich nochmal zurückmelden. Es klappt doch nicht zuverlässig mit dem Aufwecken. Ich weiss nicht woran es liegt. Habe es auch mal mit den Zeilen aus dem verlinkten Thread probiert:

USBDevice.wakeupHost();
UDCON |= (1 << RMWKUP);

… aber es klappte auch nicht zu 100%
Habe mir dann auch extra die neuste Version aus dem Git gezogen um zu schauen ob es das Problem löst aber leider nein. Mit meiner alten Fernbedienung+USBEmpfänger hat er das Board zu 100% aus dem Sleep aufgeweckt. Mit dem Arduino geht es so in ca. 60% der Fälle schätzungsweise.
Das ist natürlich nicht zufriedenstellend und ich werde das so nicht nutzen können. Schade! :~

Gruß
Jarny

Hast Du mal versucht, den Code mehrfach zu schicken? Ich könnte mir vorstellen, dass das exakt der Weg ist, den auch Deine Fernbedienung verwendet.