OS X 10.9.2にアップデートした後、2009年製Mac Proは当初は正常に動作しているように見えました。ところが、Skypeを起動してみると、24インチCinema Displayに内蔵されたカメラが認識されなくなってしまいました。すぐにこの不具合はSkypeに限ったことではないことが分かりました。カメラにアクセスするすべてのプログラム、特にAppleのFaceTimeとPhoto Boothに問題がありました。例えば、Photo Boothを起動して間もなく、「カメラが接続されていません」というメッセージが表示されました。
OS X 10.9.2 にアップデートした後、カメラからのビューの代わりにこのメッセージが Photo Booth に表示されました。
セーフブートが道を示す
症状は私のアカウントだけに限ったことではなく、ログイン項目のない別のアカウントにログインしてもカメラはMIAのままでした。Macの再起動、SMC(システム管理コントローラ)のリセット、ディスクアクセス権の修復など、推奨されている汎用的な修正を試しても効果はありませんでした。コンボアップデートでOS X 10.9.2を再インストールしてみましたが、効果はありませんでした。
症状はMac Pro以外では発生していないことが確認できました。MacBook Proと妻のiMacのカメラは、10.9.2アップデートをインストールした後も引き続き正常に動作しました。
Cinema Displayのカメラを復活させた唯一の方法は、セーフブートでした。しかし、それは一時的な効果に過ぎませんでした。通常通り再起動すると、カメラは再び消えてしまいました。それでも、ハードウェアの故障が問題の原因である可能性はほぼ排除されました。むしろ、証拠から、Mac Proの/Libraryフォルダまたは/System/Libraryフォルダ内のファイル(複数可)が原因であることが示唆されました。残念ながら、セーフブートではそれらのファイルを正確に特定することはできません。この調査の手始めとして、/Libraryフォルダ内の起動関連フォルダ(Extensions、LaunchDaemons、LaunchAgents、Preferences、StartupItems)の内容を一時的に無効にしてみましたが、効果はありませんでした。
VDCAssistantがクラッシュする
OS Xのコンソールログで原因ファイルを特定できるだろうか?いや、無理だった。ログを確認したところ、むしろ不安が募るばかりだった。VDCAssistantというプロセスが1秒間に約10回の割合でクラッシュしていることが判明したのだ!このOS Xファイルは、/System/Library /Frameworks/CoreMediaIO.framework/Versions/A/Resources/VDC.plugin/Contents/Resourcesに埋もれていた。
コンソールの system.log には、VDCAssistant のクラッシュが継続的に発生していることが示されています。
このVDCAssistantファイルはカメラが消えた謎に関係している可能性は高いものの、根本的な原因ではないと考えました。つまり、プロセスを強制終了すればクラッシュは止まるかもしれないが、カメラは復旧しないということです。それでも、強制終了を試みました。ところが驚いたことに、killallターミナルのコマンドもアクティビティモニタの強制終了も、プロセスを終了させることができませんでした。この時点でWebを検索し、/System/Library/LaunchDaemonsからcom.apple.cmio.VDCAssistant.plistを削除するとクラッシュは止まるものの(予想通り)カメラは復旧しないという報告を見つけました。結局、この方法を試すことはありませんでした。
AirParrot、AirPlayミラーリング、そして欠けているカメラソリューション
諦めてAppleのテクニカルサポートに電話したところ、追加の診断テストを一つ実行するように言われました。/System/Library/Extensionsフォルダからサードパーティ製のkextファイルを削除するというものでした。これも効果はありませんでした。サポート担当者は次に、「Capture Data」というアプリをダウンロードするように指示しました。このアプリはコンピュータからデータを収集し、Appleに送信します。担当者は、結果を分析した後、数日以内にAppleから連絡があると約束しました。
Appleからの連絡を待つ間、OS X 10.9.2の問題をさらに詳しく調べてみました。Appleサポートコミュニティのスレッドの一つが特に私の興味を引きました。OS X 10.9.2にアップデートした後、一部のユーザーでAirPlayミラーリングが機能しなくなったという報告です。原因はAirParrotでした。AirParrotは、Macの画面をAirPlay経由でApple TVにミラーリングするプログラムです。AirPlayミラーリングに対応していない古いMacでは特に便利です。そのため、私はMac ProにはAirParrotをインストールしていましたが、他のMacにはインストールしていませんでした。うーん…
提案された回避策は、AirParrot、特に/System/Library/Extensionsまたは/Library/Extensionsにある.kextドライバをアンインストールすることでした。しかし、AirParrotDriver.kextを含むサードパーティ製のkextファイルを既に一時的にアンインストールしていたため、これが解決策になるとは期待していませんでした。そこで、これ以上先に進むのではなく、Appleの回答を待つことにしました。
約1週間後、Appleから連絡がありました。彼らもAirParrotに焦点を絞り、同ソフトウェアとOS X 10.9.2の競合を確認しました。解決策として、AirParrotソフトウェアをすべて削除することが提案されました。悲観的でしたが、試してみることにしました。しかし今回は、AirParrotのkextファイルを手動で削除するのではなく、AirParrotのサポートページの指示に従いました。具体的には、AirParrot削除ツールユーティリティを実行しました(このユーティリティはOS X 10.9では動作しない可能性があると表示されていましたが)。
成功しました!ユーティリティがどのキーファイルを削除したのかは分かりませんが、うまくいきました。再起動後、カメラは復活しました。
AirParrotの開発元であるSquirrels社にコメントを求めました。彼らはこの問題を認め、問題はAirParrotの「デスクトップ拡張」機能に限定されているようだと指摘し、kextファイルを必要とするのはこの機能のみだと述べました。ドライバをインストールせずにAirParrotを再インストールすると、カメラをブロックすることなくミラーリングが機能することを確認できました。Squirrels社はさらに、「この問題はApple独自のドライバの不安定性に起因する可能性が高い。これについては私たちにできることはあまりなく、修正はApple社が行う必要がある」と主張しました。そのため、Air Displayなど、他のベンダーの同様のソフトウェアでもこの競合が発生する可能性があります。しかし、Squirrels社は、AirParrotの問題を自社側で解決できるかどうか、さらに調査することを約束しました。Apple社はOS Xでの将来の修正の可能性についてはコメントしませんでした。何か変化があるかどうかは、OS X 10.9.3のリリースを待つ必要があるでしょう。とりあえず、少なくともカメラは戻ってきました。これで一件落着です。