LattePanda AlphaでmacOSを起動する

最近発売されたシングルボードコンピュータLattePanda Alphaは、Intelの第7世代Core m3-7Y30を搭載しています。MacBook 2017の最下位モデルに搭載されているm3-7Y32のクロック違いバージョンです。公式にはWindowsとLinuxをサポートしていますがmacOSがブートできないはずはありません。インストールの方法を紹介したビデオも複数公開されています。そんなLattePanda Alphaがいよいよ国内で発売になりました。

これにmacOSをインストールすると以下が可能になりました。

試していない機能は以下です。でも多分動くと思います。

  • M.2経由のNVMeタイプSSD
  • アナログ音声

LattePanda Aplhaの仕様

LattePanda Alphaの特徴は、 m3-7y30プロセッサ搭載ワンボードコンピュータに、サブプロセッサとしてArduinoが搭載されていることです。Arduinoの入出力ピンも基板の縁についています。macOSからArduino IDEでプログラミングして、LEDを点滅させたりできるわけです。仕様を書き出しておきます。

  • CPUはIntel 第7世代 Core m3-7y30で1.0-2.6 GHz 2コア/ 4スレッドです。MacBook 2017搭載のm3-7Y32は、クロックが1.1-3.0 GHzである以外は、全く同じCPU仕様です。デバイスIDも同じです。
  • GPUはIntel HD Graphics 615 900 MHzです。これもm3-7Y32と同一です。Hackintoshとして互換性が高いと思われます。
  • RAM:LPDDR3-1866 デュアルチャンネルのRAMを8GB搭載しています。MacBookの標準モデルと同じです。
  • ストレージ(補助記憶装置)の有無により2種類のモデルがあります。無しモデルがAlpha 800, 有りがAlpha 864です。Alpha 864は64GBのeMMC (embedded Multi Meia Card: 基板に直接半田付けするSDカードのような規格) を搭載しています。ただしeMMCはmacOSで使用できないそうです。
  • 無線ユニットは、Wi-Fi:802.11 ac(2.4 G & 5 G)とBluetooth 4.2をサポートしています。インテルのモジュールなのでmacOSからは使用できません。半田付なので交換することもできません。
  • M.2ソケットが基板裏面に2個あります。1つはMキー(PCIe 4x NVMe SSD、SATA SSD用)で、もう1つはEキー(PCIe 2x USB2.0、UART、PCM用)です。Eキーが付いているところが素晴らしいです。ここにmacOS互換の無線ユニットを取り付けられます。Hackintoshのために用意されたソケットのようなものです。
  • ギガビットイーサネット多分インテル製Reaktek製でmacOSから使用可能です。
  • USBポートは3 x USB 3.0 TypeA、1 x USB Type C(PD、DP対応 USB3.0)
  • ディスプレイ出力はHDMI。macOSから音声も出せます。
  • コプロセッサ:Arduino Leonardo搭載。LeonardoはUSBキーボード・マウスのエミュレーションもできるので、既存のmacOSアプリとの連携させるのも面白いと思います。
  • サイズ:115 × 78 mm

販売店と機種選定

国内ではスイッチサイエンス秋月電子が販売しています。LattePandのサイトが紹介するオンラインショッピングページで買うこともできます。AmazonにもLattePandaの代理店が出店しているので、そのうち買えるようになるかと思います。

上で述べたように、LattePanda Alphaには800と864の2つのモデルがあり、違いは補助記憶装置の有無です。864は64GBのeMMCを搭載しています。eMMCは半田付けSDカードのようなチップなので、SSDより低速でHDD程度の速度です。800と864の価格差は秋月で5,100円、本国でも3,300円くらいするので、差額で小容量M.2 SSDが買えてしまいます。その上、こちらの動画のコメントによるとeMMCはmacOSから使用できないようです。SDカードは専用のシリアルインタフェースを採用しているので、ノートPCのHackintoshでも大抵は動きません。eMMCも同じ理由でmacOSから認識できないのだと思われます。ということでmacOSをインストールするならeMMC無しモデルが適していると思います。LattePanda Alpha 800は秋月で40,600円本家サイトではACアダプタ・送料込み298ドルです。

macOSをインストールする

ドライブを用意

ドライブ無しのモデルなのでM.2 SSDを調達します。SSDは、NVMeでもSATAでもどちらでも機能します。現状ではSATAの方が安いですし、あまり性能を追求する場面でもないので、安いM.2 SATA SSDを用意しました。2280タイプだとネジ穴がピッタリ合います。

BIOSの設定

LattePanda Alphaを起動してBIOS設定画面に入ります。だいたいは工場出荷時状態でokです。Intel VT-D Techはデフォルトで有効でしたのでdisableにします。次で説明するESP内容を配布しているサイトでは、HDMIから音を出すにはiDisplay Audioをenableにしなければいけないとありますが、これもデフォルトでそうなっていた気がします。

ESP内容の入手

現行のMacBookに限りなく近い構成ですが、macOSを動かすには色々とパッチを当てないといけないようです。Z390マザボで使ったようなシンプルなconfig.plistでは起動しませんでした。検索すると色々な人がmacOSインストールを試していました。以下のサイトではESPの内容を配布してくれていましたので、ESPの一式をダウンロードしました。

インストール用USBメモリ作成

別のmacOSマシンで、App StoreからmacOS Mojaveインストール.appをダウンロードします。この中にあるcreateinstallmediaコマンドを使い、インストール用USBメモリを作成します。これが起動することをmacOSマシンで確認しておきます。

次に、このUSBのESPに、前述のサイトからダウンロードしたESPの中身をコピーします。中身のコピー先がよくわからない場合は、一旦CloverをESPにインストールして、そのCLOVERディレクトリをダウンロードしたものと入れ替えれば良いです。ダウンロードしたものに入っているCloverは多分最新版では無いので、最新のCloverインストーラを使ってインストールし直しておくのも良いと思います。

Lattepandでインストール用USBを起動

LattePandaにUSBメモリを接続して、BIOSで起動ドライブをこれに設定して起動します。ESP一式が揃っていますので難なく起動します。ここからM.2 SSDをフォーマットしてmacOSをインストールします。インストール終了したら、USBのESPを使ってSSDのmacOSを起動します。

M.2 SSDのESPを構成する

macOSが起動したM.2 SSDのESPに必要ファイルを入れます。まずはCloverインストーラでCloverをインストールしても良いです。USBのESPからconfig.plistやkext類をM.2 SSDのESPにコピーし、最終的には同じ状態に構成します。LattePandaを再起動して、BIOSでSSDを起動ドライブに設定すれば、macOSが起動します。

Cloverを設定する

入手したconfig.plistには、コメントアウトされている記述も多く、削除してスッキリさせたい気もしました。ただ、色々チューンされた結果のようで、あまり変更しない方が良いようでした。

ただ、SMBIOSは新しく設定した方が良いと感じました。少なくともシリアル番号はオリジナルな値にしておくべきでしょう。上記サイトで配布されている設定では、なぜかMacBook9,1の設定になっています。Core m3-7Y30に類似したCore m3-7Y32はMacBook10,1ですので、その方が何かと互換性が良くなる気がします。CPUの世代の古い機種に設定してある理由は何かあるのかもしれませんが、気持ちよくMacBook10,1に設定しました。シリアル番号やSmUUIDも新しくします。詳しくはこちらをご覧ください

SIPを設定するCsrActiveConfigは0x67になっています。0x00にしたかったのですが、起動しませんでした。色々試みたところ0x02が限界のようです。Filesystemへの変更を許可する設定です。起動時にどこかで制限ディレクトリ内容を更新するような動きがあるのかもしれません。

SystemParametersにはCustomUUIDの指定があります。これもuuidgenコマンドで新たに生成した値に変えておいた方が良いと思います。ただ、この項目はなくてもCloverが生成してくれますし、それに失敗した場合はSmUUIDが使われるようです。SMBIOSの設定をしておけば、これは不要かもしれません。

また手元の環境では、「システム終了…」を選んでも、すぐに再起動してしまう不具合がありました。config.plistにFixShutdownをtrueにする設定を追加したところ、これは解決しました。

<key>ACPI</key>
<dict>
        <key>DSDT</key>
        <dict>
                <key>Fixes</key>
                <dict>
                        <key>FixShutdown</key>
                        <true/>

配布されているdrivers64EFIには以下のefiドライバが入っています。

  • ApfsDriverLoader-64.efi
  • AppleImageCodec-64.efi
  • AppleKeyAggregator-64.efi
  • AppleKeyFeeder-64.efi
  • AppleUITheme-64.efi
  • AptioMemoryFix-64.efi
  • DataHubDxe-64.efi
  • FirmwareVolume-64.efi
  • FSInject-64.efi
  • PartitionDxe-64.efi
  • SMCHelper-64.efi
  • VBoxHfs-64.efi

このうち、

  • AppleImageCodec-64.efi
  • AppleKeyAggregator-64.efi
  • AppleKeyFeeder-64.efi
  • AppleUITheme-64.efi
  • FirmwareVolume-64.efi

はFileVaultのためのドライバですので、FileVaultを使わないなら(多分使わないと思いますので)外しても良いと思います。ちなみにkext類は以下がインストールされています。LANはRealtekだったようです。

  • AppleALC.kext
  • AppleHDA.kext
  • FakePCIID_Intel_HDMI_Audio.kext
  • FakePCIID.kext
  • FakeSMC.kext
  • Lilu.kext
  • RealtekRTL8111.kext
  • USBInjectAll.kext
  • WhateverGreen.kext

動作と性能の確認

以上で問題なく起動しました。ESP内容をダウンロードしてきたので楽でした。スリープもしますし、シャットダウンも正常です。LANも動きます。音声はHDMIディスプレイから出ます。CPUを確認するコマンドをターミナルから入力すると以下のようにCore m3-7Y30であることが確認できます。

$ sysctl -n machdep.cpu.brand_string
Intel(R) Core(TM) m3-7Y30 CPU @ 1.00GHz

WiFiはインテルチップなので動きません。Bluetoothは動いているような表示になりますが、ペアリングがうまくいきませんでした。アンテナを接続していないので、電波が弱いだけの問題かもしれません。そのうち確認します。Bluetoothは動きます。詳細はこちらをご覧ください。

GeekBenchで測定したところ妥当な結果でした。本物のMacBook10,1のスコアよりは多少悪いのですが、クロックが遅い下位CPUなのでこの程度と思います。クロック差程度の違いです。GeekBenchのサイトにはCore m3-7y30搭載のMacBook10,1という謎仕様MacBookのスコアもいくつか上がっています。どう見てもLattePanda AlphaでmacOSを動かしているお仲間の仕業のようです。

Intel Power GadgetでCPUの動きを確認しました。負荷に応じてクロック数、消費電力、温度が変化するので、電力制御も機能している様子です。アイドル時の消費電力はわずかの1.3wです。IvyBridgeモバイル版Core i3 3217U搭載のNUCですら調整しても2.7wでしたので、その半分の消費電力です。低消費電力macOSサーバとして適していると思います。

Arduinoを使う

開発環境を用意する

LattePandaの特徴はArduinoが搭載されていることです。Aurduino Leonardoが搭載されたmacOSマシンは他にはありませんので、注目すべきところです。Arduinoは自作愛好者向けのプログラミングが簡単な組み込みマイクロコンピュータです。そのデジタル・アナログ入出力ピンがボードに搭載されていて、センサー、LED、モーター、リレーなどいろいろな部品を接続できます。ArduinoのチップとメインのCore m3はUSBで接続されています。要するにMacBookにUSB接続でArduino Leonarodoを接続した状態になっているわけです。ちなみにArduino Leonardoはこんな製品として売られています。少し安めの互換品も多数出回っています。

Arduinoを使うには開発環境Arduino IDEをここからダウンロードします。寄付を募られますが、無料でも使えます。起動したら、まずは「ツール」から「ボード」を選択します。Arduinoには多くのモデルがあって、ポート番号の割り当てや多少命令系統が違います。ここでは搭載されているArduino Leonardoを選択します。

次に「ツール」「シリアルポート」からシリアルポートを選びます。選択肢の中にArduino Leonardoがありました。内部でUSB接続されていることが確認できます。これを選択します。

これであとはプログラム(Arduinoではスケッチと呼んでいます)を書いて、ダウンロードすれば良いです。

Lチカする

開発環境が整ったら、まずは最も簡単なプログラムを書いて動作確認したいところです。プログラミング言語では、”Hello World!”という文字を画面に表示するプログラムがよく使われます。マイクロコンピュータ開発環境では、接続したLEDをチカチカ点滅させるプログラム、略してLチカがHello World!みたいな存在です。Lチカを書いてみましょう。新規スケッチウィンドウを開きます。Processingという開発環境を使ったことのある人なら、馴染みのあるウィンドウです。Processingを真似て作られたので似ています。ちなみにProcessingの裏ではJavaが動いていますが、ArduinoではC++コンパイラが動きます。

新規ウィンドウにはプログラムの雛形があります。setupとloopという二つの関数があります。setupは起動時・リセット時に1回だけ実行される関数で、loopはその後、無限に繰り返し実行される関数です。setupに初期化関係の処理を書いて、loopに本体を書きます。Lチカを以下のように書きました。

最初に整数型(しかありませんが)変数としてLEDを宣言して、値を13にしています。Arduinoの入出力ポートの13番を使おうとしています。他の番号でももちろん良いです。ちなみに13番は、大抵のArduinoで、ボード上に搭載したLEDに接続されています。LattePanda Alphaでも電源LEDの隣のLEDに接続されています。なので、LEDを接続しなくてもテストができるので楽です。

setupでは、13番ポートを出力モードにしています。この手のマイクロコンピュータは、ピンを有効利用するために、入力にも出力にも切り替えて使えるように設計されています。なので、最初にどちらかに設定しておく必要があるのです。loopでは13番ポートに、最初に電圧を出力し、1000ミリ秒待ち、次に電圧を切り、次にまた1000ミリ秒待つプログラムを書きました。1秒おきに点灯と消灯を繰り返すプログラムで、これでLEDがチカチカします。

ウィンドウの左上にある矢印アイコンをクリックすると、スケッチがコンパイルされて、Arduinoにダウンロードされます。ダウンロード後にArduinoがリセットされて、スケッチが実行されます。LattePanda Alphaの角にある青い電源LEDの隣に赤いLEDがあります。その下にD13と書いてあります。デジタルピンの13番に接続されたLEDという意味です。これが1秒ごとに点滅するはずです。

Arduinoの入出力ポートには、この他、スイッチなどを接続するデジタル入力、アナログ入出力、シリアル接続など様々な機能があります。センサやアクチュエータ、ディスプレイなどを接続することができます。Lチカができればあとは無限の可能性があります。

USBデバイスにする

Arduino LeonardoはArduinoシリーズの中でも高機能なボードです。USBコントローラをチップに内蔵しているので、USBキーボードやUSBマウスの機能を実現することもできます。ここでは、Arduino LeonardoをUSBマウスとして機能させてみます。次のようなスケッチを用意します。

最初にMouse.hをインクルードしています。USBマウス機能を使うためのヘッダファイルです。setupではMouse機能を起動させています。loopの中ではmove関数を使って、x, y方向に30画素進ませて、次に逆方向に30画素戻しています。これをコンパイルして動かすと・・・マウスポインタが右下に少しだけ移動し、0.2秒後に戻ってきて、再び0.2秒後に右下に移動します。とっても邪魔なプログラムが完成しました。頑張って0.2秒のうちにスケッチウィンドウに文字カーソルを置いて、無害なプログラムに書き直して(最終的にはLチカに戻すと良いです)、0.2秒のうちに頑張ってコンパイル・ダウンロードアイコンを押しましょう。

これは邪魔なだけで何の役にも立たないプログラムでした。でもうまく使えば、例えばArduinoのピンにスイッチをつけて、そのスイッチを押すと、「現在のマウスポインタを中心に300×300画素部分をドラックして選択してくれる機能」、などが実現できます。多少便利かもしれません。

ポストインストール

以上のように問題なくmacOSが動きました。この後は、インストール後の調整をして、少しづつ快適な環境に設定していけば良いです。

WiFi/Bluetoothの設定

こちらで紹介しています。オンボードのBluetoothは動きます。WiFiが必要ならばM.2ソケットに挿すWiFiモジュールを調達します。

USBの設定

こちらで紹介しています。macOSの15個制限で、USB 3 Type-Aポートの一つが使えません。これを使えるようにするために、明らかに不要なUSBポートを除外する設定をします。

バッテリー設定を消す

機種をMacBookにしたので当然なのですが、「システム環境設定…」「省エネルギー」の設定で、「電源アダプタ」と「バッテリー」の2つのタブが表示されます。「電源アダプタ」タブがデフォルトで表示されるので、こちらで設定しておけば問題ないのです。でもconfig.plistのSMBIOS設定でバッテリーのタブを消すことができます。以下をご覧ください。

LattePanda Alphaの使い道

もともとLattePanda AlphaはWindowsやLinuxが動いてArduinoで制御できるボードとして売っています。Raspberry Piが近いライバルですが、あちらよりはかなり高性能で、しかもWindowsが動くところが売りです。Raspberry PiはLinuxしか動きません。さらには、そこでmacOSが動くのですから、面白いガジェットだと思います。とはいえその面白さが心に響く人はそれほど多くないかもしれません。何が嬉しいのか考えてみました。

  • 超小型・定消費電力のmacOSコンピュータ。ディスプレイ裏に取り付ければ、iMacみたいなコンピュータが作れます。定消費電力なので常時電源を入れるサーバ向きかもしれません。もしくは、デジタルサイネージのような使い方も良いかもです。近い位置付けのコンピュータにIntel NUCがあります。NUCには標準のSATAソケットがついているので大容量のHDDを接続できます。それができないのでLattePanda Alphaはファイルサーバには向いていないです。一方、最近のNUCはWiFi/Bluetoothの無線ユニットが半田付けで、無線ユニット用のソケットがありません。macOSと互換性の高い純正無線ユニットは使えないと考えて良いです。LattePanda Alphaには純正無線ユニットが変換アダプター経由で接続できるEキータイプのM.2ソケットが搭載されています。本体ボードに無線ユニットが搭載されているのに、別にEキーソケットを用意するというのは変わった設計のような気がします。SSD用のMキーのソケットをもう一つ用意しても良いのにと思います。EキーをつけてくれたのはmacOSに配慮したとしか思えません。
  • Arduinoを使えるmacOS環境がワンボードで用意できます。もっとも、MacBookにArduino LeonardoをUSB接続すれば、同じことができます。Arduinoが外付けなら、回路を壊しても安価に交換できます。なので、これもどうしてもワンボードで実現したい用途に限定されます。LattePandaのサイトでは、自立走行小型ロボットに搭載する例が紹介されています。高度な画像処理や機械学習をしながら、モータやセンサを駆使したい場合には、軽量、小型に実現できるので向いているかもしれません。
  • カスタマイズできるUSBキーボード・マウス機能を持ったmacOSマシンとして使えます。上で示したように、マウスやキーボードで行うことはなんでもプログラムで実現できます。センサの結果やネットの状況を、キーボード・マウス経由で反映することが可能です。センサの結果をプログラムで受け取るのが簡単になります。
  • ウェアラブルなmacOSが実現できます。これもLattePandaのサイトで紹介されています。HMDに接続したり、画像処理を行ったり、センサに接続したりする高性能なコンピュータを、小型、省電力で提供できます。USB Type-Cで電源供給するので、豊富なモバイルバッテリー製品が電源として利用できます。

ということで、万人ウケする製品ではないかもしれません。でも、「ディスプレイとキーボード・トラックパッドと、バッテリーを取り外したMacBook 2017」に相当するコンピュータですので、こういうものが欲しかったという人が必ず居ると思いました。

つづき

以下もごらんください。

6件のコメント

  1. 突然で申し訳ございません。教えて下さい、
    ”インストール用USBメモリ作成
    別のmacOSマシンで、App StoreからmacOS Mojaveインストール.appをダウンロードします。この中にあるcreateinstallmediaコマンドを・・・・・次に、このUSBのESPに、前述のサイトからダウンロードしたESPの中身をコピーします。”
    この”USBのESPに、前述のサイトからダウンロードしたESPの中身をコピー ”のやり方をおしえてもらえないでしょうか?

    1. 慣れていないとディレクトリの構成がわかりにくいかもしれません。
      一旦CloverをUSBメモリーに(ESPへのインストールを選んで)インストールして、そのCLOVERフォルダをダウンロードしたものと置き換えれば良いです。

  2. これにmacOSをインストールすると以下が可能になりました。

    ここの有線が優先になってますよ

  3. ありがとうございました。
    うまくMAC OS起動できました。
    ただ、このlattepanda alpha本体の起動についてなのですが、一度、本体から電源を外して、再度、電源をつないでスイッチを入れようとしても、なかなかスイッチが入らず(赤のLEDランプが消えたままで)、こわれたかなと思って、数時間後に再度電源をつないでみると、うまくつながり、本体が起動できたりします。この点について何か情報があれば教えてほしいのですが。(本論とははなれた質問ですが)

    1. 私も、付属の小さい紙の説明書に電源の入れ方が書いてあるのを読まずにやっていて、電源の入れ方に最初は戸惑いました。電源を入れてしばらく経つと青いLEDが時々一瞬点灯するようになって、そうなったところで電源ボタンを3秒間長押しすると、電源が入るそうです。赤のLEDはArduinoの13番ピンなので、本体とは関係ないと思います。

      という問題ではなかったらごめんなさい。

返信を残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)