eMMCをSDカードリーダーで読み込むための実験

2019/01/05

ブートROMがeMMCになりつつある時代になりました。
eMMCにもブート用領域が存在するようになりましたが、NANDのPSLCなので読み込めなくなる心配は多少あります。(まぁ個人で使う分にはそこまで気にするレベルではないですが…)
SoCのブートストラップでUSB OTGモードで書き込みやSDカードから起動して再度書き込みなどできるようなことができれば良いですが、いつもそのような状態にあるとは限りません。また不具合で返却された量産機材のeMMCの中身だけ吸い出したい時、基板から取り外さずに読み込める技術はそこそこ重宝すると思います。
なので今回はハードウェアハッキングできるようにeMMCをSDカードリーダーから読み書きできるテクニックを身につけるべく実験を行いました。

そもそもeMMCとは何物なのか?というのはJEDECの仕様書とかmicronのeMMCのデータシートを読んでもらえれば詳しくわかりますが、 簡単にいうとeMMCは基板に実装するSDカードのようなICと思ってもらえればよいかと思います。
eMMC内部にはコントローラーがあり、基本SDIOバスと同じところで動作します。コマンドが違うのかまでは詳しく知りませんが、ほぼSDカードと同じです。eMMCは最高8bitバス幅ですが、今回ジャンパー飛ばしてSDカードリーダーで読み込むときは配線の楽な1bitモードで読み込みます。
前置きはこんなところにして実際にeMMCがSDカードリーダーで読み込むことができるかを確認したいと思います。


改造と実験

●必要なもの
・SDカードリーダー TS-RDF5K (Transcend)
・はんだごて
・リード線(必要であれば基板)
・SD-microSD変換カード

●eMMCにアクセスするために最低限必要な信号
・CLK
・CMD
・DATA0
・GND
・電源3.3Vまたは1.8V(必要であれば使う。)
・RESET信号(必要であれば制御する。)



今回は基板から信号をとるものがなかったので、eMMC単体で実験することにしました。
まずSD-microSD変換カードをばらします。するとSD部の端子から伸びてMicroSD端子が飛び出てます。ここにはんだ付けします。





変換ボードができたので、実際にeMMCにはんだ付けしていきます。
DATA0には内部pullupはありませんが、SDカードリーダーにあるようなのでなくても動作しました。
1bitモード時は残りのDATA1~DATA7は内部プルアップが動作するため、プルアップ処理する必要はありません。(リセット信号も1Vぐらいありました。VDDIMにはコンデンサつけました。)
あとSDカードには書き込み禁止のスライドスイッチがあります。SD-microSD変換から作る場合はこのスイッチがなくなるためテープかなんかでごまかしましょう。



あとはSDカードリーダーにさして読み込ませます。
無事読み込みました。速度は1bitモードなためか5Mbpsぐらいしか出てません。
結構簡単にできてよかったです。実際、eMMCを取り外さず基板でやるときはSoCが動作しないようにリセットしっぱなしにしたり水晶の発振をさせないために水晶をとったりするみたいですが、実験できる基板がないのでまた機会があるときに実験したいと思います。





また基板から読み取る場合はSDIOのバス電圧をオシロスコープで確認する必要があります。
今回の実験ではeMMCを取り外して確認したのでVCCQは3.3Vで駆動させてましたが、世の中にはSDIOの信号レベルを1.8VでSDIOを動作させているものがありますので注意してください。もし基板からeMMCを取り外さずに1.8Vの信号を使う場合はSDカードリーダー用変換基板をよく見るとTI製のTXS02612が実装されていますので、Low Voltage e-MMC Adapterを購入するか手作りでつくって対応させてアクセスするようにしましょう。

・ Low Voltage e-MMC Adapter
 https://www.exploitee.rs/index.php/Exploitee.rs_Low_Voltage_e-MMC_Adapter_(Alpha_Version)



<備考>
今回eMMCを読み込むためにSDカードリーダーは参考資料に書いてあるTS-RDF5Kを用いましたが、手持ちのBSCR24EU2 seriesでも使えました。
カードリーダーの中身のICを見てみるとGL3233(TS-RDF5K)とGL834(BSCR24EU2)で共にGenesys製でした。別に他のSDカードリーダーでも使える可能性はありますが、何がOKで何がNGかは不明ですので一つは確実に動作する同じICのSDカードリーダーを持っておくほうが良いと思います。




<参考資料>
・Black hatのexploitee.rs「Hacking Hardware with a $10 SD Card Reader」という資料
 
以上