AliExpressから届いた格安の5250U搭載小型ベアボーンPC XCY X36にmacOS Catalina 10.15 をインストールしました。macOSは一応すぐに動いたのですがiGPUがいまだに動きません。その経緯を書いておきます。こちらの製品です。
AliExpress.com Product – Mini PC
前回はこのベアボーンPCを分解して中身を確認しました。前回からずいぶん間が空いてしまいました。iGPUのドライバーが動かなくて難航してます。もう少し頑張ろうと思ったのですが、6100T搭載メーカー製中古デスクトップの方が性能、価格、サイズ、メンテナンス性で勝っているのでこちらはお蔵入りにします。ということでドライバーが動かず、描画加速が効かない状態ですが、この先進捗しなさそうですので、現状報告しておきます。
Table of Contents
メモリーとSSDを用意する
ベアボーンなのでメモリーとSSDが必要です。ケーブルが筐体からはみ出しますが、2.5インチSSDも接続可能です。メモリーは1.35Vの低電圧タイプDDR3 S.O.DIMMが必要です。1本しか取り付けられず、8GBが最大です。1333MHzと1600MHzで価格は変わらないので1600が良いと思います。ソケット取り付けSSDはM.2に移行してしまって、mSATA SSDは国内サイトではあまり見かけなくなりました。AliExpressならまだ品数があり少し安いです。ちょっと試すつもりなら120GBや250GBで良いと思います。KingSpecというKingstonに紛らわしいブランドでお手頃な製品がありました。
BIOSを設定する
メモリーとSSDを取り付ければPCとして機能します。さらにACアダプター、キーボード、トラックパッド、HDMIケーブル(の先にディスプレイ)を取り付けました。電源を入れたら、American Megatrendsのロゴが表示され、その後、めでたくBIOS画面が表示されました。お馴染みのAptioブランドのBIOSです。最近の大手マザーボード製品と違って、昔ながらのシンプルな表示です。CPUは鉛筆書きの番号通り、i5-5250Uだったようです。良かったです。
とりあえずはF9を押して、設定を工場出荷状態に戻します。次に、BIOS設定をします。BIOS設定に関しては、こちらの記事もご覧ください。
BIOSメニューを順番に見て、変更すべきところを探します。まずはIntel Anti-Theft Technologyという機能の設定があり、Enabledになっていました。検索すると、ネットに接続しない状態が指定日数経過すると盗難モードに入り、マザーボードをロックする機能です。しかしすでにサービス終了しているようです。このクラスのマザーボードに、BIOSからネット接続する機能は無いと思われますので、Windowsアプリと一緒に動く機能かと思います。ロックする部分をBIOSが担当しているだけでしょう。なのでmacOSで使う限りは無害と思います。でもトラブルの予感しかしませんのでDisabledにしておきました。
次に搭載シリアルポートの設定がありました。前回の分解で分かったように、マザーボードにはシリアルポート用のヘッダピンが2セットあります。BIOSメニューにもSerial Port 1と2の設定があり、この2セットに対応しているようです。BIOSではそれぞれをon/offできます。シリアルポートはmacOSではサポートされていませんし、これが有効になっていると起動に失敗した経験もあります。そうでなくても電気の無駄なので、両方ともDisabledにしておきます。
iGPU関連の設定に、DVMT Pre-Allocatedという項目があります。初期設定は32MBなのですが、macOSでは64MB以上にしないと動かないとのことです。少し余裕を持たせて96MBにしておきました。実際に32MBの設定で試したところ、Cloverの起動画面が出た後、グラフィックスが切り替わるタイミングで再起動してしまいます。ちなみにBIOSでこの設定が可能なのは幸運らしいです。ノートPCのBIOSなどではこれが設定できないこともあるそうです。多分、変な設定をして動かなくなるとサポートが面倒なので、設定項目から除外してあるのかと思います。この製品はAptioのオリジナルのままのBIOSを使っているので、この設定も可能なのだと思います。
初期設定ではVT-dがEnabledでした。他の設定でリカバーできるらしいですが、ここはHackintoshの定石なので、Disabledに設定しました。
これは単に不便なだけですが、デフォルトではキーボードがNum Lock状態になります。以前紹介したテンキー無しのトラックパッド付き無線キーボードを使うと、右の文字キーがテンキーになってしまい不便です。macOSが起動してしまえば関係ないですが、UEFI Shellでの操作やCloverでの設定作業に支障が出ます。そこでBootup NumLock StateをOffにしました。
まとめると、初期設定から変更した点は以下の5箇所です。
- Intel Anti-Theft TechnologyをDisabledにする
- 2個のシリアルポートをDisabledにする
- DVMT Pre-Allocatedを96MBにする
- VT-dをDisabledにする
- Bootup NumLock StateをOffにする
インストール用USBメモリーを作る
次に、このX36で
- macOSユーティリティを起動して
- mSATA SSDをフォーマットして
- macOSをインストールする
ことが可能なUSBメモリーを作成します。大まかな手順はこちらをご覧ください。
手順をまとめると、
- USBメモリーをフォーマットする
- createinstallmediaコマンドを使ってMacで起動するmacOSインストーラ作成する
- CloverインストーラでブートローダとUEFIドライバを入れる
- 必要なkextを入れる
- config.plistを作成する
このUSBメモリーを作成する手順で一番難しいところは、USBメモリーのESP部分を作成する部分のステップ3, 4, 5です。特にconfig.plist作りが難しいです。でもこれさえできれば、Hackintoshはほとんど完成したも同然です。まずはCloverインストーラでブートローダーとUEFIドライバを入れます。今回のビルドで使用したUEFIドライバは、以下です。VirtualSMCを使ったので、VirtualSmc.efiを手作業で入れています。
- ApfsDriverLoader.efi
- EmuVariableUefi.efi
- FSInject.efi
- OsxAptioFix3Drv.efi
- VBoxHfs.efi
- VirtualSmc.efi
また使用したkextは以下です。
- AppleALC.kext Lilu.kext
- RealtekRTL8111.kext
- USBInjectAll.kext
- VirtualSMC.kext
- WhateverGreen.kext
USBInjectAll.kextは不要だったかもしれません。LANチップがRealtekだったのでそれ用のkextを入れました。この後、難関のconfig.plist作りをします。
暫定Config.plistを作る
こちらでHaswell用のconfig.plistの作り方の解説を載せておきました。
今回はBroadwellなのですが、数が出ていないCPUなのかCorpnewtさんのガイドにはありません。でもHaswellに近いCPUなので、ほとんどHaswell用のconfig.plistで動作すると思いました。
機種ID
SMBIOSは、5250U搭載Macに合わせることにしました。該当するMacは、MacBookAir7,1, MacBookAir7,2, iMac16,1, iMac16,2です。どれもiGPU使用機種ですし、どれでも良いと思います。完成すればデスクトップマシンなので、iMacが近いかと考えて、iMac16,1にしました。Clover Configurator.appでSMBIOS部分を作り、Corpnewtさんのガイドのconfig.plistのSMBIOS部分と差し替えます。Clover Configurator.appが作成してくれたSMBIOS部分をそのままコピーすると長ったらしいので、最小限にします。足りない部分はCloverが補ってくれます。シリアル番号、ボードシリアル番号、SmUUIDはこのサンプルをまねずに必ず独自の値を設定してください。重複した値を使うとアップルから拒否される可能性があります。
<key>SMBIOS</key> <dict> <key>BoardSerialNumber</key> <string>C027456004NGH34JC</string> <key>Mobile</key> <false/> <key>ProductName</key> <string>iMac16,1</string> <key>SerialNumber</key> <string>C02VNYZ7GF1J</string> <key>SmUUID</key> <string>483F7DE7-6698-4EAC-B7A3-6B39FC4264F6</string> </dict>
サウンドの設定
音を出すためにDevices->Audioのインジェクトするレイアウト番号を1にしました。
<key>Audio</key> <dict> <key>Inject</key> <string>1</string> </dict>
こちらのページ
によるとRealtek ALC892の場合は、1, 2, 3, 4, 5, 7, 12, 15, 16, 17, 18, 28, 31, 90, 92, 97, 99などの選択肢があるようですが、大体1で良いようです。
iGPUの設定
WhateverGreen.kextを使う場合、iGPUの情報はDevices->Propertiesに書きます。
<key>Devices</key> <dict> <key>Properties</key> <dict> <key>PciRoot(0x0)/Pci(0x2,0x0)</key> <dict> <key>AAPL,ig-platform-id</key> <data>AwAiDQ==</data> </dict> </dict> </dict>
としてig-platform-idを指定しています。場合によってはconfig.plistに何も設定しなくても、WhateverGreen.kextがとりあえず動作する値を割り当ててくれることが多いです。しかし、今回の構成ではconfig.plistでの設定が必須だったようで、最低でもig-platform-idの設定がされていないとmacOSの起動が途中で止まってしまいました。ig-platform-idに何を設定すべきかは、正解があるわけでなく、試行錯誤で探る場合もあるようです。以下の情報
によると、Broadwellの場合のdevice-idとig-platform-idは
Gen 5: Broadwell (Intel HD Graphics 5300-6300) - device-id: 0x0BD1 0x0BD2 0x0BD3 0x1606 0x160E 0x1616 0x161E 0x1626 0x1622 0x1612 0x162B - AAPL,ig-platform-id (desktop): 0x16220007 (default) - AAPL,ig-platform-id (laptop): 0x16260006 (default)
であると、書かれています。ig-platform-idは、0x16220007または0x16260006が良いようです。Hackintool.appで調べてみると、0x16260006は5250UとそのiGPUで動作するiMac16,1, MacBookAir7,1, 7,2で使われる値のようです。おそらく実機で調べた結果だと思います。いかにも良さそうです。0x16260006を使う場合は、これの並びを逆順0x06002616にし、base64変換します。すると、
% echo -en "\x06\x00\x26\x16" | base64 BgAmFg==
になります。この値を採用する場合、Propertiesの項目は、以下となります。
<key>Properties</key> <dict> <key>PciRoot(0x0)/Pci(0x2,0x0)</key> <dict> <key>AAPL,ig-platform-id</key> <data>BgAmFg==</data> </dict> </dict>
ということで、ig-platform-idに0x16260006を採用した場合のconfig.plistは以下のようになりました。
iGPUドライバを諦める
実は、ig-platform-idを1番正しい値だと思われる0x16260006にした場合、画面が正しく出ません。-vオプションではずっと文字画面のままです。時々OSが順調に動いているらしいメッセージが出ます。実際、macOSをなんとかインストールして、LANを有効にした状態でリモートデスクトップ接続すると、macOSは正しく動作していることが確認できました。ディスプレイドライバの問題です。
調べてみたところ、iGPUを使おうとする場合のよくあるトラブルのようです。iGPUのドライバが機能しようとしているものの、他の設定が不十分で正しく表示されていない様子です。もう少し頑張ればなんとかなる状態です。一方で、ig-platform-idを全く間違った値に設定すると、ドライバー自体が起動に失敗します。その場合は標準的なデフォルトのディスプレイとして認識されるので、画面表示が出ます。ただし、グラフィックス加速が効いていないので、動作が遅く不安定で、macOS画面の半透明などの視覚効果が効きません。今回の例ですと、Hackintoolに登録されていない1番違いの0x16260007、つまりbase64ではBwAmFg==を使うと、この状態になり、一応の表示が行えます。以下はこの状態で進めました。
macOSをインストールする
このUSBメモリをX36に挿して起動します。
無事起動して、macOSユーティリティが動きました。
USBメモリーで起動したmacOSユーティリティから、mSATA SSDをフォーマットします。ここでは伝統に従ってMacintosh HDという名前をつけました。これにmacOSをインストールします。
インストール途中で再起動しますが、その時は、Boor macOS Install from xxxxという項目を選択します。
インストールが終了すれば、USBメモリ、mSATA SSDのリカバリーパーティション、そしてインストールしたmacOSの本体の選択肢が現れます。
これでUSBメモリーから起動して、本体のmSATA SSDから起動するようになりました。USBメモリーのESP部分をmSATA SSDにコピーすれば、mSATA SSDから起動するようになります。
macOSを使ってみる
前述のようにグラフィックス加速は効いていませんが一応の操作は可能です。グラフィックスはIntel HD Graphics 6000と認識されていますが、グラフィックスメモリが31MBしか無いことになってます。
サウンドは動いています。X36のオーディオ出力ジャックは、内蔵スピーカーに対応しているようです。光デジタル出力ポートも動いているようですが、対応機器を持っていないので確認できませんでした。
GeekBench 4を動かしてみたところ、マルチコアのスコアは5500くらいでした。
Geekbench Browserで他の人のベンチスコアを検索したところ、5250U搭載iMac (21.5-inch Late 2015)のGeekbench 4スコアはこの程度の値で、妥当な結果です。
まとめ
とりあえずは動作しましたが、iGPUのグラフィックスドライバが動いていないので、未完成です。Hackintool.appによると、ig-platform-idを変更するだけでなく、devicd-idを設定したり、コネクタがデフォルトでDPであるのを実装に合わせてHDMIに変更したり、フレームバッファの各種フラグを変更するなど、いろいろな選択肢があるようです。手当たり次第試してはみたのですが、正解は見つけられていません。組み合わせが多すぎて全部は網羅できていないためかもしれないです。もしくは、iGPU周りの設計がMacとは違う構成になっていて、動作困難な機種だったのかもしれません。冒頭に書きましたように、メーカー品の中古デスクトップが優秀だったので、こちらは当面お蔵入りにすることにしました。
iGPUは本当に難しいですよね。
とくにBroadwellは、10.12.4までは比較的動かしやすいのですが
10.12.5からドライバに手が入ったらしく、それ以降はスリープから起きません
tonyフォーラムでも解決不能とタグが付いてることが多いです
私も5200uの乗ったThinkPadを使ってますが、いまだに10.12.4です。。。
そうなのですか。有用な情報ありがとうございます。
素人考えではiGPUは同じダイの中でCPUコアと接続されているから、CPUが同じなら配線も同じで互換性高いと思っていたのですが、マザーボード側で色々バリエーション(配線?モード選択?)があり得るということなのでしょうかね。
ノート(ASUS UX305FA)の話ですので状況が異なるのかもしれませんが
DVMT Pre-Allocatedが32MB以外ではクラッシュする機器もあるようです。
最終的に以下で動作しています。
・DVMT Pre-Allocated=32MB
・SMBIOS=MacBookAir7,2
・ig-platform-id=0x16260006
・WhateverGreen.kextでframebuffer-stolenmem=0x01000000(FrameBuffer=16MB)
・WhateverGreen.kextでframebuffer-fbmem=0x00900000(CursorBytes=9MB)
0x16260006で動きますか。
記事の場合だと32MBではiGPUドライバに切り替わったところで再起動します。stolenmemなどの設定は、Pre-Allocateを増やすメニューがBIOSに無くて32MBしか選択できない場合に、メモリをやりくりする設定なのではと推測してました。試してみます。
私の場合はノートなので、液晶につながる接続方法が一般とは違うのが原因のようです
外部端子(HDMI)につなぐとスリープから起きてきますので。
一部のデスクトップ型のBroadwellの場合は、モニタを認識させるオプション(名前は忘れました)
でモニタの規格・性能を定義したものをMacOSに教えてあげると解決することがある
と読んだことがあります
EDIDというものでしょうか?まだ試していません。複数のデイスプレイで挙動が同じなので、関係ないかなと思っていましたが、そのうち試してみます。
>モニタを認識させるオプション(名前は忘れました)で
>モニタの規格・性能を定義したものをMacOSに教えてあげると
>解決することがあると読んだことがあります
これはEDIOのことでしょうかね?
ノートPCにくっ付いてる液晶のEDIOをCloverに設定してみたいなら、SwitchResXのデモ版でも、
システム環境設定>SwitchResX Preferences>左メニュー: UnKnown Monitor>Export EDIOボタン
からで出てきたRaw Dataのテキストファイルの中身で、2ブロック目の<>に挟まれた中身の8桁16進を全てコピペでClover>Graphics>Custom EDIO[Hex]に流しこんで使ってます。
SwitchResX
https://www.madrau.com/
そうです、EDIDのオプションですね
どうやら一部環境ではEDIDをLinux等のツールで抜き出して
MacOSの内部情報に登録することで正常に動き出すことがあるみたいです
あと液晶モニターを取り替えたら動いたとか・・・
iGPUとモニターの関係に何かあるのかなと考えています。
tonyの有名人RehabManさんがi5 5200u + HD5600の小型デスクトップを
問題なく運用していると言っていたのでおそらくは解決方法はあると思います
とても参考になりました。
ThinkPad x230 と x240 は、Catalina があっさり動いたので(Wifi以外)、最近はどれでも動くと思ってました。
この記事は読んで、x250 の時は、慎重にしようと思ったしだいです。
1920×1080のIPSパネルに換装したX240(Haswell)を所有していますが
HighSierra以降でWebGLのサイトで画面が乱れるので
framebuffer-stolenmemを16MB、framebuffer-fbmemを9MBに
変更して正常に動作しています。
VAIOPro13(Haswell)でも同様、1920×1080より下の解像度では
問題ないため、高解像度の時は色々細工しないといけないようです。
WhateverGreen は、これほど細かく設定できるようですね。
なぜか設定なしで動いたので、ドキュメントを見てなかったのですが、これだけあれば、やりようによっては動くってことでしょうか。
Radeon と思ってましたが、いろいろ試してみようと思います。
みなさん、コメントありがとうございます。EDIDとframebuffer設定を試してみます。
bootmacosさん
釈迦に説法となるレベルで恐縮です。また、対象となる環境(Skylake、Coffelake)も異なるので
一概には言えないと思いますが、当方では、framebufferを丁寧に設定することでIGPUが正常に
動くようになりました。
IORegistory情報にframebuffer情報が表示されていない状態(framebuffer0等のノードが表示
されていない)だと映像出力はできるものの、アクセラレータが機能しない状態ですが、platform-id、
device-id、framebuffer-busid等明示的に設定(busidは総当りでしたがw)することで、正常に
動かすことができました。
ありがとうございます。framebufferの設定はDVMT Pre-Allocatedがデフォルトの32MBのまま変更できないBIOSの対応策だと思いこんでいたので試していませんでした。今度試してみます。
Hackintool.appのDVMT pre-alloc 32MBパッチを使うと、fbmemを0x00900000に、stolenmemを0x01300000に設定してくれるので、これを使ってみましたが症状は同じでした。あ、でもpre-allocを増やしていたので、今度は32MBに減らしてみます。
framebuffer関連の設定だと画面が乱れたりであって、画面が表示されない現象とは
異なるように思います。
私の書き方が悪かったのですが、DVMTを32MB以外にするとクラッシュする変な
PCもあります、ちなみにこの機種はこんな設定で動きました、程度のつもりでした。
接続はHDMIだと思いますが(VGAは動かないはず)ig-platform-id=0x16260006だと
HDMIが未定義(https://www.it72.com/12550.htmより)のようですので
ig-platform-idのトライアンドエラーやEDIDの強制セット等をお試し頂ければ。
そうでしたか、ありがとうございます。Hackintool.appによるとig-platform-id=0x16260006だとDisplayPortになるらしいので、そのパッチ機能で、HDMIに変更するパッチも試してはいます。ig-platform-idはかなり試し尽くしたので、次に試すのはEDIDかな。
ども、Boot MacOSさん、
個人的にはSMBios MacBookAir7,1でDVMT Pre-Allocated 64MとEDIDを試してみたい感じですね。。。
MacBookAir7,1とはCPUとクロックししてDDR3 メモリクロックも同じですよね?
こっちの方が表示関連の設定を見極めるのに良さそうな気もしますね。
ここまで似ていてダメなら別の問題という考えもできますよねぇ。。。
iGPUのみを表示で使うときって、SMBiosで使用するMacにくっ付いてるの液晶解像度とドライバーが前提となる決め打ちみたいな設定になってて、それが表示できてから、高解像度4Kのパッチなどを導入するとかの流れを作る方がよいのかなっていう気になってきています。
ありがとうございます。その方向で試してみます。