Wii U ファームウェアダンプ: 計画


#不揮発メモリ 不揮発メモリとは何のこっちゃというと, 簡単に言えば, 電源を切ってもデータを保持できるメモリである. Wii Uには3つの不揮発メモリがある.

##eMMC eMMC_は_embedded MMC, すなわち組み込みMMCである. 最近はめっぽうMMCは見ないが, SDカードと互換性のあるカードと思ってだいたい間違いない. eMMCはWii Uのデータを格納しているらしい. ベーシックパックとプレミアムパックで違うのはここらしい.

##NANDフラッシュチップ eMMCも内部にはNANDフラッシュチップがあるのだが, MMCのコントローラが間に入る. 一方で, このフラッシュチップはそのまま裸のものだ. 形状は, デファクトなTSOP 48ピン. 2Gb (バイトじゃなくてビットだよ!) の2バンク構成となっており, RBとCEという端子を接続し直すことにより, バンク切り替えができる. それぞれのバンクにはvWiiとWii Uのファームウェア (以下Cafe OS)が格納されている. 想像すると, NANDフラッシュチップを搭載するWiiの資産を継承するため, ファームウェアをこれに搭載したのだろう. なお, 当然バンク切り替えなので, 両方に同時にアクセスすることはできない. これはセキュリティ, 及び安定性の向上に一役買ってるのではないだろうか.

##EEPROM 正体不明の謎チップ. PCのマザーボードではBIOSやEFIファームウェアを格納するのに使われる.

#ダンプ 今回はFT2232Hを使うことにした. FT2232Hは, 様々な入力をUSB経由でPCと接続することができる万能チップである. 日本では, Strawberry Linuxがこれを実装したボードを販売している.

https://strawberry-linux.com/catalog/items?code=50028

見ればわかるが, EEPROMが搭載されている. EEPROMのダンプは言うまでもなく行える.

NANDフラッシュチップは, 有志作成のソフトを使う.

https://github.com/bkerler/NANDReader_FTDI

理論上, SPIを利用できるFT2232HでeMMCもダンプできるのだが, 無難にカードリーダーを使う.

##eMMC わざわざeMMCを引っぺがしてピンアウトを調べた人がいるので, ありがたくそれを使わせてもらう. WiiUBrewにはEuss氏が投稿している.

eMMC

あとは, これをカードリーダーの対応するピンと接続してあげれば良い. ただし, カードリーダーに直はんだづけするのは経済的に良くないので, 大抵はmicro SDやmini SDの変換器に接続して, カードリーダーは使いまわせるようにするのが一般的である. なお, こうちゃんさんはUSB mini-Bの端子を利用して, micro SDの変換器を着脱可能にしている. つまり, 次のように配線している.

eMMC->USB mini-Bの端子->micro SD変換器->カードリーダー

なお, 端子を借りるだけなので, うっかりUSBデバイスとして接続しないこと. 今回も, こうちゃんさんに同じように配線してもらおうと思う.

あとは, 普通にSDカードとして読む. ただし, 未知のファイルシステムを利用しているため, UNIX系OSではDDコマンド, WindowsではWin32 Disk Imager等を使用してダンプしよう. なお, Ubuntuに標準搭載されているgnome-disk-utility (UI上は単に「ディスク」と表記される) はこの際大変便利である. Ubuntu最高だぜ!

gnome-disk-utility

##NANDフラッシュチップ 直に配線するのは困難だが, Wii Uの場合, 抵抗がつくはずの部分にはんだづけすることで配線できる. また, 360-clipを使う方法がある.

###360-clip 360-clipは, TSOP 48ピンのものになら何でも接続できる優れもの. ただし, クリップと言いつつも, 上からかぶせるだけなので, 押さえていないと接触不良が起きるらしい. それでも, 万能なこのクリップは重宝することもあるだろう.

http://www.360-clip.com/

ただし, 少々お高い (約US$40ほど). それと, 日本では売っていない. ゲーム機ハック以外にも使えると思うんだけどな.

###消えた抵抗 抵抗が本来存在するはずの部分に存在しないらしい. ともかく, そこをピンアウトとして利用できる.

Tsop-pinout

今回は, ここにこうちゃんさんにはんだづけしてもらおうと考えている.

###FT2232Hとの配線 きたねえとかいうんじゃねえぞ! 俺が書いたんじゃない.

schematic

RB, CEに1と2のどちらを接続するかで, vWiiとCafe OSのどちらかを選択できる. こういう構造だし, EEPROMのダンプにも使うので, FT2232Hのボードには直にはんだづけせず, ジャンパケーブル等を使おう. eMMCの場合USB端子を使って上品に配線できたが, 17ピン以上の端子はあまり多くないので, 今回はそのようなことはできなさそうだ.

/* 一応ないことはない. ただし, 一番きれいなHDMI端子はライセンスのせいでお高いし, ほかはレガシーなものばかりである. 単純にピンヘッダを使うという手もあるが, かなり詰められたWii Uにでかいピンヘッダを置くのは無理があるだろう. */

##EEPROM これにもクリップと直に配線する方法がある. クリップはぐぐればすぐに見つかる. 秋葉でも売っている. 直に配線するのもそこまで難しくはないはずだ. NANDほど端子は細かくない. 私はクリップを持っているので, 今回はそれを使おうと思う.

flashromというソフトがFT2232HでのEEPROMダンプに対応している. 今回はそれを使うつもりだ.

http://flashrom.org/FT2232SPI_Programmer

#ふと思う 基盤の両面に不揮発メモリがあって, バックアップの度にバラすのは流石に面倒だな… まあそうするしかないんだけどな。

[top]