Edited at

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

More than 3 years have passed since last update.


問題

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アップデートを待ったほうがよいかも。