Yosemite(Mavericks)でFTDIが動かない件

  • 46
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

問題

YosemiteでArduinoが動かないという話を聞いたので、確かめた。
手元にあったArduino UNO R3とLeonardoでは問題なく、FTDIチップを使っているものが問題らしい。
Duemilanoveとかは手元に見当らないので、FTDI basicとかAdafruitのFTDI friendsで試すと/dev/cu.usbserial* は認識できているし、シリアル通信は問題なかった。これらをArduino Pro(ATmega168,16MHz,5V)につないでBlinkをアップロードしようとすると

avrdude: stk500_recv(): programmer is not responding

のようなエラーが出た。

この手の問題はMavericksの時点でも報告されていて、Yosemiteだけの問題ではなさそうである。

http://forum.arduino.cc/index.php?topic=198539.0

MavericksではAppleFTDIを不可にしてFDTIのドライバをインストールすればOKだったはずだが、Yosemiteではsignature云々でインストールしただけでは動かないようだ。

/var/log/syslogに
ERROR: invalid signature for com.FTDI.driver.FTDIUSBSerialDriver, will not load
というエラーが記録されていた。

signature云々で検索して見付けた以下のサイトがヒントになった。

http://ewen.mcneill.gen.nz/blog/entry/2014-05-25-os-x-mavericks-usb-serial/

解決

AppleUSBFTDIを利用不可にする

使われているドライバの確認

kextstat | grep FTDI

とすると
com.apple.driver.AppleUSBFTDI
が表示され、AppleUSBFTDIが使われているので、これを利用不可にする。

cd /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/
sudo mv AppleUSBFTDI.kext AppleUSBFTDI.disabled
sudo touch /System/Library/Extensions/

とした後、再起動する。

FTDIのVCPドライバを使う

FTDIからVCPドライバをダウンロードする。
http://www.ftdichip.com/Drivers/VCP.htm
x86(64-bit) 2.2.18 へのリンク
http://www.ftdichip.com/Drivers/VCP/MacOSX/FTDIUSBSerialDriver_v2_2_18.dmg

これを開くには「セキュリティとプライバシー」の「ダウンロードしたアプリケーションの実行許可」で「すべてのアプリケーションを許可」する必要があるが、セキュリティを下げてしまうので、インストールしたら元に戻す。
Yosemiteではこの後、実行可能にしてドライバをロードする必要がある。

cd /System/Library/Extensions
sudo chmod -R 755 FTDIUSBSerialDriver.kext
sudo chown -R root:wheel FTDIUSBSerialDriver.kext #追記
sudo kextload FTDIUSBSerialDriver.kext

有効なドライバを確認すると

kextstat | grep FTDI

com.FTDI.driver.FTDIUSBSerialDriver (2.2.18)
が表示される。

これでArduinoでも問題なく使えるようになった。
(avrdude -c arduino -p atmega328p -P /dev/cu.usbserial* が正常に動く)

まとめ

通常のシリアル通信のみの利用であれば、AppleのドライバのままでOK。
avrdudeでFTDIをISPとして使うような場合にタイミングの問題か何かで失敗する。これはYosemite固有ではなく、Mavericksでも見られた問題のようだ。最新のMavericksでどうなっているかは調べていない。
また、Arduino固有でもなくavrdudeを単純なシリアル通信以外で使うときに生じるようだ。

FTDI社では永くMac用のドライバを更新していないので、FTDIの機種を使っていて余計な苦労をしたくない人はAppleのFTDIドライバが正常になるまでOSアップデートを待ったほうがよいかも。