CG-FPSU2BDのSX-2000U2化

今朝、気が付くと7時半だった...
遅れて出社しようかと思ったが、特に本日は他に影響する仕事も入っていなかったことも有り、急遽お休みさせて頂いた。(突然でも有休使えるのはありがたい限り)
日頃の疲れも有ったのか、うとうと寝ていると結局起きて来たのは夜の八時過ぎ(ぇ?
 
もぞもぞと起き出して昨日やりかけていたUSBプリントサーバーのファームウェア更新に取り掛かる。
 
先日プリンターと同時に購入した、CoregaのCG-FPSU2BDだが、中身がSilexのOEMで有る事は以前書いたとおり、両社の製品の紹介ページ等を見比べていると、SilexのSX-2000Uと言う製品のOEMに見受けられる。Coregaでは"プリントサーバー"となっているが、Silexでは"USBデバイスサーバー"と言う製品になっている様子。 何が違うかと言うと、USBデバイスサーバーの場合プリンタに限定されずに色々なUSBデバイスをネットワーク越しに共有できると言うことだ。
 
Coregaの製品紹介ページからリンクされている、日経BPに書かれている記事でも、
「おすすめの活用方法は、USBハブを使ってプリンターや、スキャナー、デジカメ、USBハードディスクなどいろいろなものを接続すること。ネットワークに接続するだけで、一度にいろいろなUSB機器が利用できるようになる。これはノートPCでは特に便利に感じるだろう。ただし、以上のことはメーカーのサポート対象外となるので個人の責任で行っていただきたい。 」
と記事に書かれており、中身はプリントサーバーではなく、USBデバイスサーバーで有る事を裏付けている。
 
と言う訳で、入手の容易性(Silex製品はなかなか店頭に置いていない)と価格の安さ(大差ないが)からCoregaの製品を購入した。(USB1.1版が、数千円安く売られているのだが、プリンター以外のストレージ等の共有も視野に入れて価格の高いUSB2.0対応製品を選択した)
早速、プリンターでの動作確認をして、USBメモリーやBlueToothアダプタ・Felicaリーダー等を接続してみるが、まったく持って認識しない! 製品の不良なのかCoregaの製品だからなのか?原因は不明
 
Coregaに問い合わせようにも、いくらリンク先の製品紹介で書かれていても、サポートしていない機能なので無視される可能性は高いので悩んでいた(でも製品の制限が掛かっていたらクレームものかと)
対してOEM元のSilexのページを見ていると、SX-2000Uのファームウェアが12/6付けで更新されている!もし製品がOEMされる際に制限を掛けられているならOEM元のファームウェアに入れ替えることが出来たら動く可能性があるかもしれない(ハード的に細工をしている可能性は製造コスト面から低いと思われる)試してみようと思ったが、ファームウェアは製品登録をしたユーザーのみ、試すこともできないみたいです。
 
再度Silexの製品を購入しなおすと1万6千円も掛かっちゃう。ちょっと痛すぎるなぁ...
 
以下は、寝ぼけた頭の中での夢の中の架空の出来事です。(真に受けないように)
 
**********
 
なんとかして、入手したSilexのアップデートユーティリティーとファームウェアデータ、これを使えばアップデートできるはず!早速実行してみると、専用のパケットドライバーがOSにインストールされた。どうやらTCP/IPだけで通信するわけでは無い様だ。続いてデバイスサーバーの検索に入り、しっかりとOEM製品であるCG-FPSU2BDも検出されるが、「更新できるファームウェアがありません」と次に進んでくれない。さて、困った...
 
「ソフトウェアの逆アセンブル」は禁止されているが、パケットのキャプチャまでは禁止されてないみたいだし、ちょっと覗いてみよう(イイノカ?
 
どうやら、Type0x8813のEthernetIIフレームを更新プログラムが送出し、デバイスサーバーがこれに対して応答を返す事で、製品の検出を行っているようだ。
返答しているパケットを解析すると、
 DestinationMAC(6byte)+SourceMAC(6byte)+Type[0x8813](2byte)
のEthenetヘッダーに76byteのデータが付いていて中身は
  不明(4byte)+MAC Address(6byte)+製品名(32byte)+ファームウェア内容(32byte)+不明(2byte)
の様に感じる。
 
この返答パケットだけで製品を判別して、対象の製品の更新手順が実施されるのであれば、ここを通り抜ければ、ファームの更新は可能かもしれない、流石に更新の手順までOEM先毎に変更して居る事は少ないと思われし、更新プログラムは多品種を一括サポートしている様子なので、単なるファームウェアの更新プログラムで、何度も製品チェックを行ったり、MACアドレス等まで使って製品を判定している可能性は低いかと考えられないだろうか?
 
と言う訳で実験開始!
(色々とパターンを変えて実施したのだが、面倒なので結果だけ)
 
MACアドレスはもちろん対象になる製品、そして先頭の不明部分の4byteの後半2byteを06H 5AHに書き換える。製品名も書き換える。ファームウェアバージョンも製品名部分を書き換える、さらにバージョン部分は1.00から1.0.0に書き換える。
 
パケットジェネレーターで、このような製品が応答するパケットを作成する。
 
このパケットを、10ms間隔で送出するように設定し、更新プログラムを動かす。検出が始まったらすかさず、作ったパケットを送出させる。(面倒なので繋いでおいたが、本来は、この時点でCG-FPSU2BDは外して置いたほうが良いかも知れない)
 
そうすると、更新プログラムで 製品名がSX-2000U2 ファームウェアバージョンが SX-2000U2 1.0.0として認識され、ファームウェアの更新が可能になる。
 
この時点でパケットジェネレーターは終了させて、更新を続行する。
 
そうすると、あら不思議、そのままCG-FPSU2BDへファームウェアの更新に行ってくれました。EEPROMの更新チェックも無事終了
 
早速 ブラウザから製品を見てみると、製品ロゴ等も変わっておりSilexの製品に化けてしまった(苦笑
システム情報をよく見ると、ファームウェアバージョンやメーカー名(URL)は更新されているが、MACアドレスは当然そのままでベンダーコードが00:0A:79でCoregaで有る事を示しているのが笑える。
 
そして、色々なデバイスを繋いで見ると、今度は上手く認識したようだ...
やはり、ファームウェアで制限が掛けられていたのだろうか?
早速USBハブを買いに行かなくては...
 
**********
 
うみゃ?良い夢見たなぁー こんな事が、起これば良いですよねぇ~
ファーム更新プログラムは正規のユーザーに実行してもらえば、後は単に横から飛んできたパケットによる誤動作と更新実施のオペレーションミスで、誤って他社製品のファームウェアが書き換わっちゃっう事故でしょうから問題無い気もしますし。

20051207sx2000u2-1.jpg 20051207sx2000u2-2.jpg