maoです。
EeePCにCFを内蔵するための改造記事です。
過去にBLOGの方にコメントで書いた分もありますがまとめということで書きます。


EeePCの内蔵IDEポートにストレージを増設しよう

1.EeePCの構造
 ご存知のとおりEeePCのストレージ構造は
 ・内蔵SSD 4GB(IDE)
 ・SDカードスロット(USB)
 となっています。このうち内蔵SSDはチップセットのセカンダリIDEのマスターに繋がっています。
 見た目にはIDEにハードディスクが繋がっているのと変わりません。転送モードもUDMA4(最大66MB/sec)
 と高速です。
 SDカードは内蔵されていますが接続はUSB2.0です。ごくありふれたSDHC対応カードリーダです。

2.ストレージ拡張の問題
 Eeeの内蔵ストレージで困るのが第一に容量です。内蔵4Gは昨今のアプリケーションにはあまりにも少な
 くすぐに溢れてしまいます。
 そのためSDカードを追加ストレージとして使いますが、ここで困るのが第二の問題であるアクセス速度です。
 USB接続されてるためCPU負荷も高くSDメモリ自体の遅さも重なってお世辞にも快適とは言えません。
 またSDカードというリムーバブルメディアのため、アプリによってはインストール先に選べない場合もあります。
 (誤魔化してHDDに見せかけることも出来ますが万能ではありません)
 そこで内蔵されてるIDE接続のSSDのスレーブにTrue-IDEモードにしたCFを接続してアクセス速度と容量の
 問題を一気に解決しようというのが今回の改造の趣旨です。

3.内蔵SSD解析
 内蔵SSDに拡張するといってもEeePC内部にはIDEバスのコネクタはありません。
 (これについてはちょっとウソになりますが・・・詳細は後でわかると思います)
 内蔵SSDは基板上に直接実装されていて汎用のコネクタなどで脱着は出来ません。

内蔵SSD
 内蔵SSDの回路を見るとFlashメモリチップと制御コントローラで構成されています。
 制御コントローラは Silicon Motion SM223 で特別なファームウェアなしでFlashメモリを繋ぐだけでCFを構成
 できるスグレモノのICです。CFの制御ICなのでTrue-IDEモード(CFをIDEデバイスと同じ動作をさせるモード)
 もサポートしておりUDMA mode4まで対応しています。

 Eeeの内部SSDはこのコントローラをTrue-IDEモード固定で使っており、いわばCFの回路をそのまま実装し
 ているのと同じともいえます。実際には一般に販売しているSSDの中にもSM223は使われている事もあり、
 CFコントローラというよりもSSDコントローラというのが正しいのかもしれません。
 そういう意味では容量こそ4GBですがEeePCの内蔵ストレージは立派なSSDです。

 SM223がIDEで繋がっているのでこのピンアサインが分かればIDEの接続信号が分かり並列に繋ぐ事でスレ
 ーブ接続としてデバイスを追加出来るはずです。
 しかし残念なことにSM223はデータシートが公開されていません
 テスターで配線追いかけるにもチップセットがBGAでピンに当たれません。
 これは困った・・・Flashからピン追いかけてそれ以外のピンに当たりつければなんとなく分かりそうでしたが
 流石に手間かかりすぎ&確証が持てません。
 困ったときのネット・・・検索するとうまい事にEeeUserの方で似たような事を調べてる記事がありました。
 そこの記事では結局調べ切れてないようですが・・・ヒントがありました。
 トランセンドの266倍のCFの中身がどうもSM223とのこと。CFのピンアサインは公開されてますので逆に辿れ
 ばIDEのバスが分かります。

 早速注文・・・結構高いです。どうせならと解析後も使える容量ということで8GBを買いましたが動かないかも
 という心配が。手元に到着後、覚悟を決めてCFを分解します。あぁぁ、なんか勿体無いorz
CF分解

 CFのパターンは素直で分かりやすいです。テスターで当たりながら信号をチェック。
 EeeUserで上がっていたピンアサインのおかげで大分楽できました。
 以下CFとSM223、True-IDEにした時に必要な配線です。

No. CF SM223 Name IN/OUT True-IDE
Comment
1 1     GND - GND  
2 26     -CD1 O open low=Card IN
3 2 94 D03 I/O  
4 27 93 D11 I/O  
5 3 92 D04 I/O  
6 28 91 D12 I/O  
7 4 90 D05 I/O  
8 29 88 D13 I/O  
9 5 86 D06 I/O  
10 30 85 D14 I/O  
11 6 84 D07 I/O  
12 31 83 D15 I/O  
13 7 82 -CS0 I  
14 32 81 -CS1 I  
15 8 79 A10 I GND  
16 33     -VS O open  
17 9 78 ATA SEL I GND low=TrueIDE
 mode,open=PCMCIA
18 34 77 -IORD I  
19 10 75 A09 I GND  
20 35 72 -IOWR I  
21 11 71 A08 I GND  
22 36 70 -WE I Vcc  
23 12 69 A07 I GND  
24 37 68 INTRQ O  
25 13     Vcc - Vcc
26 38     Vcc - Vcc
27 14 67 A06 I GND  
28 39 65 -CSEL I UserSelect low=master
open(or Pullup)=slave
29 15 64 A05 I GND
30 40     -VS2 O open  
31 16 63 A04 I GND  
32 41 62 RESET I  
33 17 61 A03 I GND  
34 42 60 IORDY O  
35 18 59 A02 I  
36 43 56 -INPACK
(DMARQ)
O  
37 19 55 A01 I  
38 44 54 -REG
(-DMAACK)
I  
39 20 53 A00 I  
40 45 52 -DASP I/O  
41 21 51 D00 I/O  
42 46 50 -PDIAG I/O  
43 22 48 D01 I/O  
44 47 47 D08 I/O  
45 23 45 D02 I/O  
46 48 44 D09 I/O  
47 24 43 IOCS16 O  
48 49 42 D10 I/O  
49 25     -CD2 O open low=Card IN
50 50     GND - GND
 
 これでSM223のピンアサインが分かりました。
 スレーブにこのCFをぶら下げれそうです。

4.謎のコネクタ
 さて・・・いざ作業となるとこの細かいピッチのICに並べてジャンパー配線は骨が折れます。
 というより無理ですヨ。最近乱視がきつくて(言い訳)
 そこでちょっと考えてみます。

 EeePCの海外モデルには8GBモデルも存在します。
 ネットで調べてみたところオンボードにSSDが乗っておらず、DIMMの上にあるminiPCI-Expressぽいとこに
 Flashを実装したボードが載っています。
 写真などを見るとボード上にはSM223(もしくはPHISONのチップ)とFlashが載っているだけです。
 どうみてもPCI-Expressの制御チップがありません。
 どうやって繋がっているのでしょうか?

 miniPCI-ExpressのコネクタにはPCI-Express1x相当の信号とUSB、SIMカードなどを繋ぐためのシリアル
 信号で構成されています。電源は3.3Vと1.5Vが用意されています。
 海外のフォーラムにコネクタのピンアサインが載っています。PCI-Express関係の資料はPCI-SIGに入ら
 ないと資料が入手できないので公開されてるサイトはとてもありがたいです。
 テスターで軽く当たると1.5V相応に当たるピンに電圧が掛かっていません。他にもReserved(予約)ピンに
 何か配線されていたりと怪しい感じです。
 まじまじとコネクタのパターンを見ていると何点かおかしな点に気がつきます。
FLASH_CON
 ・コネクタ近傍にFLASH_CONの名前が刻んである
 ・PCIeコネクタのREFCLKの差動配線が明らかにバラバラになっている
 ・3.3V/1.5V電源ピンのはずの所に普通の信号が配線されている

 いくつかのモデルではこのFLASH_CONにminiPCIeのコネクタが実装されている物もあるらしく、x-gadgetさん
 のBLOGでminiPCIeのカードを挿してみた実験が載っていました。結果は認識しないどころか内蔵のSSDも
 見えなくなるとのこと。
 これでなんとなく想像がつきました。このFLASH_CONはminiPCIeでは無いのではないかと。
 そう予想が付けば確認です。SM223のピンは分かっているのでテスターで配線を辿ります。
 そして・・・予想通りでした。このコネクタはminiPCIeではなくIDEのコネクタです。

 前置きが長くなりました。
 ではまずオリジナルのminiPCI-Expressのピンアサインです。

<Mini PCI Express Pinout>
1 WAKE# 2 3.3V
3 Reserved 4 GND
5 Reserved 6 1.5V
7 CLKREQ# 8 UIM_PWR
9 GND 10 UIM_DATA
11 REFCLK- 12 UIM_CLK
13 REFCLK+ 14 UIM_RESET
15 GND 16 UIM_VPP
Mechanical Key
17 Reserved (UIM_C8) 18 GND
19 Reserved (UIM_C4) 20 Reserved
21 GND 22 PERST#
23 PERn0 24 +3.3Vaux
25 PERp0 26 GND
27 GND 28 +1.5V
29 GND 30 SMB_CLK
31 PETn0 32 SMB_DATA
33 PETp0 34 GND
35 GND 36 USB_D-
37 Reserved 38 USB_D+
39 Reserved 40 GND
41 Reserved 42 LED_WWAN#
43 Reserved 44 LED_WLAN#
45 Reserved 46 LED_WPAN#
47 Reserved 48 +1.5V
49 Reserved 50 GND
51 Reserved 52 +3.3V

 そしてこれが解析したEeePCのFLASH_CONのピンアサイン

<EeePC Flash_CON Pinout with CF connect>
1 D0 (21) 2 D15 (31)
3 D1 (22) 4 GND
5 D2 (23) 6 D14 (30)
7 D3 (2) 8 D13 (29)
9 GND 10 D12 (28)
11 D4 (3) 12 D11 (27)
13 D5 (4) 14 D10 (49)
15 GND 16 D9 (48)
Mechanical Key
17 D6 (5) 18 GND
19 D7 (6) 20 D8 (47)
21 GND 22 RESET (41)
23 PERn0 ??? 24 IOWR (35)
25 PERp0 ??? 26 GND
27 GND 28 IORD (34)
29 GND 30 REG(DMAACK) (44)
31 PETn0 ??? 32 INPACK(DMARQ) (43)
33 PETp0 ??? 34 GND
35 GND 36 USB_D-
37 A00 (20) 38 USB_D+
39 A01 (19) 40 GND
41 A02 (18) 42 IORDY (42)
43 N.C. 44 INTRQ (37)
45 PDIAG (46) 46 CS0 (7)
47 3.3V (36) 48 CS1 (32)
49 3.3V (38) 50 GND
51 3.3V (13) 52 DASP (45)

 <注記>
 ()内の番号はCFのピン番号を示す。
 上記以外にCFの以下ピンをGNDに接続   
 1,8,9,10,11,12,14,15,16,17,50
 CFの39ピンはマスタースレーブ切り替え。OpenでSlave、GNDでMaster
 FLASH_CONの23,25,31,33,43は未接続でOK

 まさかIDEだったとは思いませんでした。しかもご丁寧な事にminiPCIeとGNDとUSBが一致しています。
 ぱっと見はminiPCIeにしかみえません。
 こういう構造ですので無理にminiPCIeのカードを刺すと内蔵SSDのコントローラ壊すかもしれません。
 またピン23,25,31,33は未解析です。PCIeの信号そのものが配線されてそうですが確証はありません。
 ただTX/RXだけでREFCLKがないとなると、まともに動くデバイスは無いのではないかと・・・

5.CF実装
 謎のコネクタがIDEとわかればわざわざSM223チップからパラに配線する必要はありません。
 FLASH_CONにCFをスレーブモードで繋げるだけで動作するはずです。
 配線は先のピンアサインのとこを参考にしてください。
 今回は電源電圧を3.3Vにしているので古いCFでは動かないかもしれません。
 まぁ今時5VオンリーのCFなんて滅多にないと思いますが・・・

 まずコネクタを加工。隙間がかなり厳しいのでCFコネクタに直接ワイヤーを結線していきます。
作業中1
 エッジは単なる支えです(笑)
 配線するとこんな感じに。
 ちなみに配線の長さは出来るだけすべて同じ長さで等長配線になるようにします。
作業中2
 これを基板にえいやっと配線
基板へ配線折れそう
 とにかく動かすの優先で配線がバッチイ(;-;)
 その辺はご容赦を。CFの固定は重ねた厚みのある両面テープです。
 2GのpqiのCFは位置合わせです。(トランセンドのばらしちゃって (T-T) )

 次にケースを加工します。そのままでは今回の方法ではネジ支柱に当たって入りませんので思い切って切ります。
削る前削った後(;-;)
 強度的に不安ではありますが・・・背に腹は代えられません。
 そしてここに先ほどの配線済みのメイン基板を組み合わせます。
収まり
 なんとか入りました。なんか左に使い物になりそうにないUSBがありますが気のせいでしょう。
 今回わたしはこの方向で作ってしまいましたがtie2さんの様に下向きにCFが出るようにするのもいいと思います。
 (いやむしろそうした方がいいかも・・・orz)
 灰色のワイヤはCSELのラインです。あとで切り替え出来るように・・・

 そして動作確認。うまくいきますように・・・
BIOSBIOS2
 をを・・・!
 無事認識しました。スレーブIDEとしてトランセンドのCFを認識しています。
 このままWindowsを起動してみます。
デバイスマネージャ
 デバイスマネージャでも正常に認識。
 同じSM223でデバイス名称が違うのはトランセンドが書き換えてる為でしょう。
 そしてベンチマーク

 内蔵SSD
内蔵SSD

 拡張CF
トランセンド8G

 パフォーマンスも申し分ありません。元々トランセンドのX266のCFは評判もいいので性能も中々のものです。
 USBだとまずこの値は出ません。ひとまず大成功でしょう。

6.本体とのスワップ
 CFは無事繋がりました。しかしスレーブです。
 マスターで繋がらないと内蔵SSDが壊れたときにスワップしにくい。またパフォーマンスの点からも使い勝手が
 イマイチです。
 なので内蔵SSDと拡張CFのマスター/スレーブを切り替え出来るようにします。

 今回の改造ではわたしはここまでまだ行っていません。とりあえずやり方だけ。
 CFの39ピン、SM223の65ピンがそれぞれCSELになっており、どちらもレベルHiでスレーブ、Lowでマスター
 になります。
 EeePCの場合は内蔵SSDのSM223の65ピンがLowに固定されています。これをICのピンを持ち上げてOpen
 状態にします。(本当はプルアップ欲しいですがSM223内部でプルアップされてる?みたいです)
 これで内蔵SSDがスレーブになります。
 対してCFの39ピンをGNDに繋ぎます。これでCFがマスターになります。
 スイッチ1コ+反転ゲートかスイッチ2コで切り替え出来ます。このあたりはセンスで作り込めばいいかと。
 このあたりはtie2さんが面白い方法紹介してくれそうな気がします(他力本願)

7.終わりに
 大層な文章ですが紐解けば単にIDEのバスを半田付けしてるだけです。
 工作レベルは相応のスキルを要求されますが、出来ない改造ではありません。
 むしろケースを切る踏ん切りが出来るかどうかで・・・(笑)

 この記事が一人でも多くのEeeハッカーの助けになれば幸いです。
 最後に公開の場を設けて頂いたtie2さんに心よりお礼申し上げます。

tie2's labo.へはこちらからどうぞ
EeePC関連のまとめはこちらから