MacBook Pro 2018のBootCampでeGPUを使う

Razer Core XとRADEON RX580を購入したので、OSXとBootCampのWindowsで使う方法を簡単にまとめておきます。

前提条件

OSXでeGPUを使う

OSXでRazer Core XとRADEON RX580を使う場合、特別な設定や作業は不要です。

  1. Razer Core XにRX580を挿します。
  2. RX580と外部ディスプレイを接続します。
  3. Razer Core XとOSXを接続します。

要はグラボをeGPUボックスに挿してMacを起動するだけです。起動中に取り外したり接続したりもできます。

BootCampのWindows10でeGPUを使う

Boot CampでeGPUを使うためにはいくつかのトリックが必要です。

起動用USBメモリの作成

BootCampのWindowsは、eGPUを接続したままだと起動中にWindowsのアイコンが表示される画面で止まったままになります。これを回避するために専用のUSBメモリを作成します。

  1. USBメモリMacBook Proに接続して、ディスクユーティリティでFAT32にフォーマットします。
  2. USBメモリ/EFI/Boot/というディレクトリを作成します。
  3. 0xbb/apple_set_os.efiapple_set_os.efiをダウンロードして、bootx64.efiという名前にリネームして上記ディレクトリに格納します。
  4. /EFI/Boot/bootx64.efiという構成になっていたら作成成功です。

USBメモリ経由で起動できるようにする

起動セキュリティユーティリティについてを参考にUSBメモリ経由で起動できるようにします。

  1. Macの電源を入れてリンゴマークが表示されたらCommand+Rを押し続けます。
  2. メニューバーからユーティリティ > 起動セキュリティユーティリティを選択します。
  3. 外部起動の外部メディアからの起動を許可を選択します。

eGPUを接続してWindowsを起動する

起動用のUSBメモリを使ってeGPUを接続しながらWindowsを起動させます。

  1. MacBook Pro 2018 Touch Barの最も左上のポートにeGPUを接続します。
  2. 別のポートに起動用USBメモリを接続します。
  3. Macの起動オプションで、BootCampのWindows10を起動するよう設定します。
  4. リンゴマークが表示されたらOptionを押します。
  5. Bootデバイスを選択する画面で、USBメモリを選択します。
  6. 後は起動を待つだけです。

eGPUのデバイス競合を解消する

起動に成功してもeGPUが既存のデバイスと競合していてそのままだと使えません。これを解消するために初回のみ次の作業を行います。

  1. バイスマネージャーを開きます。

  2. Intel PCI Express Root Port #9 9DB0 を無効化してWindowsを再起動します。

    1. #9DB0MacBook Pro 2018 Touch Barモデルの場合です。他のMacでは無効化するデバイスが異なる場合があります。

f:id:slowquery:20190310234221j:plain
Intel PCI Express Root Port #9 9DB0を無効化する

  1. AMD RadeonのドライバをAMDの公式サイト からダウンロードしてインストールします。

  2. 後は普通にWindowsを使うだけです。

f:id:slowquery:20190310233956j:plain
BootCampのeGPUでRadeon RX 580

homebrewでPS4リモートプレイをインストールしてMacでPS4をプレイする

homebrewでPS4リモートプレイをインストールする方法が見当たらなかったので、インストール方法とプレイまでの流れを簡単にまとめておきます。

インストール

brew cask install homebrew/cask-drivers/sony-ps4-remote-play

準備

Mac

PS4のコントローラーを一般のUSBケーブルでMacに接続しておきます。

PlayStation 4 ジェット・ブラック 500GB (CUH-2200AB01)

PlayStation 4 ジェット・ブラック 500GB (CUH-2200AB01)

  • 発売日: 2018/07/01
  • メディア: Video Game

PS4

PS4の設定画面からリモートプレイを有効にしておきます。

PS4リモートプレイ設定
PS4リモートプレイ設定

PS4リモートプレイの起動

  1. PS4 Remote Playをクリックします。

    PS4リモートプレイ
    PS4リモートプレイ

  2. PS4 Remote Playが起動したらPS4アカウントのIDとPasswordを入力します。

  3. PS4を自動的に探しに行くのでしばらく待ちます。

    PS4サーチ
    PS4サーチ

  4. PS4をプレイします。

    PS4ホーム画面 f:id:slowquery:20181230162919p:plain

なかなか快適にプレイできます。設定で720p以上、フレームレートをHighにしておくとよいです。

BeagleBoneで仮想通貨をCPUマイニング

BeagleBoneで仮想通貨をマイニングしてみます。CPUで様々な仮想通貨をマイニングできるcpuminer-multiを使います。

環境

cpuminer-multiをビルドする

準備

cpuminerのビルド必要なライブラリをインストールします。

sudo apt-get install -y automake autoconf pkg-config libcurl4-openssl-dev libjansson-dev libssl-dev libgmp-dev make g++ zlib1g-dev

※ cpuminer-multiのGitHubには書いていませんが、BeagleBoneのStretch IoTだとzlib1g-devが無いとビルドに失敗します。

cpuminer-multiのダウンロード

  1. 最新版をgitでcloneします。

    sh git clone https://github.com/tpruvot/cpuminer-multi.git cd git cpuminer-multi

cpuminer-multiのビルド

  1. ビルドします。

    sh ./build.sh

  2. cpuminerという実行ファイルが出力されているのを確認します。

仮想通貨のマイニング

cpuminerでマイニングします。

  • [mail],[pass]: MinerGateのEメールとパスワード
  • -a: マイニングのアルゴリズムを選択できます。--helpで一覧がみられます。
  • -t 4: BeagleBoneに搭載されているCPUのARM Cortex-A8(1GHz)が、4コアなので-t 4として、4スレッドでマイニングしています。
  • -o: あくまでもMinerGateに送る例ですが、他のマイニングプールにも対応しています。

f:id:slowquery:20180204120148p:plain

Bytecoin [BCN]

./cpuminer -a cryptonight -o stratum+tcp://bcn.pool.minergate.com:45550 -t 4 -u [mail] -p [pass]

Monero [XMR]

./cpuminer -a cryptonight -o stratum+tcp://xmr.pool.minergate.com:45560 -t 4 -u [mail] -p [pass]

QuazarCoin [QCN]

./cpuminer -a cryptonight -o stratum+tcp://qcn.pool.minergate.com:45570 -t 4 -u [mail] -p [pass]

DigitalNote [XDN]

./cpuminer -a cryptonight -o stratum+tcp://xdn.pool.minergate.com:45620 -t 4 -u [mail] -p [pass]

Fantomcoin [FCN]

./cpuminer -a cryptonight -o stratum+tcp://fcn.pool.minergate.com:45610 -t 4 -u [mail] -p [pass]

MonetaVerde [MCN]

./cpuminer -a cryptonight -o stratum+tcp://mcn.pool.minergate.com:45640 -t 4 -u [mail] -p [pass]

Dashcoin [DSH]

./cpuminer -a cryptonight -o stratum+tcp://dsh.pool.minergate.com:45720 -t 4 -u [mail] -p [pass]

Infinium-8 [INF8]

./cpuminer -a cryptonight -o stratum+tcp://inf8.pool.minergate.com:45750 -t 4 -u [mail] -p [pass]

XDN+XMR

./cpuminer -a cryptonight -o stratum+tcp://xdn-xmr.pool.minergate.com:45790 -t 4 -u [mail] -p [pass]

FCN+XMR

./cpuminer -a cryptonight -o stratum+tcp://fcn-xmr.pool.minergate.com:45590 -t 4 -u [mail] -p [pass]

FCN+QCN

./cpuminer -a cryptonight -o stratum+tcp://fcn-qcn.pool.minergate.com:45600 -t 4 -u [mail] -p [pass]

FCN+DSH

./cpuminer -a cryptonight -o stratum+tcp://fcn-dsh.pool.minergate.com:45730 -t 4 -u [mail] -p [pass]

FCN+INF8

./cpuminer -a cryptonight -o stratum+tcp://fcn-inf8.pool.minergate.com:45760 -t 4 -u [mail] -p [pass]

MCN+QCN

./cpuminer -a cryptonight -o stratum+tcp://mcn-qcn.pool.minergate.com:45670 -t 4 -u [mail] -p [pass]

MCN+DSH

./cpuminer -a cryptonight -o stratum+tcp://mcn-dsh.pool.minergate.com:45740 -t 4 -u [mail] -p [pass]

MCN+INF8

./cpuminer -a cryptonight -o stratum+tcp://mcn-inf8.pool.minergate.com:45770 -t 4 -u [mail] -p [pass]

マイニング結果の確認

MinerGateのダッシュボードで確認します。

f:id:slowquery:20180204121049p:plain

BeagleBoneにLinuxをインストールする

使ってなかったBeagleBone Blackが家にあったので、新しいLinuxをインストールしてみました。 ここでは公式サイトで推奨されているDebianをインストールします。

環境

  • OSX: 作業環境
  • BeagleBone Black (Rev.C)
  • MicroSDカード

Linuxイメージの入ったSDカードを作成する

EtcherというElectron製のツールを使って、SDカードにLinuxイメージを書き込みます。

  1. OSイメージをBeagleBoardのサイトからダウンロードします。

  2. Etcherをインストールします。

    brew cask install etcher

    Etcher: Electron製のフラッシュ書き込みツール

  3. MicroSDカードをMacにマウントします。

  4. Etcherを起動します。

    f:id:slowquery:20180203233733p:plain

  5. Flashをクリックして、OSイメージをMicroSDカードに書き込みます。

BeagleBoneをMicroSDカードのLinuxから起動する

  1. BeagleBoard電源ケーブル(5Vアダプタ or USB)を抜いておきます。

  2. OSイメージの書き込まれたMicroSDカードをBeagleBoneのMicroSDカードコネクタに差し込みます。

  3. BeagleBone BlackのMicroSDコネクタ近くの"USER/BOOTボタン"を押しながら、電源ケーブルを接続します。

    f:id:slowquery:20180121164723j:plain

  4. OSXにBeagleBoneがマウントされていることを確認します。

  5. ブラウザで http://192.168.6.2にアクセスしてBeagleBoneの説明ページが出ることを確認します。

LinuxイメージをeMMCに書き込む

BeagleBoneにはeMMS(Embedded Multi Media Card)というフラッシュメモリが内蔵されています。SDカードなしで起動できるようにするため、イメージをBeagleBone BlackのeMMCに書き込みます。

  1. Debianにログインします。

    ssh debian@192.168.6.2 //パスワードはtemppwd

  2. Debianのバージョンが最新版であることを確認します。

    cat /etc/dogtag BeagleBoard.org Debian Image 2017-10-10

  3. /boot/uEnv.txtを以下のように修正して保存します。

    ##enable BBB: eMMC Flasher: cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh

  4. (任意)LANケーブルを接続してインターネットに接続して以下のコマンドで書き込みスクリプトをアップデートします。

    cd /opt/scripts/ git pull

  5. SDカードを抜かずに再起動して終了します。

    sudo reboot sudo shutdown -h now

eMMCから起動する

  1. SDカードを抜いて起動してログインします。

    ssh debian@192.168.6.2 //パスワードはtemppwd

  2. 最新であることを確認でします。

    cat /etc/dogtag BeagleBoard.org Debian Image 2017-10-10

以上で完了です。

Claudia.jsでES2015を使う

AWS LambdaのNode.jsコンテナは残念なことに2017年1月現在でv4.3という古いバージョンで、ES2015に対応していないです。 公式の"USING BABEL WITH AWS LAMBDA"に書いてある通りで、babelを使ってES2015でClaudiaやBabelを書く方法をまとめます。

前提

下記のようにAWS API GatewayAWS Lambda用のapp.jsとcustom認証のauthorizer.jsをES2015で書いていると仮定します。

  • app.js : AWS API GatewayAWS Lambda用のClaudiaの定義 (ES2015)
  • authorizer.js : カスタム認証用のLambda関数 (ES2015)

手順

ディレクトリ作成

srcbinを作成し、src配下に作成したファイルを格納します。binには後々babelでtranspileされたファイルが格納されるので、現時点では空で構いません。

mkdir src bin
mv *.js src

npm設定

npm init
npm install --save claudia-api-builder
npm install --save-dev babel-cli babel-preset-es2015 claudia

package.jsonscriptsfilesを以下のように設定します。

  "scripts": {
    "transpile": "babel --presets es2015 src --out-dir bin",
    "create": "npm run transpile && claudia create --region us-east-1 --handler bin/authorizer.auth --name [任意] --config claudia-auth.json && claudia create --region us-east-1 --api-module bin/app",
    "update": "npm run transpile && claudia update --config claudia.json",
    "update-auth": "npm run transpile && claudia update --config claudia-auth.json"
  },
  "files": [
    "bin"
  ],

現時点では以下のようになっています。

src/app.js
src/authorizer.js
bin/
package.json

実行

  • デプロイします。初回のみの作業です。claudiaの設定ファイルclaudia.jsonとカスタム認証の設定ファイルclaudia-auth.jsonも作成されます。
npm run create

更新

  • カスタム認証を修正した後に実行します。
npm run update-auth
  • app.jsを修正した後に実行します。
npm run update

以上