LinuxMintでCH341Aを利用したPCマザーボードのBIOSリカバリ
1. 概要
MSIのマザーボードのBIOS更新で失敗してしまいBIOSが起動しなくなりました。中古のマザーボードを更に購入して、CPUとMemoryを移設して問題は改善したのですが、動かないマザーボードを修復する手段はないかとネットで調べました。
参考資料の記事をネットで見つけて、マザーボード上のBIOSチップを調べて、同じ方式で復旧できそうな感触を得たのでCH341Aをアマゾンで購入しました。BIOSのアップデート敬遠はあるので試してみる気になりました。
参考資料の記事はWindows環境でCH341Aを利用しています。今回、LinuxMint環境で動かすことができるかの不安はありました。幸いにもCH341Aは高価な物でないことが、作業をやる気にさせたと思っています。
CH341Aを動かすソフトウェアはgithubからDownloadした上で、ビルドしました。記述されている説明通りに環境構築ができ、実際のソフトウェアの利用方法もWindowsとあまり変わらず、参考資料の手順に沿って実施することができました。この内容を記述します。
2. 詳細
(1)概要編
参考資料はThinkPadに関する記述ですが、搭載されているBIOSのフラッシュメモリーのwinbond 25Q128FVSQが同じであったので手順を参照してできると考えました。購入したCH341Aには中国語の説明が書いてあったので、OSSを活用することにしました。
まず、ThinkPadの資料を読んで全体の流れを掴みます。
丁寧な説明資料で良くわかります。
次にCH341Aを利用するOSSをUbuntu-20.04.6でBuildしました。
ThinkPadの資料で利用するSoftwareと異なりますが、大体同じで問題ありません。
私はこの方式で動作しないマザーボードを復活することができました。
CPUとMemoryを再度移設して、マザーボードのBIOS起動確認で完了です。
(2)設置編
まず、AmazonでKeeYeesのCH341Aを購入します。参考資料にAmazonのURLのリンクがありますが、AmazonでCH341Aで検索することをおすすめします。金額は1400円程度で購入できます。
参考資料では、Windows対応のCH341AのSoftwareを用意していますが、Ubuntuで作業するので、この部分は次回にOSS版をBuildします。今回は、「8ピンクリップでBIOSに接続!BIOSチップの場所と挟み方」に進みます。
重要な点ですが、ThinkpadのBIOSチップはwinbond 25Q128FVSQであることです。BIOSチップが異なると今回の手順は利用できません。BIOSチップを調べるとことから作業のやり直しになります。winbond 25Q128FVSQがマザーボードに直付されていた点も、私が利用したマザーボードと同じでした。
ThinkpadはNotePCなので、マザーボード単体にすることは難しいのですが、私の場合はデスクトップ用であったので、ケースから取出し、CPUファン、CPU、メモリも全て外して、マザーボード単体にして作業をしました。電源、キーボード、マウス、ディスプレイも全て取外します。
CH341Aの取付ですが、本体にケーブルを接続します。レバーを上に上げて、コネクタを指定された方向に接続後、レバーをもとに戻すと完了です。ケーブルの反対側をBIOSチップに接続します。チップ上の○を確認して接続すると完了です。CH341AをUbuntuのUSBポートに接続して準備完了です。ここから先はソフトウェアが必要な作業となるので次回記述することにします。
(3)SW導入編
まず、BUILDするためにCH341AをUSBポートから取外します。下記参考資料を参照して実施します。
LinuxでもCH341AでROMにFlashしたい【IMSProg】
「README通りにインストール」と記述がありますが、READMEを見つけるのも一苦労です。
下記URLのREADMEを参照します。
https://github.com/YTEC-info/CH341A-Softwares/blob/main/Programas/Linux/IMSProg/README.md
まず、System software requirementsです。
環境はUbuntu-20.04なので下記箇所が該当します
$ sudo apt-get install cmake g++ libusb-1.0-0-dev qtbase5-dev qttools5-dev pkgconf
次にBUILDですが、gitはUbuntu-20.04環境に導入済みとします。
Compiling programmerの部分です
$ git clone https://github.com/bigbigmdm/IMSProg.git
$ cd ~/IMSProg/IMSProg_programmer
$ mkdir build
$ cd build
$ cmake ..
$ make -j`nproc`
$ sudo make install
Compiling editorの部分です
$ cd ~/IMSProg/IMSProg_editor
$ mkdir build
$ cd build
$ cmake ..
$ make -j`nproc`
$ sudo make install
これでBuild作業は完了です。
起動は下記コマンドを実行します。
$ IMSProg
(4)復旧編
DesktopPCのUSBにCH341Aを接続。CH341AはマザーボードのBIOSチップにケーブルで接続された状態からスタートします。
Detectを選択して、SOFTWAREからCH341Aを経由してBIOSチップにアクセスできるか確認します。私の場合は、一発でクリアしました。Detectできない場合は、一度、CH341AをUSB接続から取外して、ケーブルなどの接続を再確認します。
Readをします。現在のBIOSチップ内容が読み出されます。
Verifyをします。読み出した内容の確認です。
Saveをします。現在のBIOSのバックアップを取ります。
ここで、マザーボード用のBIOSをベンダーサイトから入手します。この作業は案外難しく、中々見つけることができません。間違ったBIOSモジュールを利用するとHWを壊してしまう可能性があり、慎重に確認をして見つけます。
ここでは、該当するBIOSモジュールを見つけて、Ubuntu PC上に保存できたとします。
書き込み作業を始めます。
Detectを選択して、SOFTWAREからCH341Aを経由してBIOSチップにアクセスできるか確認します。
Eraseを選択して、BIOSチップ内を全て消去します。
参考資料にはBlank処理がありますが、Buildツールでは実行できませんでした
Openを選択して、書き込みをしたいBIOSモジュールを開きます。
Writeを選択して書き込みをします。参考資料ではProgramとなっています。
私の場合、この作業に20〜30分くらい必要でした。
Verifyを選択して確認します。
マザーボードをケースに戻して、CPU, CPUファン、メモリ、電源、ディスプレイ、キーボード、マウスを接続して、BIOSが起動できるか確認します。無事に起動できた場合は作業成功です。
参考資料を参照して表示内容が正しいか確認します。
3.所見
実施するまでは不安ですが、実際に作業をして復旧できたときの喜びは大きく、自信になります。BIOS更新はマザーボード購入時に実施しますが、短時間で完了します。しかし、CH341Aを利用すると30分位必要です。推測ですが、通常のBIOSの更新は差分更新ではないかと感じています。CH341Aを利用すると全部書き換えるので時間を必要でした。
参考資料はWindowsを利用していますが、LinuxMintで実行しました。異なる点はCH341Aを利用するアプリケーションをBuildする必要があることです。操作自体はWindowsの場合と変わらないと感じました。
CH341Aが利用できるBIOSチップに制限があり、全てのマザーボードで利用できる理由ではありませんが、ハードウェアの仕組みを理解する上で、良い勉強になりました。
参考
[本ブログ内参照]
・クラウド環境に慣れてしまうと物理機器への対応が難しい
・クラウド環境に慣れてしまうと物理機器への対応が難しい
コメント
コメントを投稿