インテルやらかしテル

2020年6月29日

先日、Thinkpad T480の充電機能がおなくなりになりました。
症状としては純正の充電器を接続しているにも関わらず、15Wの充電器として認識されてしまうというものです。
原因が不明だったので色々と情報を検索した結果、どうやらThunderboltのファームウェアの不具合からくる問題だという事が判明しました。

ThinkPad TB3 Failure – What We Know (Repair, Explanation, etc)

Thunderbolt 3 Issue on *80 ThinkPads: Potential failure reason discovered.

このへんの情報によると、どうやらインテルのThunderboltファームウェアに致命的な欠陥があってファームウェアを格納しているSPI-ROMに常時無駄な書き込みを繰り返しているようです。
その結果として、大体1年程度でThunderboltが使えなくなり充電がまともにできなくなるという結果に。
PCメーカーがカスタムする前のIntelが配布しているファームウェアの段階ですでにバグを抱えているらしく、充電できないMacBookなんかが大量にjunkで出回ってる理由が分かったきがします。
1月の段階で修正用のファームウェアが配布されていたようなのですが、普段はThunderbolt機器を使用しないのでデバイスマネージャーからThunderboltポートが消えていることに気づくことはありませんでした。(その時点ですでにSPI-ROMに致命的な被害が発生していたという事ですね)

とりあえず保証はなくなっていますがLenovoに修理を依頼しようかと電話をかけてみました。

テンプレ症状であるにもかかわらずLenovoの回答は「マザーボード交換になりますので約7万円と往復の送料になります」 うん、ありえない価格。

Thinkpad T480のマザーボードを購入すると、大体送料込みでUSD450です。自分で交換した方が安いですね。

で、壊れているSPI-ROMの価格は一個40円くらいのものです。で、実際に載せ替えをして修理した方のブログがこれ。

Repairing a ThinkPad with a Corrupt Thunderbolt Firmware Chip

このブログではThinkpad P1ですが、T480でも基本的には同じなのでやってみることにしました。

   

ThunderboltポートのすぐそばにあるこのSPI-ROMにBiosが書き込まれています。

Winbondの25Q80DVSIGですね。

とりあえず定番のSPI-ROMライターCH341Aを接続してチェックをしていきます。

   

標準の中国製の書き込み用のアプリもありますが、25Q80DVSIGには対応してなかったり中国製のアプリちょっと怖いので AsProgrammerを使います。

 

  ROMの内容を読み込んでみると、どうみてもおかしいデータが並んでいる状態でした。うん壊れてる……
一応念のためにバックアップを取った後で、Lenovoからダウンロードした純正ファームウェアをダウンロードしてきます。
今回の場合は解答されたフォルダにTBT. binという名前でありました。
そのままだと容量よりだいぶ少ないファイルなのでSPI-ROMの容量に合わせて、ファームウェアの後ろにNullのデタを入れます。
こういう時にWSLホント便利ですよね。
さっくりLinuxのホームフォルダにTBT.binを移動後Bashを起動して
dd if+/dev/null of=TBT.bin bs=1 count=1 seek-1048576
他に二つあるSPI-ROMの関係もあって一度ゼロフィルしたファイルで起動した後に、再度ファームウェアを書き込む必要があるようなのでNullで埋めたファイルも用意しておきます
 dd if+/dev/zero of=zero.bin count=1024 bs=1024 
で、出来上がったファイルを書き込んだら起動してみます。(書き込み時点で挙動が怪しいのでチップの寿命つきかけ、もしくはすでに死んでますね)
恐る恐る充電器をUSB-Cポートにさしてみると…… ちゃんと65W電源として認識されました。
間違いなく問題はココですね。と、いうわけでSPI-ROMを交換するために取り外しました。

   

取り外したSPI-ROMはこのサイズ感です。  

 

新品のSPI-ROMをはんだ付けして、ゼロで埋めたファイルを書き込んで起動。
その後、一度電源を落としてファームウェアを書き込んで再起動で無事にデバイスマネージャーにThunderboltが戻ってきました。