Qiitaに書いたネタだけど自分用にこっちにも投稿しておく
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