Macbook Pro上的相机无法工作

我最近在Macbook Pro上安装了Ubuntu 16.04,一切都很正常,只是摄像头无法工作/找不到。Google Hangouts和Cheese应用程序都显示“未找到设备”。
有什么可以安装来使它工作吗?

你使用某种虚拟化平台吗? - M. Dm.
不,我完全擦除了Mac OS,只安装了Ubuntu 16.04。 - user1658053
请尝试这个解决方案:https://blog.jbfavre.org/2016/03/03/Linux-Driver-Webcam-FacetimeHD-Apple-MacBook-Pro/ 出于明显的原因,我无法亲自测试。 - M. Dm.
谢谢。我尝试了,命令“git clone debian”显示“debian不是一个存储库”。 - user1658053
不要用git clone debian,而是尝试使用git clone https://github.com/jbfavre/bcwc_pcie.git -b debian --single-branch - M. Dm.
@ M.Dm. 请删除您的评论并作为答案提出。 - Valerio Bozz
3个回答

截至2020年8月3日,请按照这里的指示进行操作。这些指示分为两部分,请确保您也按照适用于您平台的指示进行操作。由于网站上有些混乱,所以我在下面附上了它们。
我在2013款Macbook Pro上运行的是18.04 LTS(Bionic)。对我有效的指示如下:
sudo apt-get install git
sudo apt-get install curl xzcat cpio
git clone https://github.com/patjak/facetimehd-firmware.git
cd facetimehd-firmware
make
sudo make install
cd ..
sudo apt-get install kmod libssl-dev checkinstall
git clone https://github.com/patjak/bcwc_pcie.git
cd bcwc_pcie
make
sudo make install
sudo depmod
sudo modprobe -r bdc_pci
sudo modprobe facetimehd
sudo nano /etc/modules
**add line "facetimehd", write out (ctl+o) & close**

大多数这些步骤在每次内核升级时都需要重复执行。
在测试相机颜色之前,我还按照这里的说明进行了操作。

518.04那天,我不得不安装xz-utils代替xzcat,因为找不到后者。除此之外一切完美。谢谢! - Jarad Downing
我在“make”命令中遇到了以下错误:检查驱动程序下载的依赖项... /usr/bin/xzcat /bin/cpio Makefile:34: 目标“AppleCameraInterface”的制作配方失败 make: *** [AppleCameraInterface] 错误1 - John Dee
我不确定,也不打算复制错误,但是这个链接提供了一些想法。另外,xz-utils可能可以替代xzcat。就像我说的,这是对我有效的方法,不同的Mac型号可能会有所不同。 - theYnot
1"patjak"的源代码正是我们喜欢的那种。简洁、朴素、高效、可靠。这是一个我愿意捐赠的项目(如果有捐赠按钮的话)。 - Déjà vu
2在运行第二个sudo make install时,我遇到了以下问题:certs/signing_key.pem: No such file or directory。我通过使用这个超级用户的答案来解决了这个问题。 - Reinstate Monica 2331977
很不幸,在bcwc_pcie的make install阶段,我遇到了这个错误: :~/bcwc_pcie$ sudo make install make -C /lib/modules/4.15.0-123-generic/build M=/home/MYHOME/bcwc_pcie modules_install make[1]: 进入目录 '/usr/src/linux-headers-4.15.0-123-generic' 安装 /home/MYHOME/bcwc_pcie/facetimehd.ko 在main.c的第160行:
  • SSL错误:02001002:系统库:fopen:没有该文件或目录:../crypto/bio/bss_file.c:72
  • SSL错误:2006D080:BIO例程:BIO_new_file:没有该文件:../crypto/bio/bss_file.c:79 sign-file:certs/signing_key.pem:没有该文件或目录
- funkypitt
@funkypitt - 请查看我上面的评论。 - Reinstate Monica 2331977
1如果您希望在内核更新后保留这些更改,您需要根据以下说明设置dkms: https://github.com/patjak/bcwc_pcie/wiki/Get-Started#setting-up-dkms-auto-compile-on-kernal-update-1 - krumpelstiltskin
如果你遇到这个错误:make: *** [Makefile:36: AppleCameraInterface] Error 1。请尝试执行以下命令:sudo apt-get install curl。因为脚本会检查是否安装了curl,如果没有手动安装curl,它将返回空值。 - Aiden Zhao
1这个方法适用于jammy / 22.04版本。请注意,现在xzcat命令已经包含在xz-utils软件包中。我在基本桌面安装中已经有了它。 - mcint

我按照这里的指示(在“网络摄像头驱动程序”部分下)操作了一下,现在它可以正常工作了。
git clone https://github.com/patjak/bcwc_pcie.git
cd bcwc_pcie/firmware
make
sudo make install
cd ..
make
sudo make install
sudo depmod
sudo modprobe -r bdc_pci
sudo modprobe facetimehd

2关机后,当我下次打开笔记本电脑时,摄像头再次无法工作。 - user1658053
4只需将facetimehd添加到您的/etc/modules文件中。 - artsin
也许我应该将“$ sudo install”替换为“$ sudo make install”? - Galaxy
通常不建议以 root 权限运行 make。安全性并非像某些人所说的那样严重,因为恶意脚本在 "make install" 过程中同样可以具有恶意行为。但是,尽管 git clone 使用的是非 root 权限运行,但你最终会在该目录下拥有一堆属于 root 的文件。这可能在后续使用中变得很麻烦。 - dannysauer
如果你不这样做,可能会遇到以下错误:mv: 无法查找 'System/Library/Extensions/AppleCameraInterface.kext/Contents/MacOS/AppleCameraInterface' 文件或目录 - trendsetter37
@trendsetter37 这个mv命令是在通过curl管道传输cpio之后发生的。如果你遇到这个错误,那么很可能是下载或解压文件出现了问题。最有可能的原因是网络问题,或者你将git clone作为root运行,并创建了一个无法写入的存储库结构。我认为,路径应该不是/etc/local/src作为起点,但是我假设这就是为什么有人会以其他用户身份运行克隆命令。编辑以删除初始的cd /etc待定。 :) - dannysauer
是的,实际上我使用了/opt/src作为个人偏好,并遇到了类似的问题。另外,你上面的指令似乎在Macbook Pro 14,3型号上的Ubuntu 18.04上不起作用,供你参考@dannysauer。 - trendsetter37
我明白了。在执行 sudo make install 步骤时,它正在复制到一个不存在的文件夹 Copying firmware into '//lib/firmware/facetimehd' - trendsetter37
在我的Ubuntu 18.04系统上,/lib/firmware目录是由许多软件包创建的,其中包括linux-firmware。但即使它不存在,install命令也应该根据-D参数创建任何必要的父目录。我不确定你遇到了什么问题,@trendsetter37(我在我的MacBook上使用OpenSUSE),但请继续挖掘。 :) - dannysauer
第二个make install命令给了我一个错误,说一个文件夹不存在...但是...它还是成功了。相机现在完美运行。 - wayneeusa
非常感谢您!我在一台Macbook pro A1398早期2013型号上安装了Ubuntu 18.04,您的答案解决了摄像头问题。 - Miguel Mota

+1 对于选定的答案。 以下是截至2021年12月11日适用的修改版本,这是在Ubuntu 21.10上对我有效的方法。
sudo apt-get install git curl cpio kmod libssl-dev checkinstall
git clone https://github.com/patjak/facetimehd-firmware.git
cd facetimehd-firmware
make
sudo make install
cd ..
sudo depmod
sudo modprobe facetimehd
sudo nano /etc/modules
**add line "facetimehd", write out (ctl+o) & close**

??? sudo modprobe facetimehd modprobe: FATAL: Module facetimehd not found in directory /lib/modules/5.15.0-39-generic - cipricus
这对我有用。谢谢! - CryptoJones
在我2014年中期的MacBook Pro上,Ubuntu 22.04 LTS对我来说运行良好,谢谢! - ficestat