30-Apr-2011で触れたELECOMの節電USB HUB、動作中のログを某所で採ることができたので、日記を書きながら解析してみましょう。
人間が行った操作は、GreenHubアプリケーションを使用し、port1→2→3→4の順番で電源をoffにしてその後port1→2→3→4の順番で電源をonにするものだったはずです(うろ覚え)。
SETUPパケットはどれも同じで、bmRequestType=0x21(Host→Device, Class, Interface), bRequest=0x09(SET_REPORT), wValue=0x0203(Report Type=Output, Report ID=0x03), wIndex=0x0000, wLength=0x0008となっています。SET_REPORTリクエストで好き勝手な内容を送るという、HIDデバイスにありがちな手段です。
電源の入/切は、SET_REPORTリクエストを使って0x03, 0x5d, 0x00, 0xXX, 0xYY, 0x00, 0x00を投げているようです。0xXXはポート番号(0x05, 0x02, 0x03, 0x04がport1〜4に対応します)、0xYYがon/off(0x01=on, 0x00=off)のように見えます。
電源のon/offを行った後に、0x03, 0x5d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00を投げている点が気になります。このリクエストの後にinterrupt in pipeからステータスを受け取っていますので、ステータスの送信要求という解釈になるのでしょうか。…これ、省略したらどうなるんでしょうね?interrupt pipeからの受信をGET_REPORTリクエストで代用できれば、デバイスリクエストだけ送れば良くなるのでコードを書く側は楽ができるのですが。
受信したステータスは、0x03, 0x5d, 0xZZ, 0x00, 0x75, 0x00, 0x00, 0x00…0xZZが各ポートの電源状態になるでしょうか。
とりあえず、ここまで分かればあとは実際にデバイスをつつく方が早そうです。気が向いたらやるかもしれませんし、面倒に感じて放り投げたままになるかも。
16-May-2011: 朝昼:いつもの。夕:とりいちの弁当。
17-May-2011: 朝昼:いつもの。夕:肉野菜うどん。
18-May-2011: 朝昼:いつもの。夕:白飯、茹で野菜、惣菜屋のサラダ、
19-May-2011: 朝昼:いつもの。夕:白飯、水餃子、茹で野菜。59.9kg(22:40)