Bugs & Fixes: OS X 10.9.2 and the disappearing camera
Initially, after updating to OS X 10.9.2, all seemed fine with my 2009 Mac Pro. Then I launched Skype. The application could no longer detect the camera built into my 24-inch Cinema Display. I quickly confirmed that this failure was not specific to Skype. It extended to all programs that accessed the camera—notably Apple’s FaceTime and Photo Booth. For example, shortly after launching Photo Booth, a message appeared that said “There is no connected camera.”
A Safe Boot points the way
The symptom was not limited just to my account; the camera remained MIA even when logged into a separate account that had no login items. Recommended all-purpose fixes—such as restarting the Mac, resetting the SMC (System Management Controller), or repairing disk permissions—had no effect. I even re-installed OS X 10.9.2 via the combo update but to no avail.
I was able to determine that the symptom did not extend beyond my Mac Pro. The cameras in my MacBook Pro and my wife’s iMac continued to work just fine after installing the 10.9.2 update.
One thing did succeed in bringing the Cinema Display’s camera back to life: a Safe Boot. It was only a temporary respite, however. After restarting normally, the camera vanished again. Still, this pretty much ruled out a hardware failure as the cause of the problem. Rather, the evidence suggested that the culprit was a file (or files) either in the Mac Pro's /Library or /System/Library folders. Unfortunately, a Safe Boot offers no way to determine precisely what those files might be. As a start in this search, I temporarily disabled the contents of various startup-related folders in the /Library folder: Extensions, LaunchDaemons, LaunchAgents, Preferences and StartupItems. It proved fruitless.
Perhaps OS X’s Console logs could identify the culprit file? Nope. If anything, checking the logs only succeeded in raising my anxiety. It revealed that a process called VDCAssistant was crashing at a rate of about ten times a second! I located this OS X file buried in /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/Resources/VDC.plugin/Contents/Resources.
I figured that, while this VDCAssistant file was likely involved in the missing camera mystery, it was not the root cause. This meant that killing the process might stop the crashes but would not bring back the camera. Still, I attempted the kill. Surprisingly, neither the
killall command in Terminal nor a Force Quit from Activity Monitor could terminate the process. At this point, I searched the web and found a report that claimed deleting com.apple.cmio.VDCAssistant.plist from /System/Library/LaunchDaemons would stop the crashing but (as I expected) not restore the camera. I never bothered to try this.
AirParrot, AirPlay mirroring, and the missing camera solution
Admitting defeat, I called Apple Technical Support. They had me perform one additional diagnostic test: remove third-party kext files from the /System/Library/Extensions folder. This too had no effect. The support person next had me download an app called Capture Data which collects and sends data from your computer to Apple. He promised Apple would get back to me in a few days, after analyzing the results.
While waiting for Apple’s return call, I did some further digging into problems with OS X 10.9.2. One Apple Support Communities thread especially grabbed my attention. It reported that AirPlay mirroring no longer worked for some users after updating to OS X 10.9.2. The cause turned out to be AirParrot—a program that mirrors a Mac’s display to Apple TV via AirPlay. It's especially useful for older Macs that are not compatible with AirPlay mirroring. For this reason, I had AirParrot installed on my Mac Pro but not my other Macs. Hmmmm...
The suggested work-around was to uninstall AirParrot, especially any of its .kext drivers found in /System/Library/Extensions or /Library/Extensions. As I had already temporarily uninstalled all third-party kext files, including AirParrotDriver.kext, I was not optimistic that this was the solution. So, rather than proceed further, I decided to wait to see what Apple had to say.
Apple called back about a week later. They had similarly zeroed in on AirParrot, confirming a conflict between the software and OS X 10.9.2. Removing all AirParrot software was the suggested cure. Despite my pessimism, I gave it a try. However, this time, rather than manually removing the AirParrot kext file, I followed the instructions on an AirParrot support page. Specifically, I ran the AirParrot Removal Tool utility (despite an indication that the utility might not function in OS X 10.9).
Success! I'm not sure what key file the utility removed, but it worked. After a restart, my camera returned to life.
I contacted Squirrels, the developers of AirParrot, for comment. They acknowledged the issue, noting that it appears limited to AirParrot's “Extend Desktop” feature, which is the only aspect that requires kext files. I confirmed that reinstalling AirParrot without the drivers allows the software's mirroring to work without blocking the camera. Squirrels further claimed that the problem “is likely caused by an instability in Apple's own drivers. There's not much we can do about that—the fix has to come from Apple.” As such, similar software from other vendors (such as Air Display) may also exhibit the conflict. However, Squirrels promised to investigate further to see if they might somehow resolve the AirParrot problem on their end. Apple would not comment regarding a possible future fix in OS X. To see if anything happens here, we’ll likely have to wait for OS X 10.9.3. In the meantime, at least I have my camera back. Case closed.