勤務先に廃棄寸前のThinkPad T60がありました。会社のお金は私のお金でもあるので、簡単に捨てられたくありません。
状態は、キーボード不調、有線LAN(Intel 82573L)不良、CPUが32ビットのみで用途が狭い、といった感じ。とりあえずキーボードは自力で交換、有線LANはCardBusに100BASE-TXを入れて対応しました。
他にUSBの右側2ポートが半死状態で、バスパワーデバイスを一切認識しない、というのもありますが、セルフパワーのハブ等なら認識しました。
さてCPUです。Core Duo T2400。ネットで何気なく調べるとCore 2 DuoのT7200に交換可能というではありませんか。思わず小躍りしましたよ。早速調達し、BIOSを更新後、Hardware Maintenance Manualを見ながら交換。無事動作。
これで一線級に再投入されたわけですが、欲は出るもので、せっかくGbEの内蔵有線LANを復活させたい、と思うようになりました。どうも過去のBIOS更新時にEEPROMが間違って書き換えられたらしく、そこにさえアクセスできれば直せるはずなのです。
# CardBusを空ければExpressCardが使える、というのもあります
直せそうに思った発端の記事は、NVM(不揮発メモリ、EEPROMやCMOSバックアップSRAMなど)のチェックサムを修復しようというixs' Vodkamelone様の記事です。
Unbricking an Intel Pro/1000 (e1000) network interface - ixs' VodkameloneちなみにT60の症状はチェックサムではなく、Device IDが0になっていました。しかしネットで拾ったIntel謹製ツール(eeupdate.exe)では認識されず。Device ID破壊までは考慮していないようです。
でも諦めません。ethtoolという手段が残っています。まずはUbuntu 12.04.2をインストール...。12.10がX61 Tabletでうまく動かなかった記憶があるため。そしてsudo apt-get install ethtool...ここからです。
Intelからe1000eをダウンロードし(現在3.0.4)、hw.hを修正
#define E1000_DEV_ID_82573L 0x109A
これを
#define E1000_DEV_ID_82573L 0x0000
そしてmake、sudoでmake install、rmmod e1000e、さらにmodprobe e1000e。
NVMのチェックサムが壊れていると言われるので、
noBLOG様を参考にnetdev.cを修正。e1000_validate_nvm_checksum()を呼んでいるforブロックを丸ごとコメントアウトです。もう一度make以下。
これでとりあえず動作。eth1になりました。
さて、IntelからNVMのメモリマップが公開されているので、落ち着いてそれを閲覧。
Intel® 82573 NVM Map, Programming Guide: Application Notesudo ethtool -e eth1でEEPROMのダンプを出力。するとバイト単位でオフセット1Ah,1Bh(ワード単位では上記ドキュメント通り0Dh)のDevice IDの場所が確かに0になっていました。
書き込むにはethtoolに大文字-Eです。マジックナンバーを指定しなければなりませんが、これはDevice IDとVendor IDの組み合わせで、実際の値でした。つまり今回の場合は、0x00008086となります。
sudo ethtool -E eth1 magic 0x00008086 offset 0x1a value 0x9a
sudo ethtool -E eth1 magic 0x00008086 offset 0x1b value 0x10
-eで確認すると書き換わっていまして、Windowsを起動すると無事に認識されました。
ひょっとしたらチェックサムがまだ間違っているかもしれませんが、Boot Device ListにPCI LANが出てきていますので、大丈夫でしょう。
最近のコメント