今日なのですが、朝会社に通勤している最中に見つけました。そう、FTDI の 最新macOS 用 VCP ドライバが配布されていたのです。
というわけで公開から遅くなりましたが、今回はこのドライバによって Mac で再度 FTDI チップを用いた開発が可能になったよというお話をします。
事の経緯
私はある日、macOS を最新の Big Sur にアップデートしました。デザインもいい感じに丸っこくなってて可愛いです。
ですが、ここで大問題発生。なんと FT232RL 等の FTDI チップが認識されない。正確に言うと、FTDI の USB-シリアル変換チップが仮想 COM ポートとして認識されないと言う事態に。
これは死活問題です。このチップはかなり有名なものなので、Arduino を始めとした大半のボード等が認識されなくなるからです。
しかし完全に認識されないということではありませんでした。macOS 起動時に予め FTDI チップに接続したデバイスを USB ポートに差しておけば認識はします。ですが、USB デバイスらしくなく 一度でも抜き差しをすると途端に認識されなくなるというこれまた困った問題が残っていました。不便で仕方ないじゃないか。
...なぜこうなったかと言うと、macOS 側のドライバ仕様が少し変わったということにあります。これまで FTDI 用のドライバは Apple からも .kext
形式で提供されていましたが、Catalina からこれを非推奨として .dext
形式での適用としました。Catalina ではまだ非推奨ながらもカーネル拡張を導入できたのですが、その次のメジャーアップデートである Big Sur では導入すら不可能になりました。そして酷いことに、Apple が公式で用意した FTDI 用の dext は何故か上記のように正常に動作しないものだったのです。どうにかしてくれよ。自分勝手な林檎会社さんよ。
ちゃんとしたドライバーが出た
ということでしばらく苦しい思いをしていた Mac 組み込み開発部(?)ですが、5/18 を以って、最新 macOS 用のドライバが配布されたようです!!
リンクはこちらからどうぞ。まだベータ版と言うことですが、ありがたい。
インストール方法は簡単。まずダウンロードしたものを解凍して、/Applications
内へ移動してください。これをしないとインストールが開始されません。
続いて実行。以下のような画面が出ますので、ボタンをポチィ!しましょう。
すると OS からセキュリティの警告を受けますので、パスワード等を入力して許可。その瞬間に以下のような画面になってインストールが完了します。
そこから再起動せずにすんなり認識しました。不安な方はとりあえず再起動しておきましょう。
↓いきなりですが、かねてから問題視されていたカスタム VID / PID の FTDI チップが完全に認識されない問題。Sipeed の Maixduino ですが、こちらはそもそも FTDI チップではないので(FTDI チップ互換に動くように USB マイコンにプログラムがされてあるもの)、ハードルが高いかと思いましたが...
↓このように、仕様通りしっかりと2ポート分認識されています。
↓もちろん、純正の FT232RL も正常に認識されています。バンザイ!!
↓特に嬉しかったのがこちら。2ポート搭載 & MPSSE が素晴らしい FT2232D でもしっかりと認識されています。素晴らしい。素晴らしい。
実際の動作ですが、FT232RL において、TXD と RXD をショートした状態でしっかりとデータのエコーバックを確認しました。良かったです。
TWELITE マイコンや Kendryte K210 SoC が載る Maixduino に FTDI チップが使われていますので、これまで Mac で開発できずにすごく残念でした。
今回のドライバのおかげで、おそらく macOS でもこれらの開発ができるようになるのではと思います。とてもいいニュースでした。ドライバのリリース日から1ヶ月遅れたけどね。
また FTDI によると、今回認識しない問題が発生しているのは dext 絡みのみで、D2XX ライブラリ等のライブラリを用いているものは関係がなく正常動作するとのことです。
資料など
これまで色々と調べて来て、やっとそれが報われたのでした。蛇足となりますが、せっかくなのでその内容を記録しておきたいと思います。
ことの発端は上でも述べたように macOS のアップデートが原因。最新の OS では FTDI チップがうまく認識されないのでした。
調べてみるとまず出てきたのがこちら。
そういうものなのか。と思う。まだ希望は捨てなかった。そしてこの記事中では
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ドライバがデバイスを繋ぎ変えたときに検出するのを阻害している
と引用されています。そうなのかもしれませんが、僕はワコム製品を持ってもいないし、ドライバもインストールしていない。関係がなさそうです。
他に調べてみると Qiita の記事が。
codesign
で署名を設定しても認識できないってマジかよ。絶望の始まりでした。
詳細がわからなかったので色々と検索。HACKADAY での記事を見つけました。
「カスタム PID の FTDI チップが認識されない」とのことですが、状況は異なります。カスタムしていなくても、(OS の起動時以外)正常にチップが認識されません。この記事を見たあたりで OS アップデートをしたことを後悔し始めます。
続いて FTDI Community で記事を検索してみると「Apple から dext の詳細を示す返答が長い間帰ってきていない」という FTDI のエンジニアの声が見えました。
結局のところ、悪いのは Apple のようです。