FTDIドライバ対策を行っていなかったMacOSX10.8をMavericksにアップデートし、10.9.5アップデート後、FTDIチップを使用しているArduino(例:互換機のCrowduino)を接続しbrinkスケッチを転送。接続時はドライバは以下のようにFTDIドライバは1つだけ認識。書き込み可能。
$ kextstat | grep FTDI
155 0 0xffffff7f82c33000 0x8000 0x8000 com.FTDI.driver.FTDIUSBSerialDriver (2.2.16) <138 36 5 4 3 1>
もともとのAppleUSBFTDI.kextは削除していない。
$ cd /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/
$ ls -al
total 0
drwxr-xr-x 24 root wheel 816 8 21 03:26 .
drwxr-xr-x 8 root wheel 272 9 19 13:21 ..
drwxr-xr-x 3 root wheel 102 6 4 13:22 AppleUSBCDC.kext
drwxr-xr-x 3 root wheel 102 6 4 13:22 AppleUSBCDCACMControl.kext
drwxr-xr-x 3 root wheel 102 6 4 13:22 AppleUSBCDCACMData.kext
drwxr-xr-x 3 root wheel 102 6 4 13:23 AppleUSBCDCDMM.kext
drwxr-xr-x 3 root wheel 102 6 4 13:23 AppleUSBCDCECMControl.kext
drwxr-xr-x 3 root wheel 102 6 4 13:23 AppleUSBCDCECMData.kext
drwxr-xr-x 3 root wheel 102 6 4 13:23 AppleUSBCDCEEM.kext
drwxr-xr-x 3 root wheel 102 6 4 13:22 AppleUSBCDCWCM.kext
drwxr-xr-x 3 root wheel 102 6 4 13:26 AppleUSBEHCI.kext
drwxr-xr-x 3 root wheel 102 6 4 13:33 AppleUSBFTDI.kext
drwxr-xr-x 3 root wheel 102 6 4 13:26 AppleUSBHub.kext
drwxr-xr-x 3 root wheel 102 6 4 13:26 AppleUSBMergeNub.kext
drwxr-xr-x 3 root wheel 102 6 4 13:26 AppleUSBOHCI.kext
drwxr-xr-x 3 root wheel 102 6 4 13:26 AppleUSBOpticalMouse.kext
drwxr-xr-x 3 root wheel 102 6 4 13:26 AppleUSBUHCI.kext
drwxr-xr-x 3 root wheel 102 6 4 13:35 AppleUSBVideoSupport.kext
drwxr-xr-x 3 root wheel 102 6 4 13:26 AppleUSBXHCI.kext
drwxr-xr-x 3 root wheel 102 6 4 13:26 IOUSBCompositeDriver.kext
drwxr-xr-x 3 root wheel 102 6 4 13:26 IOUSBHIDDriver.kext
drwxr-xr-x 3 root wheel 102 6 4 13:26 IOUSBHIDDriverSafeBoot.kext
drwxr-xr-x 3 root wheel 102 6 4 13:27 IOUSBLib.bundle
drwxr-xr-x 3 root wheel 102 6 4 13:26 IOUSBUserClient.kext
ーーー以下は以前の記事
MacOSXを10.9にアップデートしたらFTDIチップを使っているArduinoが通信できなくなるという話を聞いて、10.9.1のアップデータが来るまで待っていたのだけど相変わらず直ってなかったので以下を適用した。
☆Arduino UNO R3、Arduino LeonardoなどFTDIチップを使わずにシリアル通信を実現しているものは問題なかった。
Arduino in OS X 10.9 Mavericks - Serial Port Issues
AppleがMacOSX10.9からFTDIドライバをつけるようになったのだが、それに不具合があるらしい。修正方法は、標準のApple FTDIドライバを削除してFTDICHIPが配布しているドライバをインストールすること。
Virtual COM Port Drivers こちらからMacOSX用2.2.18をダウンロードする。ダウンロードして展開したFTDIUSBSerialDriver_v2_2_18.dmgを開くと2つのパッケージがあるが、FTDIUSBSerialDriver_10_4_10_5_10_6_10_7の方をインストールする。
ドライバの確認はkextstatコマンドで確認できる。デバイスを接続しないと現れない。
以下は2つのドライバが入ってしまっている例。
$ kextstat | grep FTDI
127 0 0xffffff7f8259d000 0x7000 0x7000 com.apple.driver.AppleUSBFTDI (1.0.1b1) <114 37 5 4 3>
128 0 0xffffff7f825a4000 0x8000 0x8000 com.FTDI.driver.FTDIUSBSerialDriver (2.2.18) <114 37 5 4 3 1>
先ほどのリンクにあった手順
cd /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns
sudo mv AppleUSBFTDI.kext AppleUSBFTDI.disabled
sudo touch /System/Library/Extensions
で削除して再起動し、FTDIのドライバをインストールすると以下の様に確認できる。
$ kextstat | grep FTDI
125 0 0xffffff7f81ca1000 0x8000 0x8000 com.FTDI.driver.FTDIUSBSerialDriver (2.2.18) <114 36 5 4 3 1>動作確認はCrowduinoで行った。これはArduino Duemilanove互換でFTDIのチップを使ってシリアル通信をしている。クロウディーノ(Arduino互換) (801-ECP-C328)
ついでにこんなのも見つけた。FTDIドライバをON/OFFするらしいが試していない。Arduinoに限らず影響があったみたい。OS X Mavericks (10.9) - IMPORTANT
追記:
Mac OS X MavericksにおけるFTDIシリアルポートドライバの取扱い