JMS578搭載HDDケースで遊ぶ

 先日記載したVL701搭載基盤が売られていたのと同じ店で、3.5inch HDDケースらしきものも売られていたので買ってみました。こちらもジャンク扱いで150円也(付属品一切無し)。
wave.hatenablog.com

 USB3.0 type-B端子と電源コネクタが見えるものの、あまりの安さにモックアップなのか実際にI/F基板が載っているのかよくわからない状態でしたが、帰宅後に確認すると、ばっちりUSB-SATA変換基盤も付いてました。
f:id:kachine:20181211193838j:plain
 

H/W特定

 同じものがコンテナいっぱいに放出されていたのですが、中には型番らしきシールが貼られていた個体もあったので、それを選択しました。
f:id:kachine:20181212052059j:plain
 

 ELSONIC EF-BHDD2TBU3と書かれており、どうやらノジマのPB商品ELSONICシリーズの外付けHDDのケースのようです。2TBで6980円とそこそこ安いですが、そのHDDが抜き取られたケースがジャンクとして放出されたようです。
ノジマオンライン : ELSONIC EFBHDD2TBU3 外付けHDD 2TB USB3.0
 

 この基板を観察してみるとJMS578と刻印されたコントローラを搭載していることが判ります。
f:id:kachine:20181211193916j:plain
 

 JMS578はJMicronのUSB 3.1 Gen1 to SATA 6Gb/s Bridge Controllerのようです。先日入手したVLIのVL701はSATA 3Gbpsまででしたが、こちらは6Gbps対応の現行製品のようです。
USB 3.1 Gen1 to SATA 6Gb/s Bridge Controller (PDF)
 

動作確認

 手持ちのHDDと12V 1.5A センタープラス極性のACアダプタ*1を取り付けてPCに接続したところ、今回もまたあっけなく認識されました。

 ただし、安全な取り外しのメニューに表示されている名称が"MARSHAL SHELTER EXTERNAL HDD"となっています。ELSONICなんたらと表示されるのかと思ったのですが。
f:id:kachine:20181212072932p:plain
 また、デバイスマネージャでは"MARSHAL SHELTER EXTERNAL SCSI Disk Device"として認識されており、以下のような感じになっています。
f:id:kachine:20181212073838p:plain
 ちなみに、MARSHALはこのHDDケースを購入した店のブランド*2です。元々MARSHALがELSONICに供給したOEM商品なのか、市場から集めたELSONICブランド品をMARSHALブランドに焼き直したものの商品化せずジャンク扱いで処分したのか、そこら辺の事情は解りません。
 

F/W改変

 前述のような状況から、ファームウェアを書き換えて遊ぶことが出来るのではないかと思い立ちました。
 JMS578 firmware等で検索すると、(JMicron公式ではない)海外サイトがいくつかヒットします。
 station-drivers.comというサイトから、jmicron_jms578_124.01.00.02(www.station-drivers.com).zipをダウンロードするとファームウェア更新ツールとファームウェアが含まれています。
 なお、公式以外からのバイナリダウンロードはセキュリティ面での不安がありますが、ノートン先生は安全なサイトだと言っています。
https://safeweb.norton.com/report/show_mobile?name=station-drivers.com
 ダウンロードしたZIPに含まれるファームウェア更新ツール(FwUpdateTool_v1_19_16_24.exe)を、(最新の定義ファイルに更新したうえで)ウイルスチェックにかけてもマルウェアやウイルス感染していないようでしたので、実験機で実行してみたところ普通に動作しました。

F/W更新ツール初期画面

FwUpdateTool_v1_19_16_24.exe 初期画面
FwUpdateTool_v1_19_16_24.exe 初期画面
 "JMS2033x FW Update Utility v1.19"とタイトルバーに表示されていたり、Chipが"JMS577/9 Series"と表示されていたりと、JMS578でこのツール本当に使えるんかなと不安になります。

RD Version有効化

FwUpdateTool_v1_19_16_24.exe RD versionチェックボックスをマーク
FwUpdateTool_v1_19_16_24.exe RD versionチェックボックスをマーク
 左下の"RD Version"というチェックボックスを有効化すると、現在のファームウェアのバックアップができそうなメニューが現れます。
 RDというのはR&D(research and development; 研究開発)の意味でしょうかね?或いはReaDとかRead and Dumpとか???

ファームウェアのバックアップ取得

FwUpdateTool_v1_19_16_24.exe ファームウェアのバックアップ成功画面
FwUpdateTool_v1_19_16_24.exe ファームウェアのバックアップ成功画面
 "include JMS577 NVRAM"というチェックボックスはデフォルトで有効だったのでそのまま*3にして、"Backup Old Firmware Only"にチェックを入れて、"Backup FileName"を指定した後、[Run]を押すとファームウェアのバックアップが実行できるようです。
 正常にバックアップできると上記スクリーンショットのように、"Status"欄に"Read flash and backup success!"と表示されます。

ファームウェアの書き込み

FwUpdateTool_v1_19_16_24.exe ファームウェアの書き込み成功画面
FwUpdateTool_v1_19_16_24.exe ファームウェアの書き込み成功画面
 "RD Version"にチェックを入れずに[Load File]ボタンを押して、ZIPファイルに同梱のファームウェア(JMS578_PPE_v124.01.00.02.bin)を指定します。そして、[Run]を押すとファームウェアが書き込みされるようです。
 正常に書き込みが完了すると上記スクリーンショットのように、"Status"欄に"Programming Success!!"と表示されると共に、以下のダイアログが表示されます。
電源再投入を要求するダイアログ
電源再投入を要求するダイアログ
 電源を切ってまた電源を入れてくださいと指示されているので、ハードウェアの安全な取り外しメニューから当該HDDを取り外したうえで、HDDケースの電源を切り再投入します。

JMS578_PPE_v124.01.00.02.bin書き込み後

JMS578_PPE_v124.01.00.02.bin書き込み後のFwUpdateTool_v1_19_16_24.exe初期画面
JMS578_PPE_v124.01.00.02.bin書き込み後のFwUpdateTool_v1_19_16_24.exe初期画面
 "UASP DISK"欄に表示されている名称と、"Firmware Ver."欄の値が変わっていることが確認できます。

項目 書き換え前 書き換え後
UASP DISK MARSHAL SHELTER EXTERNAL JMicron Generic
Firmware Ver. 00.05.00.05 124.01.00.02

 なんだかF/Wが物凄い新しくなったように見えますが、たぶんそうではないと思われます。F/Wファイル名中に"PPE"という文字がありますが、恐らく"Pre Product Edition"とかそんな感じの意味ではないかと想像され、JMicronが顧客向け(外付けHDD製造業者や外付けHDDケース製造業者)に対して提供しているデフォルトのF/Wなのではないかと。製造業者は自社製品向けにカスタマイズしたファームウェアを搭載して、エンドユーザ向けに出荷されるとかそんな流れになっているのが一般的なはずです。
 前掲のPDF(JMicron/JMS578 product brief)によれば、"Provides software utilities for downloading the upgraded firmware code under USB 2.0/USB 3.0"と書いてありますので、このツールセットがそれなのでしょう。また、"Supports external SPI NVRAM for Vendor VID/PID of USB 2.0/USB 3.0 device controller"とか"Supports ten GPIOs for customization"とも書いてあります。VendorID/ProductIDが書き換え可能なのはもちろん、10系統のGPIOが使えるとあるのでステータスLEDを付けるとか温度センサを付けるとかいったH/Wの拡張に応じてファームウェアのカスタマイズを行うことができるのだと考えられます。
 ということは、同じJMS578を搭載したHDDケースでも、VendorID/ProductIDの違いだけならどうでも良さそうですが、H/Wレベルでの拡張が異なるモデルのFirmwareを書き込むと、最悪壊れる可能性が有ることになります(ある機器ではそのGPIOピンは入力のつもりだが、他の機器では出力用に使っており、意図しない電圧が加わったため壊れるとか、そんな感じ)。
 ですので、他機種のF/Wを書き込むのは絶対に止めましょう。JMS578_PPE_v124.01.00.02.binなら大丈夫なのかも判りませんので、常用するのは止めましょう。というわけで、私は事前にバックアップしておいたF/Wに戻しました。

F/W比較

 JMS578_PPE_v124.01.00.02.binと、バックアップしておいたMARSHAL版F/Wのバイナリdiffをとると、大量に差分が出てきます。が、両者のファイルサイズはいずれも50,688byteで完全一致しています。ファームウェアのコードの差異は詳細仕様が判らない以上解析しようが無いのですが、HDDの表示名を指定しているであろう箇所は特定できました。

各F/Wの比較
各F/Wの比較
 整理すると、ファームウェア中の以下のアドレスの用途はこんな感じになっているようです。

0xC40E ~ 少なくとも0xC429
製品名的な文字列
0xC432 ~ 少なくとも0xC44D
安全な取り外しに現れる名前
0xC4C8 ~ 少なくとも0xC4DF
バイスマネージャで見えるデバイス名から末尾のSCSI Disk Deviceを除外した文字列
F/W改変

 バイナリエディタで上記アドレスを書き換えて、PC-98全盛期に存在した緑電子のHDDっぽいものをつくってみます。
※J-PlatPatで検索した限りでは緑電子の商標は現在誰も取得していないようなので、遊びに使っても怒られないはずですが、ミドリ安全グループのミドリ電子という別の会社が存在します。こちらの会社の英語表記はMIDORI ELECTRONICのようですのでこの表記は避け、ここではMidori Denshi表記を使うことにします。
 今回は以下のような文字列に書き換え、ファームウェアを書き込むと狙い通りになりました。

0xC40E ~
Midori Denshi
0xC432 ~
Midori Denshi USB External HDD
0xC4C8 ~
Midori Denshi SASI or

Midori Denshi External USB HDDの取り外し
Midori Denshi External USB HDDの取り外し
Midori Denshi SASI or SCSI Disk Device
Midori Denshi SASI or SCSI Disk Device
 

 JMS578搭載HDDケースなら同様に改造できるはずですが、実用面でのメリットは全くありませんし、間違えるとH/Wを壊す可能性もありますし、厳密にはソフトウェアライセンスの観点からもどうなのかと考えると、F/W周りの作業はお勧めしません。
 



以上。

*1:Seagate Expansion HDDの付属品

*2:個人的には安価な再生HDDを取り扱ってる店として認識していますが、このブランドの新品は再生品なのか本質的に新品なのか判りにくいのでHDD自体は購入したことはありません。

*3:JMS578のNVRAMの事を指しているのだったら含めてもらって問題無いので。