WiFiホワイトリスト修正

Lenovo G580の内臓WiFiモジュールを任意の(Lenovoがサポートしていない)モジュール(例えば、7260HMW)に交換した場合、起動できなくなる。

起動できるようにするには、BIOSに書き込まれている内蔵WiFiモジュールホワイトリストを修正する必要があるが、この修正方法は下記2つある。

  • BIOS ROMをハードウェア(SPI Programmer)で読み出し、修正、書き換える。(後述「修正手順A」)
  • BIOSアップデートファイルを書き換える。(後述「修正手順B」)

BIOSアップデートファイルを書き換える方法の方がソフトウェア上で作業が可能で楽。

この2つの方法のどちらかと、BIOS修正3案を組み合わせ修正する。

BIOS修正

後述修正手順で実施するBIOS修正として案が3つある。
どれでも良いが、私は案1で修正している。

案1 ホワイトリスト修正

既存のリストの1つを書き換える。
交換するモジュールのPCI IDが予めわかっている必要がある。

  1. BIOSファイルをUEFIToolにて開く。
  2. WiFiホワイトリスト解析ページの「解析モジュール」に記載されているDxeOemDriver.efi 取り出す(Extract body)
  3. ホワイトリスト部分をバイナリエディタで修正する。
    [ 修正例 ] BIOS 62CN97WW_64 の場合
    Intel® Dual Band Wireless-AC 7260 へ変更
    000400: E4 14 27 47 E4 14 1B 05 FF FF FF FF
    ↓
    000400: 86 80 B1 08 86 80 70 44 FF FF FF FF
    
  4. DxeOemDriver.efi 入れ替える(Replace body)
  5. 保存する。

案2 ホワイトリストチェックプログラム修正

ホワイトリストチェックがNGとなっても停止しないようプログラム修正する。

  1. BIOSファイルをUEFIToolにて開く。
  2. WiFiホワイトリスト解析ページの「解析モジュール」に記載されているDxeOemDriver.efi 取り出す(Extract body)
  3. ホワイトリスト部分をバイナリエディタで修正する。
  4. WiFiホワイトリスト解析ページの「ホワイトリストチェック処理」に記載されている箇所を修正する。
    [ 修正例 ] BIOS 62CN97WW_64  の場合
    NG判断後のジャンプ先をOK判断後のアドレスに変更
    000F50: 0F B7 04 0A 66 41 3B C2 75 BE 48 8B 05 A7 0D 00
    ↓
    000F50: 0F B7 04 0A 66 41 3B C2 75 2B 48 8B 05 A7 0D 00
    
  5. 保存する。

案3 BIOS修正サイトに修正依頼

下記のようなBIOS修正サイトに修正を依頼する。

フォーラム利用のための登録が必要であり、一時的にPC固有情報を含んだBIOSを公開することになることや修正後のBIOSに何か仕込まれるリスクがある。

修正手順A

BIOS ROMをハードウェア(SPI Programmer)で読み出し、修正、書き換える手順。

  1. SPI Programmerの使用方法を参照し、ROM読込み/ファイル保存する。
  2. 保存したファイルを前記「BIOS修正」する。
  3. SPI Programmerの使用方法を参照し、ROM書込みする。

修正手順B

Lenovo公式サイトよりダウンロードしたBIOSアップデートファイルを書き換える。
注意:この手順は実機確認しておらず、失敗する可能性あり。また、失敗し、起動しなくなった場合、修正手順Aを実施する必要がある。

  1. LenovoのサイトよりBIOSアップデートファイルをダウンロードする。
    例:62cn97ww_64.exe
  2. ダウンロードしたファイル起動する。
  3. Phoenix SCT Flash 画面が開いた状態で、UEFIToolにて “%TEMP%\ExtractTemp” の拡張子が”CAP”のファイルを開く。
    例:62CN97WW.CAP
  4. 前記「BIOS修正」を参考に修正する。
    CAPファイルからの修正となるため、対象の階層が異なる。
  5. Phoenix SCT Flash 画面に戻り、BIOSアップデート操作する。

ちなみに、私はWindows10でこの手順はハングアップし、うまくいかなかった。
この手順をWindows8で実施した方から、実行はされたとの連絡があり、やはり、ダウンロードしたアップデートファイルの対応OSであることが必要らしい。
それから、実行されたとしても、古いバージョンのBIOSでないとアップデートされないようである。