ASUSのBIOSを1105以上に更新すると起動しない

ASUSのZ390マザーボード、ROG MAXIMUS XI HERO WiFiのBIOSを最新版1105にアップデートしたところmacOSが起動しなくなりました。1005にダウングレードしたら復活しました。

BIOSアップデートで起動しない

ASUSの最新BIOS 1105が公開されていますが、これにアップデートするとmacOSが起動しなくなるとのことです。こちらのコメントで教えていただきました。検索すると色々なところで紹介されていました。

ならば試してみようということで、こちらのビルドで紹介したASUS ROG MAXIMUS XI HERO WiFiのBIOSをアップデートしてみました。

ROG MAXIMUS XI HEROは、BIOSからネットワーク接続してBIOSアップデートできます。この機能を使って最新の1105にアップデートしました。するとやはりmacOSが起動しませんでした。-vで起動すると起動途中で文字表示が止まってそのまま動かなくなります。apfs.efiなのかVirtualSMCのあたりのメッセージで止まります。

BIOSでRTCを設定する

この記事へのコメント欄で教えていただいた情報によると、原因はRTC (リアルタイムクロック)の関係のようです。BIOS設定でレガシーなRTCを使うように指定すれば解決するようです。RTCは、システムの日付や時計を管理しているだけでなく、割り込みでプログラムを制御するような使い方もされているようです。起動時に、RTC割り込みがある事を前提に作業を始めた起動プログラムが、RTCからの割り込みが発生しないために動作継続できなくなって、起動が止まってしまうようです。

上記のサイトでは以下のような設定画面の写真が紹介されていました。ASUSのBIOSメニューの、Advanced–>PCH Configuration–>System Time and Alarm SourceをLegacy RTCにすれば良いようです。メニューの内容などから判断すると、ACPIが提供するタイマー・アラーム機能を利用する方式がデフォルト設定になったため、Clover + macOSが対応できなくなったようです。従来型のRTCのタイマー・アラーム機能を使用するよう設定すれば、macOSを起動できるようです。

ところがどういうわけか、ROG MAXIMUS XI HEROのBIOS ver. 1105の画面にこの選択肢が出てきません。

IOAPICのエントリーの選択肢は、以前のBIOSでは表示されていました。今回は、それも無くなっていました。もしかしたら次のバージョンでRTCの選択肢が出てくるようになるのかもしれません。という事で、BIOSでLegacy RTCを指定する方法は使えませんでした。

追記:1302でもダメでした

2019/9/11付で1302が公開されていたので、アップデートを試みました。やはりそのままでは起動せず、また、System Time Alarm Sourceのメニューも現れませんでした。下記に説明したUSB BIOS Flashbackの方法で1005に戻しました。(2019年9月29日)

追記:1401でもダメでした

2019/12/11付で1401が公開されていたので、アップデートを試みました。やはりそのままでは起動せず、また、System Time Alarm Sourceのメニューも現れませんでした。下記に説明したUSB BIOS Flashbackの方法で1005に戻しました。(2019年12月21日)

パッチを当てる

ASRockのマザーボードなどでに必要とされていたDSDTへのパッチ

を当てることでも対応できるようです。これで新しいBIOSでもmacOSが起動したそうです。以下のパッチをconfig.plistのACPI\DSDT\Patchesに書き込めば良いようです。

<dict>
  <key>Comment</key>
  <string>Fix Z390 BIOS DSDT Device(RTC) bug</string>
  <key>Disabled</key>
  <false/>
  <key>Find</key>
  <data>
    oAqTU1RBUwE=
  </data>
  <key>Replace</key>
  <data>
    oAqRCv8L//8=
  </data>
</dict>

ただ、パッチを当ててまで新しいBIOSが使いたいわけでなないです。そこで、ダウングレードすることにしました。ところが…

BIOSダウングレード出来ない

失敗したら古いバージョンにダウングレードすすれば良いと思って、気楽に手がけたのですが、実は簡単ではありませんでした。実際に試したところ、1105より古いBIOSでは、BIOS画面からEzFlashというツールを起動して、古いBIOSイメージを指定すれば、簡単にBIOSダウングレードできました。しかし最新の1105では、1105より古いバージョンのBIOSイメージを指定すると、適切なBIOSでは無いと言われてインストールしてくれません。

USB BIOS Flashbackでダウングレード

MAXIMUS XI HEROにはUSB BIOS Flashbackという機能があります。ネットワークやUSBメモリからBIOSを更新できるEzFlashはBIOSのメニューから起動するツールで、搭載したCPUやメモリーを使用して動いています。これに対してUSB BIOS Flashbackは、CPUやメモリーを搭載していなくても動く更新ツールです。おそらくマザーボード上に専用のマイクロコンピュータを搭載していて、CPUの力を借りずにBIOS更新する仕組みかと思います。BIOS更新のためにわざわざコンピュータを搭載していると考えると、とても贅沢に思えます。上位機種のマザーボードにしか搭載されていません。これでBIOSダウングレードを試しました。

USB BIOS Flashbackを使用するには、FATでフォーマットしたUSBメモリーのルートに、更新したいBIOSイメージをM11HW.CAPという名前で置いておきます。これをバックパネルの、USB BIOS Flashback用のUSBポートに挿しておきます。PS/2コネクタ下にあります。次に、電源を切った状態で、バックパネル左端のUSB BIOS Flashボタンを3秒ほど長押しします。するとこのボタンが点滅を始めます。あとは点滅が終了するまで待つだけです。自動的に再起動しなければ電源投入します。2-3回再起動した後、インストールしたバージョンのBIOS画面になります。ここでmacOS向けの設定をすれば良いです。

今回は、1105の一つ前のバージョンである、1005に戻すことにしました。そこで、ROG-MAXIMUS-XI-HERO-WIFI-ASUS-1005.CAPをM11HW.CAPという名前に変更して、USBメモリに入れました。ちなみに現在の設定は、工場出荷状態に加えて、

  • Intel (VMX) Virtualization Technology –> [Enabled]
  • Memory Remap –> [Disabled]
  • iGPU Multi-Monitor –> [Enabled]
  • Connectivity mode (Wi-Fi & Bluetooth) –> [Disabled]
  • XHCI Hand-off –> [Enabled]

です。

SSDTで対応する

追記です。こちらの記事で紹介しましたようにSSDT-AWAC.amlを使っても解決しました。

まとめ

ということで、ACPIのタイマー・アラーム機能を使うようになった最新のマザーボードでは、BIOSで古い形式のRTCを使うように設定する必要があります。ASUSのBIOSメニューでは、Advanced–>PCH Configuration–>System Time and Alarm SourceをLegacy RTCにすれば良いです。この設定ができない場合は、config.plistにパッチを書き込むことでも解決します。このマザーボードではどういうわけか、BIOSでLegacy RTCを選択できませんでした。そこで、パッチを当ててまで新しいBIOSを利用する必要はないと判断して、古いBIOSに戻しました。BIOSをダウングレードするために、マザーボードのFlackback機能を使用しました。

今回、マザーボードにとってBIOSを復活させる機能が重要だと思い知らされました。USB BIOS Flashbackならば、BIOSが徹底的に破壊されても復活できると思われます。再びマザーボードを買い換えるときには、この種の機能を重視していきたいと思います。