MY iSIGHT CAMERA IS WORKING AGAIN! SEE POINT #11 BELOW FOR DETAILS
The following is a bit long, but I am providing as much info as possible, in the hope that it will help someone here to figure out how to fix the iSight problem.
Aside from losing one app due to an issue with macOS Sierra, up until now, I had
assumed that I remained immune to all of the issues which have been discussed here as of late.
However, this morning it dawned on me that since first installing the Sierra betas, GMs and then the final release, I had not used the FaceTime app on my early 2009 iMac with 16A323 installed.
Well, I did just now, and to my dismay, this is what I see on the right side of FaceTime's window:
"No Camera Available
To use FaceTime, connect a camera."
So I launched the "System Information" app in the /Applications/Utilities folder, and under Hardware/Camera it likewise says . . .
"No video capture devices were found."
In the System Information app under Hardware/USB, it states the following:
Built-in iSight:
Product ID: 0x8502
Vendor ID: 0x05ac (Apple Inc.)
Version: 2.19
Serial Number: 8J97VP3242CX3E00
Speed: Up to 480 Mb/sec
Manufacturer: Apple Inc.
Location ID: 0x24400000 / 2
Current Available (mA): 500
Current Required (mA): 500
Extra Operating Current (mA): 0
Built-In: Yes
Here is what I have tried so far:
1. I tried Czo's suggestion to delete . . .
/System/Library/PrelinkedKernels/prelinkedkernel
. . . to recreate kernel cache. While the kernel cache was recreated, it did not resolve the issue.
2. Next, I tried Czo's suggestion to replace the "AppleUSBVideoSupport.kext" file with the El Capitan kernel extension that dosdude1 uploaded here.
To play it safe, I first copied the original kext file that is in . . .
/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/
. . . to the desktop, and then I moved the El Capitan version of the same into the above folder, overwriting the original kext file.
Doing this did not help either. Both FaceTime and the System Information app still report that no camera is available.
3. Next, I tried the two Terminal commands that pkouame suggested.
When I ran "sudo kextcache -system-prelinked-kernel", the Terminal spit out this . . .
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext LegacyUSBInjector.kext
AppleUSBVideoSupport.kext has incorrect permissions; omitting.
KernelCache ID: B095BE6F5826D16EF7A57745CEE0521D
symlink("/System/Library/PrelinkedKernels/prelinkedkernel", "/System/Library/Caches/com.apple.kext.caches/Startup/kernelcache") failed 17 (File exists) <createPrelinkedKernel 2795>
I am assuming that the incorrect permissions is because I replaced the original kext file with the one that dosdude1 uploaded.
So I launched "BatChmod" and dropped the "IOUSBFamily.kext" file on it.
"Owner" was already set to "root", and "Group" was set to "wheel". Likewise, permissions were already set to 755.
So, I just clicked on the "Apply to enclosed" box and hit the "Apply" button.
After doing that, I ran "sudo kextcache -system-prelinked-kernel" again, and this time, the "incorrect permissions" error for "AppleUSBVideoSupport.kext" was gone, but I was still getting this:
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext LegacyUSBInjector.kext
KernelCache ID: E219698F35EAFE132996D8B5BFF59EBB
symlink("/System/Library/PrelinkedKernels/prelinkedkernel", "/System/Library/Caches/com.apple.kext.caches/Startup/kernelcache") failed 17 (File exists) <createPrelinkedKernel 2795>
So once again I deleted the "prelinkedkernel" file and ran "sudo kextcache -system-prelinked-kernel" yet again. This time I got this:
/ locked; waiting for lock.
Lock acquired; proceeding.
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext LegacyUSBInjector.kext
KernelCache ID: E219698F35EAFE132996D8B5BFF59EBB
File at path '/System/Library/PrelinkedKernels/prelinkedkernel' changed, cannot be used
So I am not sure what I can do about that.
BTW, each time that I ran "sudo kextcache -system-caches", nothing appeared in the Terminal window, but the result is still the same. There is supposedly no camera available.
4. Next, I compared the "com.apple.Boot.plist" file that foxlet uploaded with my own that is in "/Library/Preferences/SystemConfiguration".
Similar to "hadnet", mine also only said "-no_compat_check", so I made the file writable in BBEdit and changed it to "-no_compat_check kext-dev-mode=1 mbasd=1". I also used BatChmod to check ownership and permissions on the file after I edited it.
Once again, doing this did not fix my iSight camera.
5. Next, I tried foxlet's suggestion of resetting the NVRAM, or zapping the PRAM, as we used to call it. The results were scary.
I shut down my iMac completely, waited about fifteen seconds, and then did the option-command-p-r combo.
After the first bong, I waited for the second bong. Instead, I got the gray startup screen with the prohibited symbol on it. Then my iMac just shut down. Freaked me out a bit, man!
So I rebooted, hoping for the best, and everything was back to normal . . . PHEW! . . . Well, minus my iSight camera.
6. Next, I tried pkouame's suggestion of trying to rebuild the kext cache from an external hard drive via the Terminal.
I got the same results as when I tried doing the same thing from my startup drive. In fact, when I used the Terminal from my external hard drive, the permissions error for the "AppleUSBVideoSupport.kext" file returned.
This mystified me, because I am certain that even after putting back the original kext file, I used BatChmod to check ownership and permissions on the file.
Well, after rebooting my iMac using the regular internal startup drive, I ran BatChmod again, and checked the file. Sure enough, "owner" is still set to root, and "Group" is set to wheel. Permissions are set to 755.
So after verifying that, I ran "sudo kextcache -system-prelinked-kernel" in the Terminal again -- that is, from my startup drive -- and once again it is reporting the same permissions error:
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext LegacyUSBInjector.kext
AppleUSBVideoSupport.kext has incorrect permissions; omitting.
KernelCache ID: DFD1113AF11177F010D4FA71820137FE
symlink("/System/Library/PrelinkedKernels/prelinkedkernel", "/System/Library/Caches/com.apple.kext.caches/Startup/kernelcache") failed 17 (File exists) <createPrelinkedKernel 2795>
I even tried setting permissions to 644, and I still get that "incorrect permissions" error.
The only way I was able to get rid of the error for the "AppleUSBVideoSupport.kext" file was by chmodding the whole IOUSBFamily.kext file to root, wheel and 755.
7. Next, I rebooted my iMac using my USB 16A323 installer drive -- it is actually a partition on one of my WD external hard drives -- and I did the following:
- Ran "csrutil disable" in the Terminal, just to make sure that SIP was disabled. I was already pretty certain that it was, because I use two apps that require for SIP to be disabled.
- Ran "First Aid" in the Disk Utility app to make sure there was nothing wrong with my internal startup hard drive. No problems were detected.
- Ran dosdude1's post-install tool in order to use the "forced rebuild" option. I also enabled the "Recovery Partition Patch" as well. I am not exactly sure what that patch does, but when earlier I tried to boot in recovery mode using command-r, I wasn't able to.
8. After my machine rebooted from its internal hard drive, I checked FaceTime again. Still no iSight camera is detected.
9. I ran "sudo kextcache -system-prelinked-kernel" in Terminal yet again, being as the post-install tool said that I might have to. This time the Terminal spit out this:
/ locked; waiting for lock.
Lock acquired; proceeding.
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext LegacyUSBInjector.kext
KernelCache ID: A3DF8E0C4EF96A3EA9F10DDE5091E4E0
File at path '/System/Library/PrelinkedKernels/prelinkedkernel' changed, cannot be used
Exactly what does that last line mean, and how do I fix it?
10. I reset the SMC. But this step was likewise to no avail, and the iSight camera is still not recognized by the OS.
11. In a last-minute post, only minutes before I was going to perform a clean install of 16A323 Final on my early 2009 iMac's internal hard drive, using my USB external hard drive where I had installed Sierra Final using dosdude1's macOS Sierra Patch Tool, a MacRumors newbie named "brunsik" mentioned that he had VirtualBox installed, and that from reading an article on another website, he resolved his iSight camera issue by detaching his iSight camera from VirtualBox.
As it turns out, I also have VirtualBox installed.
While brunsik offered some instructions regarding how to do this, I couldn't quite make sense of them. I had already been contemplating uninstalling VirtualBox for some time, being as I no longer run SheepShaver in it anyway. So I ran the VirtualBox uninstaller script that is included in the VirtualBox DMG file.
While I was hopeful, given everything that I have tried thus far -- which has all failed -- my expectation was not too high.
After removing every shred of my VirtualBox installation from my hard drive --
please note that you do need to do a spotlight search and/or use something like CleanApp, because the VirtualBox uninstaller leaves a lot behind -- I ran the System Information app in the Applications/Utilities folder again, and looked under the Hardware/Camera section. Lo and behold! My camera was listed again!
So I launched FaceTime, followed by Photo Booth, and my camera is indeed working again in both of them!
How ironic that so many of us have been knocking our heads together, busting our butts, and trying everything possible, and then someone who joined MacRumors only two weeks ago, and who has posted only six messages, provided the exact information I needed to resolve this camera issue, just like that! Amazing! Now I am wondering if my broken safe mode and recovery mode will be fixed as well. I will find out shortly after I finish my daily full backup.
Now I am wondering how many of you are also running VirtualBox on your machines. I bet a lot of you.
While I didn't take the time to pinpoint the problem more precisely -- being as I had already been contemplating removing VirtualBox anyway -- given the nature of the error strings that I was seeing in the Terminal, I wouldn't be the least bit surprised if the culprit was one or more of VirtualBox's kext files.
At any rate, I am a happy camper once again! A big
THANK YOU to "brunsik" for figuring this out! Excellent work, my friend!