Arduino Mac シェルコマンド 電子工作

EPS8266がarduino IDEのシリアルポートに出て来なくなった

 

arduino IDEのポートにUSBシリアルがでてこない

LINEスタンプの送信を試してみるためにひさしぶりにESP8266を使いました。

【更新】LINE Notifyでスタンプを送る時のパッケージIDとステッカーIDのリスト

LINE Notify APIを使ってLINEスタンプを送るときに必要な、パッケージIDとステッカーIDを調べてみました

続きを見る

ところが、いつも使っているMacBook Pro2018にUSBケーブルで繋いでもarduino IDEのポートに表示されません。

こういうことは時々あることなので、arduino IDEやシステムを再起動したりポートを差し替えたり、ケーブルを交換してみたり、ハブ経由にしてみたりと色々やったのですが、一向になおりません。

ウチには複数のMacがあるので、他のマシンに接続してみたところ、なんの問題もなく認識されています。問題はMacBook Pro2018だけのようです。

MacBook Pro2018でも、arduino UNOとか他のマイコンは認識されます。

どうやらESP8266とMacBook Pro2018だけの相性問題になってきました。

かつてはUSBシリアルチップとの相性問題がしょっちゅうあったのですが、最近のMacは標準ドライバが充実して、トラブルはほとんどなくなっていたのですが。うーん。

 

FTDIのドライバをインストールしていったんは解決?

検索してみると、Qiitaに同様のトラブルの投稿がありました。

Mac で ESPr Developer: ESP-WROOM-02開発キットのシリアルポートが表示されないとき(Qiita)

 

この記事の情報を元に、FTDIのサイトからFT231Xのドライバをダウンロードしてインストールしました。

(「このMacについて」の「システムレポート」「USB」でボードのUSBシリアル変換チップが分かるんですね)。

ドライバをインストールして再起動するときちんと認識され、LINEスタンプ送信の実験は無事に完了しました。

 

ESP8266を繋ぎ直すと認識されない

しかし、別のESP8266に繋ぎ変えたところ、また認識しなくなりました。

いろいろやってもどうにもならないので、ドライバの削除と再インストールを行うことにしました。

ドライバの削除は以下の記事が参考になりました。

MacからFTDIのUSBドライバーをアンインストールする方法

ここの情報を元に、/Library/Extensions にあるドライバ「FTDIUSBSerialDriver.kext」を rm -r で消しました。

ちなみにドライバの拡張子は「 .kext 」。kernel extensionの略だったんですね。

私にとって"kext"は、よく見かけるけど謎の拡張子で、ずっと「ケクスト」と呼んでるんですが合ってるかな。

で、FTDIのドライバを再度インストールすると動きました。しかし、ESP8266を一度でもUSBポートから外すと無効になってしまいます。うーん。

 

kext関連のコマンドを覚えた

余談ですが、あれこれ調べる過程でkext関連のコマンドをいくつか覚えました。

読み込まれているカーネル拡張の一覧を表示

 command
kextstat
//数が多いので、grepを併用した方がいい
kextstat | grep FTDI

 

インストールされているカーネル拡張の一覧を表示

 command
kextfind
//これも数が多いので、grepを併用した方がいい
kextfind | grep FTDI

MacBook Pro 2018ではkextfindで

/System/Library/Extensions/AppleUSBFTDI.kext
/Library/Extensions/FTDIKext.kext
/Library/Extensions/FTDIUSBSerialDriver.kext

の3つのFTDIドライバが表示されます

しかし、他のMacではAppleUSBFTDI.kextしか入っていなくてもESP8266を繋げばarduino IDEで認識されます。うーん。

 

カーネル拡張をマニュアルでロードする

 command
sudo kextload {kextファイルのパス}

 

読み込み済みの拡張をメモリー上からアンロード

 command
sudo kextunload {kextファイルのパス}
// その後、sudo mv で他のディレクトリに移動して無効化する

 

アスキーの古い記事ですが参考になりました

不要なドライバーをスッキリ整理、KEXT関連コマンドを知る

 

kextはもう古くてサポートされないらしい

どうやらkextは古いシステム拡張技術らしく、macOS Catalina までしか対応していないそうです。

システム機能拡張と macOS について(Appleサポート)

ウチのMacBook Pro 2018と2015はまだMojaveなので気がつきませんでした。

MacBook Earlyg 2016はほぼまっさらのmacOS Big Surです。ESP8266を繋ぐとarduino IDEでちゃんと認識します。

kextfindで見ると、以下の「.dext」だけが表示されます。

/System/Library/DriverExtensions/com.apple.DriverKit-AppleUSBFTDI.dext

最新のmacOSではこの拡張子.dextがシステム機能拡張となっているようです。

 

いちどBig Surを試してみたとき不安定で戻してしまったのですが、Appleシリコンのこともあるし、そろそろOSの移行を始めたほうがよさそうな感じですねー。

 

起動時に繋いでおけばとりあえず認識される

寄り道していても問題は解決しません。

その後、Stackoverflowでこんな記事を見つけました。

Arduino doesn't detect FTDI serial on Mac Catalina 10.15.4

この記事では、最新のFTDIドライバ(2.4.4)を使えば解決みたいなことになっていますが、ウチのバージョンも2.4.4なんですよねぇ。

しかし、最後の方に

It worked only when I had hardware connected via USB while booting up. I had wacom tablet driver installed which prevented FTDI driver to detect FTDItoUSB hardware if I remove it and connect it again.

システムのブート時に繋いでおいたときだけ動く

ワコムのドライバが、FTDIドライバがデバイスを繋ぎ変えたときに検出するのを阻害している

てな事がかいてあります。

で、システムの起動時に繋いでおいたら確かに認識されました。つなぎ直すとやっぱりダメです。でもまぁもういいかなー。

また私もワコムタブレットを使っています。ただドライバをアンインストールするのも面倒くさい。

kextはレガシー技術ですし、とりあえず今は再起動接続でいくことにして、OSのバージョンアップの検討に入りました。

 

 

-Arduino, Mac, シェルコマンド, 電子工作