Mac Webcam (WORK)

  1. gcc 版本 4.8 編譯失敗,先確定版本 4.4,不是則先降低版本。
    [root@dywmac bcwc_pcie]# yum downgrade gcc-* libstdc++* cpp libgomp libtool
    
  2. 上節 facetimehd-firmware 編譯出問題,主要是因原程式以 debian 環境撰寫,且 AppleCameraInterface 檔案下載出問題,改下載非 debian 原始碼。
    [root@dywmac src]# git clone https://github.com/engstk/bcwc_pcie/
    
  3. git clone 下載並自動建立目錄 bcwc_pcie,進入此目錄中的 firmware 次目錄。
    [root@dywmac src]# cd bcwc_pcie
    [root@dywmac bcwc_pcie]# cd firmware/
    [root@dywmac firmware]# ll
    total 12
    -rwxr-xr-x. 1 root root 8134 Sep 21 10:59 extract-firmware.sh
    -rw-r--r--. 1 root root 1148 Sep 21 10:59 Makefile
    
  4. 編譯 firmware 時, AppleCameraInterface 檔案下載不成功。
    [root@dywmac firmware]# make
    
    Checking dependencies for driver download...
    /usr/bin/curl
    /usr/bin/xzcat
    /bin/cpio
    
    Downloading the driver, please wait...
    mv: cannot stat `System/Library/Extensions/AppleCameraInterface.kext
    /Contents/MacOS/AppleCameraInterface': No such file or directory
    make: *** [AppleCameraInterface] Error 1
    
  5. 可以將 Macbook 重開機,並選擇 iOS,將 /System/Library/Extensions/AppleCameraInterface.kext/Contents/MacOS/AppleCameraInterface 檔案複製出來,或從我的網站下載。
    [root@dywmac firmware]# wget http://dy.csie.cyut.edu.tw/AppleCameraInterface
    
  6. 在 firmware 目錄下建立次目錄 System/Library/Extensions/AppleCameraInterface.kext/Contents/MacOS/
    [root@dywmac firmware]# mkdir -p System/Library/Extensions/AppleCameraInterface.kext/Contents/MacOS/
    
  7. 將 AppleCameraInterface 移至 System/Library/Extensions/AppleCameraInterface.kext/Contents/MacOS/
    [root@dywmac firmware]# mv AppleCameraInterface \
    System/Library/Extensions/AppleCameraInterface.kext/Contents/MacOS/
    
  8. 再編譯 firmware,成功執行。
    [root@dywmac firmware]# make
    
    Checking dependencies for driver download...
    /usr/bin/curl
    /usr/bin/xzcat
    /bin/cpio
    
    Downloading the driver, please wait...
    
    
    Found matching hash from OS X, El Capitan 10.11.5
    ==> Extracting firmware...
     --> Decompressing the firmware using gzip...
     --> Deleting temporary files...
     --> Extracted firmware version 1.43.0
    
  9. 執行 make install 安裝 firmware。
    [root@dywmac firmware]# make install
    Copying firmware into '//lib/firmware/facetimehd'
    
  10. 回到上層目錄編譯 facetimehd 模組,成功執行。
    [root@dywmac firmware]# cd ..
    [root@dywmac bcwc_pcie]# make
    make -C /lib/modules/4.4.5-1.el6.elrepo.x86_64/build M=/usr/src/bcwc_pcie modules
    make[1]: Entering directory `/usr/src/kernels/4.4.5-1.el6.elrepo.x86_64'
      CC [M]  /usr/src/bcwc_pcie/fthd_ddr.o
      CC [M]  /usr/src/bcwc_pcie/fthd_hw.o
      CC [M]  /usr/src/bcwc_pcie/fthd_drv.o
      CC [M]  /usr/src/bcwc_pcie/fthd_ringbuf.o
      CC [M]  /usr/src/bcwc_pcie/fthd_isp.o
    /usr/src/bcwc_pcie/fthd_isp.c: In function ‘fthd_isp_cmd_channel_camera_config’:
    /usr/src/bcwc_pcie/fthd_isp.c:647: warning: ‘ret’ may be used uninitialized in this function
      CC [M]  /usr/src/bcwc_pcie/fthd_v4l2.o
      CC [M]  /usr/src/bcwc_pcie/fthd_buffer.o
      CC [M]  /usr/src/bcwc_pcie/fthd_debugfs.o
      LD [M]  /usr/src/bcwc_pcie/facetimehd.o
      Building modules, stage 2.
      MODPOST 1 modules
      CC      /usr/src/bcwc_pcie/facetimehd.mod.o
      LD [M]  /usr/src/bcwc_pcie/facetimehd.ko
    make[1]: Leaving directory `/usr/src/kernels/4.4.5-1.el6.elrepo.x86_64'
    
  11. 執行 make install 安裝 facetimehd 模組。
    [root@dywmac bcwc_pcie]# make install
    make -C /lib/modules/4.4.5-1.el6.elrepo.x86_64/build M=/usr/src/bcwc_pcie modules_install
    make[1]: Entering directory `/usr/src/kernels/4.4.5-1.el6.elrepo.x86_64'
      INSTALL /usr/src/bcwc_pcie/facetimehd.ko
      DEPMOD  4.4.5-1.el6.elrepo.x86_64
    make[1]: Leaving directory `/usr/src/kernels/4.4.5-1.el6.elrepo.x86_64'
    
  12. 成功載入 facetimehd 模組,且可正常使用 webcam。
    [root@dywmac bcwc_pcie]# depmod 
    [root@dywmac bcwc_pcie]# modprobe facetimehd