IoT
M5stack
M5GO

MacOS Mojave でM5Stackの環境設定する。


TL;DL

MacOS MojaveでVCPドライバーがインストールできない問題の自分用メモ

M5Stackを買ったのでさあ遊ぼうと思ったところ、Macでドライバーをインストールしても認識してくれず

USBでシリアルCOM接続するポートがttyに表示できませんでした。

最新版のOSだとカーネル周りがセキュリティを強化するために変更されているためExtensionにドライバーファイルがインストールされてもRootが変更を拒否してしまうみたい

QiitaとかにもMacのトラブルシュートが乗ってなかったので参考になればなと


やったこと

解消方法はカーネルの変更を許可を起動前に設定する必要があります。

Macを一旦再起動する

MacBook-Pro:~ pcuser$ sudo reboot

もしくは🍎マークで再起動(Restart)を選択

再起動後、リンゴマークがある間に⌘+Rを押し続けてセーフブートにします。

ここでターミナルを開けばRoot権限で操作が可能のでターミナルを選択肢コンソールにログインしましょう。

サードパーティ製カーネル拡張KEXTが実行できるように以下のコマンドを実行する

# spctl kext-consent disable

実行後はターミナルを閉じて通常起動してください。

起動後は公式にあるリンクのVCPドライバーをダウンロードしてインストールすればOK

ドライバーが正常に読み込まれていることを確認するにはlsコマンドで

SLAB_USBtoUARTが表示されていることをターミナルで確認します。

MacBook-Pro:~ pcuser$ ls /dev/cu.*

/dev/cu.Bluetooth-Incoming-Port

/dev/cu.SRS-XB10-CSRGAIA-1

/dev/cu.MALS

/dev/cu.SLAB_USBtoUART ☆これ

/dev/cu.SOC

ちなみにこの機能はHighSierra以降に実装されたSecure Kernel Extension Loading(SKEL)の機能が有効になっているため起こっている事象で、パッケージインストールの時点では正常にインストールされたように見えるのが難点

(エラーを何も出力しないので問題を発見しづらい)

確かに配置自体は問題なくできるしドライバーをロードするコマンドも見た目上実行できます。(参考に以下コマンド)

sudo kextload -v 6 SiLabsUSBDriver.kext


雑感

他の人はOSXを使っているので最新でデバッグしてる人がググっても出なかったからちょっと手こずった(今月のQiitaはM5Stack特集にしようかな)

Linuxの流儀で行けるかなーと思ってたけどよく考えたらMacってBSD系だしかつ商用OSなんだよね確か、そりゃ違うわ

参考リンク

https://www.silabs.com/community/interface/forum.topic.html/cp210x_usb_to_uartb-73qX