Git Product home page Git Product logo

facetimehd's Introduction

facetimehd

Linux driver for the Facetime HD (Broadcom 1570) PCIe webcam found in recent Macbooks.

This driver is experimental. Use at your own risk.

See the Wiki for more information:

facetimehd's People

Contributors

akemnade avatar askulysh avatar azat avatar colinharrington avatar ddalex avatar ddcc avatar elerch avatar mauritiusdadd avatar nbartos avatar nicolaasuni avatar patjak avatar satmandu avatar svenschnelle avatar sweeze avatar vicamo avatar yantarou avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

facetimehd's Issues

How do you write a driver?

Do you just probe it through the BUS and see what happens? Or is there some spec you can follow from broadcom? Or something else? (I've never written a OS-side driver before, just curious)

[SOLVED] Module 'facetimehd' not loaded at startup

Hi,

I use Linux Mint 17.3 64 bits on a MacBook Air 11" (early 2014 version) with the 3.19.8 kernel and I'm very happy to be able to use the webcam, thanks a lot to the developers!

I followed the instructions on the Wiki ('Get Started' section) to extract the firmware (I had to install curl to get it work). Then I used the following commands to install the module:

make
sudo make install
sudo depmod -a
sudo modprobe -r bdc_pci
sudo modprobe facetimehd

and I tested it using

mplayer tv://

It worked like a charm!

Problem:
It no longer works after rebooting. Indeed, the module facetimehd is not loaded at startup.

After rebooting, lsmod | grep facetimehd returns nothing and I couldn't find why in the logs... I tried to blacklist bdc_pci but the webcam module still wasn't loaded at startup.
Did I miss a step during the install procedure ?

Solution:
I finally got it work by adding the following lines in /etc/rc.local

modprobe -r bdc_pci
modprobe facetimehd

I put "SOLVED" in the title because I eventually found a solution to my problem.
I hope it will help people that might face the same issue.

Support Ubuntu Trusty / Linux Mint 17 Power Mgmt

@patjak

For Ubuntu trusty / Mint 17 we need:

/etc/pm/sleep.d/99_facetimehd

#!/bin/sh

case $1 in
    resume|thaw)
        logger -t pm 'Loading facetimehd kernel module'
        /sbin/modprobe facetimehd
        ;;
    suspend|hibernate)
        logger -t pm 'Removing facetimehd kernel module'
        /sbin/rmmod facetimehd
        exit 0
        ;;
esac

Load module and test?

Sorry , this isnt a issue per say, just my lack of understanding of modules in general.

I build the driver like so...

  1. make
  2. sudo make install

How do I test it? I tried modprobe facetimehd, modprobe bcwc_pcie but neither worked. How do I load the module?

Can you port the darwin/osx driver?

Or may-be just use it as a point of reference in a black-box separation study if licensing is a problem?
it's in System/Library/Extensions/Apple_iSight.kext/Contents/MacOS/Apple_iSight
There's a bunch of people who need iSight to work, yet non able to write a linux driver.

Module init/probe failure on MBP12,1 & Linux 4.4

Following #14 I extracted the firmware locally, then used the README directions for Debian to build, install and load the driver under Linux 4.4 (without forgetting a modprobe -r bdc_pci first), but I'm not getting a working camera. This is what dmesg reports on module load:

Dec 28 22:31:51 payens kernel: [59190.523392] media: Linux media interface: v0.10
Dec 28 22:31:51 payens kernel: [59190.530521] Linux video capture interface: v2.00
Dec 28 22:31:51 payens kernel: [59190.539434] facetimehd 0000:02:00.0: Found FaceTime HD camera with device id: 1570
Dec 28 22:31:51 payens kernel: [59190.539535] facetimehd 0000:02:00.0: Setting 64bit DMA mask
Dec 28 22:31:51 payens kernel: [59190.544939] facetimehd 0000:02:00.0: S2 PCIe link init succeeded
Dec 28 22:31:51 payens kernel: [59190.544969] facetimehd 0000:02:00.0: Refclk: 25MHz (0xa)
Dec 28 22:31:51 payens kernel: [59190.554915] facetimehd 0000:02:00.0: PLL reset finished
Dec 28 22:31:51 payens kernel: [59190.554917] facetimehd 0000:02:00.0: Waiting for S2 PLL to lock at 450 MHz
Dec 28 22:31:51 payens kernel: [59190.554929] facetimehd 0000:02:00.0: S2 PLL is locked after 10 us
Dec 28 22:31:51 payens kernel: [59190.564885] facetimehd 0000:02:00.0: S2 PLL is in bypass mode
Dec 28 22:31:51 payens kernel: [59190.584804] facetimehd 0000:02:00.0: DDR40 PHY PLL locked on safe settings
Dec 28 22:31:51 payens kernel: [59190.584819] facetimehd 0000:02:00.0: STRAP valid
Dec 28 22:31:51 payens kernel: [59190.584820] facetimehd 0000:02:00.0: Configuring DDR PLLs for 450 MHz
Dec 28 22:31:51 payens kernel: [59190.584827] facetimehd 0000:02:00.0: DDR40 PLL is locked after 0 us
Dec 28 22:31:51 payens kernel: [59190.584836] facetimehd 0000:02:00.0: First DDR40 VDL calibration completed after 2 us
Dec 28 22:31:51 payens kernel: [59190.584847] facetimehd 0000:02:00.0: Second DDR40 VDL calibration completed after 2 us
Dec 28 22:31:51 payens kernel: [59190.584848] facetimehd 0000:02:00.0: Using step size 152
Dec 28 22:31:51 payens kernel: [59190.584853] facetimehd 0000:02:00.0: VDL set to: coarse=0x10008, fine=0x1011a
Dec 28 22:31:51 payens kernel: [59190.584857] facetimehd 0000:02:00.0: Virtual VTT enabled
Dec 28 22:31:51 payens kernel: [59190.605255] facetimehd 0000:02:00.0: S2 DRAM memory address: 0x22159559
Dec 28 22:31:51 payens kernel: [59190.605269] facetimehd 0000:02:00.0: Rewrite DDR mode registers succeeded
Dec 28 22:31:51 payens kernel: [59190.605461] facetimehd 0000:02:00.0: Full memory verification failed! (65535)
Dec 28 22:31:52 payens kernel: [59191.062205] facetimehd 0000:02:00.0: Loaded firmware, size: 1392kb
Dec 28 22:32:02 payens kernel: [59201.125599] facetimehd 0000:02:00.0: Init failed! No wake signal
Dec 28 22:32:02 payens kernel: [59201.125853] facetimehd: probe of 0000:02:00.0 failed with error -5

The driver doesn't work on Macbook Air mid 2015

Dear sir,

I followed the documentation on the wiki but the driver doesn't work.
I'm running Archlinux on the Macbook and I tryied both ethods (AUR packages and manual install from github).

[m_b@Macbook-Air ~]$ sudo modprobe -r bdc_pci
[m_b@Macbook-Air ~]$ sudo modprobe facetimehd
[m_b@Macbook-Air ~]$ mpv tv://
Playing: tv://
[tv] Selected driver: v4l2
[tv]  name: Video 4 Linux 2 input
[tv] unable to open '/dev/video0': Permission denied
[tv] ioctl set mute failed: Bad file descriptor
[tv] 0 frames successfully processed, 0 frames dropped.
Failed to recognize file format.


Exiting... (Errors when loading file)

[m_b@Macbook-Air ~]$ lsmod |grep facetime
facetimehd             90112  0
videobuf2_dma_sg       20480  1 facetimehd
videobuf2_core         40960  1 facetimehd
videodev              143360  3 v4l2_common,facetimehd,videobuf2_core

Hope this help.

Corrupted image

The driver does stream (after a clean reload of all the related modules /dev/video0 is created) but with cheese the stream is corrupted:
https://www.dropbox.com/s/63zbswro7vyf4jo/2015-12-20-120607.jpg?dl=0
Only the very top of the image is ok.
Could be that cheese does not support high resolution correctly but so far I don't manage to get the video with another software (e.g. vlc).
Tell me if you need more testing/logs/whatever.

[SOLVED] Low resolution with Skype

Hi,

I use Linux Mint 17.3 64 bits on a MacBook Air 11" (early 2014 version) with the 3.19.8 kernel and I'm very happy to be able to use the webcam, thanks a lot to the developers!

I followed the instructions on the Wiki ('Get Started' section) to extract the firmware and to install the module, everything works like a charm when I test it with mplayer tv://

Problem:
When I use Skype (version 4.3.0.37), the webcam is automatically detected as Apple Facetime HD (/dev/video0) but Skype only uses the lowest available resolution (320x240).

I added the following code in ~/.Skype/shared.xml inside the <Video> tag in order to force Skype to use a higher resolution (640x480 is fine for me):

<CaptureWidth>640</CaptureWidth>
<CaptureHeight>480</CaptureHeight>

but the webcam didn't work anymore!
The webcam is still detected by Skype but there is no video stream (the green led next to the webcam is off)...

Diagnosis:
The webcam only works with Skype when the lowest available resolution (320x240) is defined in ~/.Skype/shared.xml.

Solution:
I changed the minimum resolution in the facetimehd module!

In the fthd_v4l2.c file, I replaced

#define FTHD_MIN_WIDTH 320
#define FTHD_MIN_HEIGHT 240

with

#define FTHD_MIN_WIDTH 640
#define FTHD_MIN_HEIGHT 480

I compiled and installed the facetimehd module again.
Even though Skype still uses the minimum resolution, 640x480 is now a decent resolution (much better than 320x240!)

Afterword:
People using Skype and facing the same issue (low 320x240 resolution) should consider increasing the minimum resolution and compiling the module again. I didn't notice any side effect in doing so.

I put "SOLVED" in the title because I eventually found a solution to my problem. I hope it might help!

Firmware extraction

Hi

I'm not able to extract the firmware:
on 4.2.0-23-generic #28-Ubuntu SMP Sun Dec 27 17:47:31 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux,

I tried the following

  • when running:
  • "bcwc_pcie/firmware/./extract-firmware.sh" nothing happens.

--> Why nothing is downloaded?

  • "make" Dowloading the driver, please wait...
    mv: cannot stat ‘System/Library/Extensions/AppleCameraInterface.kext/Contents/MacOS/AppleCameraInterface’: No such file or directory
    Makefile:24: recipe for target 'AppleCameraInterface' failed
    make: *** [AppleCameraInterface] Error 1
  • ./extract-firmware.sh -x AppleCameraInterface
    Error: Mismatching driver hash for ../../AppleCameraInterface (copied from mac OSX)
    Error: The uknown hash is 387097b5133e980196ac51504a60ae1ad8bab736eb0070a55774925ca0194892
    Error: No firmware extracted!
  • ./extract-firmware.sh --dmg osxupd10.11.2.dmg (downloaded manually:https://support.apple.com/downloads/DL1849/en_US/osxupd10.11.2.dmg )
    Error: 'pbzx' needed but not found!

How can I "download the driver (zip version) and extract it" as mentioned in the wiki???

Thanks for some help

Full memory verification failed! (221)

I try it on my laptop but receive:
[17713.856489] bcwc_pcie 0000:04:00.0: Full memory verification failed! (221)

HW:

Handle 0x000E, DMI type 2, 16 bytes
Base Board Information
        Manufacturer: Apple Inc.
        Product Name: Mac-2BD1B31983FE1663
        Version: MacBookPro11,3
        Serial Number: C024154035RFP521T
        Asset Tag: Base Board Asset Tag#
        Features:
                Board is a hosting board
                Board is replaceable
        Location In Chassis: Part Component
        Chassis Handle: 0x000F
        Type: Motherboard
        Contained Object Handles: 0
04:00.0 Multimedia controller: Broadcom Corporation Device 1570
        Subsystem: Broadcom Corporation Device 1570
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 256 bytes
        Interrupt: pin A routed to IRQ 38
        Region 0: Memory at c1d00000 (64-bit, non-prefetchable) [size=64K]
        Region 2: Memory at a0000000 (64-bit, prefetchable) [size=256M]
        Region 4: Memory at c1c00000 (64-bit, non-prefetchable) [size=1M]
        Capabilities: <access denied>
        Kernel driver in use: bcwc_pcie

Debug:

[17010.755814] bcwc_pcie 0000:04:00.0: Found Broadcom PCIe webcam with device id: 1570
[17010.756339] bcwc_pcie 0000:04:00.0: Allocated S2 regs (BAR 0). 65536 bytes at 0xffffc9000d720000
[17010.756342] bcwc_pcie 0000:04:00.0: Allocated S2 mem (BAR 2). 268435456 bytes at 0xffffc90010f00000
[17010.756343] bcwc_pcie 0000:04:00.0: Allocated ISP regs (BAR 4). 1048576 bytes at 0xffffc9000db00000
[17010.756414] bcwc_pcie 0000:04:00.0: irq 38 for MSI/MSI-X
[17010.756439] bcwc_pcie 0000:04:00.0: Setting 64bit DMA mask
[17010.756466] bcwc_pcie 0000:04:00.0: S2 PCIe link init succeeded
[17010.756495] bcwc_pcie 0000:04:00.0: Refclk: 25MHz
[17010.766444] bcwc_pcie 0000:04:00.0: PLL reset finished
[17010.766448] bcwc_pcie 0000:04:00.0: Waiting for S2 PLL to lock at 450 MHz
[17010.766502] bcwc_pcie 0000:04:00.0: S2 PLL is locked after 20 us
[17010.776459] bcwc_pcie 0000:04:00.0: S2 PLL is in bypass mode
[17010.796375] bcwc_pcie 0000:04:00.0: DDR40 PHY PLL locked on safe settings
[17010.796390] bcwc_pcie 0000:04:00.0: STRAP valid
[17010.796391] bcwc_pcie 0000:04:00.0: Configuring DDR PLLs for 450 MHz
[17010.796398] bcwc_pcie 0000:04:00.0: DDR40 PLL is locked after 0 us
[17010.796408] bcwc_pcie 0000:04:00.0: First DDR40 VDL calibration completed after 2 us
[17010.796419] bcwc_pcie 0000:04:00.0: Second DDR40 VDL calibration completed after 2 us
[17010.796419] bcwc_pcie 0000:04:00.0: Using default step size (708)
[17010.796425] bcwc_pcie 0000:04:00.0: VDL set to: coarse=0x1003d, fine=0x1011b
[17010.796429] bcwc_pcie 0000:04:00.0: Virtual VTT enabled
[17010.816827] bcwc_pcie 0000:04:00.0: S2 DRAM memory address: 0x22159559
[17010.816841] bcwc_pcie 0000:04:00.0: Rewrite DDR mode registers succeeded
[17010.817261] bcwc_pcie 0000:04:00.0: rd_data_dly_fifo succeeded
[17010.818957] bcwc_pcie 0000:04:00.0: RE BYTE FIFO success: 0x30101, 0x30100, 0x30028
[17713.500904] bcwc_pcie 0000:04:00.0: Found Broadcom PCIe webcam with device id: 1570
[17713.501254] bcwc_pcie 0000:04:00.0: Allocated S2 regs (BAR 0). 65536 bytes at 0xffffc9000d720000
[17713.501255] bcwc_pcie 0000:04:00.0: Allocated S2 mem (BAR 2). 268435456 bytes at 0xffffc90010f00000
[17713.501256] bcwc_pcie 0000:04:00.0: Allocated ISP regs (BAR 4). 1048576 bytes at 0xffffc9000db00000
[17713.501302] bcwc_pcie 0000:04:00.0: irq 38 for MSI/MSI-X
[17713.501331] bcwc_pcie 0000:04:00.0: Setting 64bit DMA mask
[17713.501418] bcwc_pcie 0000:04:00.0: S2 PCIe link init succeeded
[17713.501445] bcwc_pcie 0000:04:00.0: Refclk: 25MHz
[17713.511392] bcwc_pcie 0000:04:00.0: PLL reset finished
[17713.511394] bcwc_pcie 0000:04:00.0: Waiting for S2 PLL to lock at 450 MHz
[17713.511438] bcwc_pcie 0000:04:00.0: S2 PLL is locked after 20 us
[17713.521398] bcwc_pcie 0000:04:00.0: S2 PLL is in bypass mode
[17713.541320] bcwc_pcie 0000:04:00.0: DDR40 PHY PLL locked on safe settings
[17713.541334] bcwc_pcie 0000:04:00.0: STRAP valid
[17713.541336] bcwc_pcie 0000:04:00.0: Configuring DDR PLLs for 450 MHz
[17713.541343] bcwc_pcie 0000:04:00.0: DDR40 PLL is locked after 0 us
[17713.541353] bcwc_pcie 0000:04:00.0: First DDR40 VDL calibration completed after 2 us
[17713.541364] bcwc_pcie 0000:04:00.0: Second DDR40 VDL calibration completed after 2 us
[17713.541365] bcwc_pcie 0000:04:00.0: Using default step size (708)
[17713.541370] bcwc_pcie 0000:04:00.0: VDL set to: coarse=0x1003d, fine=0x1011b
[17713.541375] bcwc_pcie 0000:04:00.0: Virtual VTT enabled
[17713.564692] bcwc_pcie 0000:04:00.0: S2 DRAM memory address: 0x22159559
[17713.564706] bcwc_pcie 0000:04:00.0: Rewrite DDR mode registers succeeded
[17713.565127] bcwc_pcie 0000:04:00.0: rd_data_dly_fifo succeeded
[17713.566921] bcwc_pcie 0000:04:00.0: RE BYTE FIFO success: 0x30101, 0x30100, 0x30028
[17713.856489] bcwc_pcie 0000:04:00.0: Full memory verification failed! (221)
[16969.253545] bcwc_pcie 0000:04:00.0: Full memory verification failed index (163) read: 13ADCCEB write: 31D1CCEB
[16969.253620] bcwc_pcie 0000:04:00.0: Full memory verification failed index (222) read: AA7BBB31 write: E014BB31
[16969.254448] bcwc_pcie 0000:04:00.0: Full memory verification failed index (792) read: 20C1024E write: 20C112DC
[16969.255179] bcwc_pcie 0000:04:00.0: Full memory verification failed index (1347) read: A996FCBB write: E3E7E9C3
[16969.255372] bcwc_pcie 0000:04:00.0: Full memory verification failed index (1435) read: EE097A99 write: 8151B399
[16969.255811] bcwc_pcie 0000:04:00.0: Full memory verification failed index (1712) read: 319ADFD3 write: F3AA98D3
[16969.255890] bcwc_pcie 0000:04:00.0: Full memory verification failed index (1771) read: 44069F5A write: 8069F5A
[16969.256269] bcwc_pcie 0000:04:00.0: Full memory verification failed index (2067) read: EF3D2DCE write: 7D96C5CE
[16969.256620] bcwc_pcie 0000:04:00.0: Full memory verification failed index (2317) read: 4B4824E4 write: BB7DC65
[16969.256847] bcwc_pcie 0000:04:00.0: Full memory verification failed index (2496) read: 2909FA44 write: 744DFA44
[16969.257128] bcwc_pcie 0000:04:00.0: Full memory verification failed index (2715) read: BAFD70F7 write: BAFD700F
[16969.257758] bcwc_pcie 0000:04:00.0: Full memory verification failed index (3205) read: A0E5AD30 write: A8EA1030
[16969.257783] bcwc_pcie 0000:04:00.0: Full memory verification failed index (3223) read: 629A25AA write: 623597B6
[16969.258269] bcwc_pcie 0000:04:00.0: Full memory verification failed index (3535) read: DAEB1E12 write: 45EB1E12
[16969.258712] bcwc_pcie 0000:04:00.0: Full memory verification failed index (3732) read: 58C0EB2B write: 4BC53CE6
[16969.258987] bcwc_pcie 0000:04:00.0: Full memory verification failed index (3947) read: CBB14E2F write: 86305B3A
[16969.259025] bcwc_pcie 0000:04:00.0: Full memory verification failed index (3976) read: E96B4CAA write: 7887E18
[16969.259176] bcwc_pcie 0000:04:00.0: Full memory verification failed index (4093) read: EA36D2CF write: A7836ACF
[16969.259225] bcwc_pcie 0000:04:00.0: Full memory verification failed index (4130) read: 2C11A4CA write: 2C1139FA
[16969.259341] bcwc_pcie 0000:04:00.0: Full memory verification failed index (4221) read: C0E180A4 write: 5B6080A4
[16969.259354] bcwc_pcie 0000:04:00.0: Full memory verification failed index (4231) read: 2828B006 write: FD28B006
[16969.259870] bcwc_pcie 0000:04:00.0: Full memory verification failed index (4584) read: F68A46F2 write: F261BDF2
[16969.261233] bcwc_pcie 0000:04:00.0: Full memory verification failed index (5124) read: 3942F381 write: 39428524
[16969.261319] bcwc_pcie 0000:04:00.0: Full memory verification failed index (5191) read: 981BE05B write: 7D52825B
[16969.261644] bcwc_pcie 0000:04:00.0: Full memory verification failed index (5441) read: AFDC55CF write: D793FE56
[16969.262187] bcwc_pcie 0000:04:00.0: Full memory verification failed index (5708) read: 96C31AD3 write: 96743ECD
[16969.262395] bcwc_pcie 0000:04:00.0: Full memory verification failed index (5870) read: 834A8D90 write: 835FBB46
[16969.262452] bcwc_pcie 0000:04:00.0: Full memory verification failed index (5913) read: 5DF1FC7C write: 5DF1FCED
[16969.262469] bcwc_pcie 0000:04:00.0: Full memory verification failed index (5925) read: 3EEB5D35 write: 8A3B5435
[16969.262955] bcwc_pcie 0000:04:00.0: Full memory verification failed index (6240) read: D669A3A5 write: D66956B5
[16969.264237] bcwc_pcie 0000:04:00.0: Full memory verification failed index (6867) read: 74F2B6A5 write: 7423297D
[16969.264320] bcwc_pcie 0000:04:00.0: Full memory verification failed index (6932) read: F30B0AAA write: 7DE07BAA
[16969.264374] bcwc_pcie 0000:04:00.0: Full memory verification failed index (6972) read: 550C5AED write: 130C5AED
[16969.264415] bcwc_pcie 0000:04:00.0: Full memory verification failed index (7003) read: 72F170DC write: 730570DC
[16969.265992] bcwc_pcie 0000:04:00.0: Full memory verification failed index (7966) read: 47DD5353 write: 47DD693F
[16969.266351] bcwc_pcie 0000:04:00.0: Full memory verification failed index (8195) read: D3C68F8E write: 73B38F8E
[16969.267573] bcwc_pcie 0000:04:00.0: Full memory verification failed index (9109) read: CC04F0BD write: 8942C576
[16969.268805] bcwc_pcie 0000:04:00.0: Full memory verification failed index (10077) read: 5BF260EC write: 347D60EC
[16969.269047] bcwc_pcie 0000:04:00.0: Full memory verification failed index (10265) read: 5FF88FC9 write: 5FF84946
[16969.269508] bcwc_pcie 0000:04:00.0: Full memory verification failed index (10569) read: F92CB74D write: 7FE7F4D
[16969.270321] bcwc_pcie 0000:04:00.0: Full memory verification failed index (11122) read: E3EFC44A write: BD98CCC3
[16969.271865] bcwc_pcie 0000:04:00.0: Full memory verification failed index (12327) read: 2AEC3F2B write: C2393F2B
[16969.272410] bcwc_pcie 0000:04:00.0: Full memory verification failed index (12747) read: 611A5765 write: 31EC5765
[16969.273134] bcwc_pcie 0000:04:00.0: Full memory verification failed index (13297) read: 2F95C298 write: 2F11C691
[16969.273433] bcwc_pcie 0000:04:00.0: Full memory verification failed index (13522) read: 4815E63D write: 48152F10
[16969.274533] bcwc_pcie 0000:04:00.0: Full memory verification failed index (14270) read: 56949B4B write: 569480EC
[16969.274601] bcwc_pcie 0000:04:00.0: Full memory verification failed index (14318) read: AD7BEA75 write: AD7BEA17
[16969.275517] bcwc_pcie 0000:04:00.0: Full memory verification failed index (15015) read: 92730491 write: 927346FC
[16969.275569] bcwc_pcie 0000:04:00.0: Full memory verification failed index (15053) read: 4E76366D write: 4E76AA64
[16969.275845] bcwc_pcie 0000:04:00.0: Full memory verification failed index (15270) read: 2298BC7 write: F6E073C7
[16969.276918] bcwc_pcie 0000:04:00.0: Full memory verification failed index (16055) read: 55A11E55 write: 55A11E9D
[16969.277825] bcwc_pcie 0000:04:00.0: Full memory verification failed index (16726) read: 7E265652 write: 5901FB5E
[16969.278980] bcwc_pcie 0000:04:00.0: Full memory verification failed index (17484) read: E69FECB5 write: 6A8BECB5
[16969.279052] bcwc_pcie 0000:04:00.0: Full memory verification failed index (17540) read: 5EFE1478 write: 7D0D1478
[16969.279508] bcwc_pcie 0000:04:00.0: Full memory verification failed index (17894) read: 75A2E916 write: 75A29B4B
[16969.280753] bcwc_pcie 0000:04:00.0: Full memory verification failed index (18855) read: BFD6476E write: BFD64762
[16969.281057] bcwc_pcie 0000:04:00.0: Full memory verification failed index (19086) read: 33B01C19 write: 43B01C19
[16969.281200] bcwc_pcie 0000:04:00.0: Full memory verification failed index (19195) read: B39D39AB write: B39D3958
[16969.281222] bcwc_pcie 0000:04:00.0: Full memory verification failed index (19212) read: 5BFF2583 write: 5BFF255F
[16969.281442] bcwc_pcie 0000:04:00.0: Full memory verification failed index (19354) read: ABF4BC1D write: 79F4BC1D
[16969.282391] bcwc_pcie 0000:04:00.0: Full memory verification failed index (19978) read: A856FFAC write: 8F6CEF9A
[16969.283001] bcwc_pcie 0000:04:00.0: Full memory verification failed index (20442) read: 55BBD1EB write: C60FD1EB
[16969.283117] bcwc_pcie 0000:04:00.0: Full memory verification failed index (20525) read: 5A328131 write: 5A85D86D
[16969.284014] bcwc_pcie 0000:04:00.0: Full memory verification failed index (21223) read: A58A5E9B write: A563FC88
[16969.284072] bcwc_pcie 0000:04:00.0: Full memory verification failed index (21269) read: 98E72E19 write: BA456F1D
[16969.284675] bcwc_pcie 0000:04:00.0: Full memory verification failed index (21735) read: 481AF8F8 write: 481AF8DC
[16969.285423] bcwc_pcie 0000:04:00.0: Full memory verification failed index (22313) read: 77B6F13 write: 71C7A34
[16969.285715] bcwc_pcie 0000:04:00.0: Full memory verification failed index (22541) read: FB866E38 write: 3F1E6E38
[16969.286212] bcwc_pcie 0000:04:00.0: Full memory verification failed index (22866) read: A3F28ECE write: E4608ECE
[16969.287701] bcwc_pcie 0000:04:00.0: Full memory verification failed index (23951) read: 6C153341 write: 6C157D0E
[16969.288070] bcwc_pcie 0000:04:00.0: Full memory verification failed index (24233) read: 235EEAE7 write: 235E688F
[16969.289119] bcwc_pcie 0000:04:00.0: Full memory verification failed index (25047) read: F67B8AE write: 29A05D3A
[16969.289502] bcwc_pcie 0000:04:00.0: Full memory verification failed index (25334) read: B7795FFC write: B779BDED
[16969.289707] bcwc_pcie 0000:04:00.0: Full memory verification failed index (25491) read: 97E67B3F write: 97E67B13
[16969.290738] bcwc_pcie 0000:04:00.0: Full memory verification failed index (26209) read: E2FD7878 write: 86FD7878
[16969.291586] bcwc_pcie 0000:04:00.0: Full memory verification failed index (26863) read: D85374A7 write: D853746C
[16969.291703] bcwc_pcie 0000:04:00.0: Full memory verification failed index (26955) read: FE89F3DA write: 96DB86DA
[16969.291960] bcwc_pcie 0000:04:00.0: Full memory verification failed index (27154) read: FA37D76C write: FA37D7B3
[16969.293178] bcwc_pcie 0000:04:00.0: Full memory verification failed index (28057) read: 31D15B63 write: 31D154DF
[16969.293774] bcwc_pcie 0000:04:00.0: Full memory verification failed index (28481) read: 39787C99 write: 72797C99
[16969.294463] bcwc_pcie 0000:04:00.0: Full memory verification failed index (28931) read: 8F565C29 write: 569C7042
[16969.295569] bcwc_pcie 0000:04:00.0: Full memory verification failed index (29784) read: BB24AEC7 write: BB24AE00
[16969.295880] bcwc_pcie 0000:04:00.0: Full memory verification failed index (30025) read: 4920BEC5 write: 4920BE47
[16969.296127] bcwc_pcie 0000:04:00.0: Full memory verification failed index (30212) read: B44997C7 write: 77E0E48D
[16969.296166] bcwc_pcie 0000:04:00.0: Full memory verification failed index (30240) read: F6409D1D write: D4409D1D
[16969.296655] bcwc_pcie 0000:04:00.0: Full memory verification failed index (30621) read: CBED65E2 write: A065EFE2
[16969.297285] bcwc_pcie 0000:04:00.0: Full memory verification failed index (31078) read: EF5200A1 write: 2C5200A1
[16969.297539] bcwc_pcie 0000:04:00.0: Full memory verification failed index (31272) read: CFCEBDD4 write: CFCEBD37
[16969.297732] bcwc_pcie 0000:04:00.0: Full memory verification failed index (31423) read: 73AB9740 write: AAB9740
[16969.298132] bcwc_pcie 0000:04:00.0: Full memory verification failed index (31659) read: 2D1373F write: 2D1E526
[16969.298274] bcwc_pcie 0000:04:00.0: Full memory verification failed index (31768) read: 9C3E6143 write: 9C3E5E53
[16969.298849] bcwc_pcie 0000:04:00.0: Full memory verification failed index (32193) read: E9ECD3C8 write: CBECD3C8
[16969.298874] bcwc_pcie 0000:04:00.0: Full memory verification failed index (32211) read: 30A20CD9 write: 30EC88A3
[16969.299999] bcwc_pcie 0000:04:00.0: Full memory verification failed index (33078) read: 8E36589B write: 8EE6502B
[16969.300877] bcwc_pcie 0000:04:00.0: Full memory verification failed index (33757) read: AB3658B2 write: 5C33CFB2
[16969.301442] bcwc_pcie 0000:04:00.0: Full memory verification failed index (34195) read: 6E12D9F8 write: EA12D9F8
[16969.301978] bcwc_pcie 0000:04:00.0: Full memory verification failed index (34568) read: BBF21386 write: BBE889FB
[16969.302291] bcwc_pcie 0000:04:00.0: Full memory verification failed index (34770) read: 67A0AA8F write: 67A07A6C
[16969.302306] bcwc_pcie 0000:04:00.0: Full memory verification failed index (34781) read: 49254D44 write: 49673831
[16969.302668] bcwc_pcie 0000:04:00.0: Full memory verification failed index (35061) read: 9F72FEE6 write: A872FEE6
[16969.303109] bcwc_pcie 0000:04:00.0: Full memory verification failed index (35398) read: C58F4BE9 write: C52CC767
[16969.304507] bcwc_pcie 0000:04:00.0: Full memory verification failed index (36436) read: 5E0CB1F7 write: 7E02EC8F
[16969.305118] bcwc_pcie 0000:04:00.0: Full memory verification failed index (36906) read: A828281 write: D2828281
[16969.305523] bcwc_pcie 0000:04:00.0: Full memory verification failed index (37220) read: 5DBF458E write: 93BF458E
[16969.306599] bcwc_pcie 0000:04:00.0: Full memory verification failed index (37982) read: 38A231BE write: 38A2315E
[16969.307065] bcwc_pcie 0000:04:00.0: Full memory verification failed index (38299) read: D2E9E3E9 write: D2E9AE3C
[16969.308233] bcwc_pcie 0000:04:00.0: Full memory verification failed index (39210) read: 29ECF4D3 write: 29ECC109
[16969.308810] bcwc_pcie 0000:04:00.0: Full memory verification failed index (39656) read: F6A6198F write: F6A619B6
[16969.309304] bcwc_pcie 0000:04:00.0: Full memory verification failed index (40036) read: 94BE7C83 write: 6A2A5C30
[16969.309446] bcwc_pcie 0000:04:00.0: Full memory verification failed index (40148) read: 65012EE2 write: 65012380
[16969.309687] bcwc_pcie 0000:04:00.0: Full memory verification failed index (40336) read: 27F000E9 write: 27F02388
[16969.309812] bcwc_pcie 0000:04:00.0: Full memory verification failed index (40435) read: 90FA758C write: D5AC758C
[16969.310106] bcwc_pcie 0000:04:00.0: Full memory verification failed index (40607) read: 16067AB7 write: 16067A8B
[16969.310187] bcwc_pcie 0000:04:00.0: Full memory verification failed index (40667) read: 19A16403 write: 19A16470
[16969.310209] bcwc_pcie 0000:04:00.0: Full memory verification failed index (40682) read: 5F24B284 write: E3C8B284
[16969.310285] bcwc_pcie 0000:04:00.0: Full memory verification failed index (40742) read: 182371F8 write: FE2371F8
[16969.310453] bcwc_pcie 0000:04:00.0: Full memory verification failed index (40855) read: 17E0FED1 write: 2E9D402D
[16969.310613] bcwc_pcie 0000:04:00.0: Full memory verification failed index (40977) read: FF646200 write: FF64629E
[16969.310620] bcwc_pcie 0000:04:00.0: Full memory verification failed index (40981) read: ECDC7FC1 write: 36E07FC1
[16969.311169] bcwc_pcie 0000:04:00.0: Full memory verification failed index (41379) read: 21905424 write: ECC66424
[16969.311763] bcwc_pcie 0000:04:00.0: Full memory verification failed index (41834) read: A4170B17 write: A4170B7E
[16969.311998] bcwc_pcie 0000:04:00.0: Full memory verification failed index (42014) read: F9C03FBD write: 7DAB3FBD
[16969.312796] bcwc_pcie 0000:04:00.0: Full memory verification failed index (42632) read: 84B240C3 write: 23D723C3
[16969.312848] bcwc_pcie 0000:04:00.0: Full memory verification failed index (42673) read: 4A90350E write: 9090350E
[16969.313728] bcwc_pcie 0000:04:00.0: Full memory verification failed index (43315) read: 6BCDDB7E write: 6B6A020E
[16969.314531] bcwc_pcie 0000:04:00.0: Full memory verification failed index (43842) read: 101D585 write: 101F5A0
[16969.314847] bcwc_pcie 0000:04:00.0: Full memory verification failed index (44088) read: F4F754BC write: 549254BC
[16969.315031] bcwc_pcie 0000:04:00.0: Full memory verification failed index (44232) read: 4989B7B7 write: 7696BDB7
[16969.316759] bcwc_pcie 0000:04:00.0: Full memory verification failed index (45572) read: EEEE946 write: B5A27746
[16969.316849] bcwc_pcie 0000:04:00.0: Full memory verification failed index (45640) read: B8AA92E0 write: 450B5CE0
[16969.317508] bcwc_pcie 0000:04:00.0: Full memory verification failed index (46111) read: B128813 write: B1288E9
[16969.318053] bcwc_pcie 0000:04:00.0: Full memory verification failed index (46462) read: 6D606094 write: A2996094
[16969.319359] bcwc_pcie 0000:04:00.0: Full memory verification failed index (47471) read: 54E29B4B write: 44016DD2
[16969.319390] bcwc_pcie 0000:04:00.0: Full memory verification failed index (47494) read: E9C6DA85 write: E9C6DAF9
[16969.320074] bcwc_pcie 0000:04:00.0: Full memory verification failed index (48025) read: 7D3E55B4 write: D9D6E769
[16969.320516] bcwc_pcie 0000:04:00.0: Full memory verification failed index (48362) read: 5B433FE7 write: 3976DBE7
[16969.320576] bcwc_pcie 0000:04:00.0: Full memory verification failed index (48407) read: 54143036 write: CAB83036
[16969.320710] bcwc_pcie 0000:04:00.0: Full memory verification failed index (48515) read: C25C6097 write: B6FAD697
[16969.320725] bcwc_pcie 0000:04:00.0: Full memory verification failed index (48526) read: EF7A8F60 write: 937A8F60
[16969.321509] bcwc_pcie 0000:04:00.0: Full memory verification failed index (49139) read: ABA88291 write: 5A6ACC91
[16969.321585] bcwc_pcie 0000:04:00.0: Full memory verification failed index (49199) read: CDD893DC write: CDD8930C
[16969.322190] bcwc_pcie 0000:04:00.0: Full memory verification failed index (49601) read: 8F59188E write: 1759188E
[16969.323623] bcwc_pcie 0000:04:00.0: Full memory verification failed index (50653) read: B50F1878 write: FCBE6578
[16969.325496] bcwc_pcie 0000:04:00.0: Full memory verification failed index (52099) read: 553C3A9D write: 553C3A0B
[16969.325520] bcwc_pcie 0000:04:00.0: Full memory verification failed index (52115) read: E6360EAF write: ED250EAF
[16969.325885] bcwc_pcie 0000:04:00.0: Full memory verification failed index (52379) read: B059014C write: B05AD754
[16969.326521] bcwc_pcie 0000:04:00.0: Full memory verification failed index (52817) read: 677EB467 write: 96EB0171
[16969.326844] bcwc_pcie 0000:04:00.0: Full memory verification failed index (53069) read: 9F4BE18B write: 764BE18B
[16969.328100] bcwc_pcie 0000:04:00.0: Full memory verification failed index (54016) read: BF99CA32 write: BF991449
[16969.328712] bcwc_pcie 0000:04:00.0: Full memory verification failed index (54486) read: 73B67A3B write: 34EAE927
[16969.330171] bcwc_pcie 0000:04:00.0: Full memory verification failed index (55529) read: 852F3DBF write: F6F0BABF
[16969.330520] bcwc_pcie 0000:04:00.0: Full memory verification failed index (55797) read: FBB5B7C write: FBB89A0
[16969.331171] bcwc_pcie 0000:04:00.0: Full memory verification failed index (56300) read: 796F9508 write: 84FD084
[16969.331933] bcwc_pcie 0000:04:00.0: Full memory verification failed index (56898) read: 3005ECE3 write: EB05ECE3
[16969.332656] bcwc_pcie 0000:04:00.0: Full memory verification failed index (57460) read: 498A735B write: 498A73CE
[16969.334178] bcwc_pcie 0000:04:00.0: Full memory verification failed index (58507) read: 56D03A2A write: 73755D3C
[16969.334193] bcwc_pcie 0000:04:00.0: Full memory verification failed index (58517) read: 3FBDD609 write: 3F93C817
[16969.334324] bcwc_pcie 0000:04:00.0: Full memory verification failed index (58619) read: B7EF3164 write: F0DD3164
[16969.334527] bcwc_pcie 0000:04:00.0: Full memory verification failed index (58778) read: 16F612B6 write: 6EF612B6
[16969.334552] bcwc_pcie 0000:04:00.0: Full memory verification failed index (58797) read: A1FB7799 write: DA8DFAEA
[16969.335034] bcwc_pcie 0000:04:00.0: Full memory verification failed index (59170) read: 5E0EA3B3 write: A755A3B3
[16969.335197] bcwc_pcie 0000:04:00.0: Full memory verification failed index (59300) read: C570EE3A write: C570AC71
[16969.336161] bcwc_pcie 0000:04:00.0: Full memory verification failed index (60058) read: 3A955B1 write: 2BA984B1
[16969.336499] bcwc_pcie 0000:04:00.0: Full memory verification failed index (60323) read: EE164B0A write: 98FD4B0A
[16969.340022] bcwc_pcie 0000:04:00.0: Full memory verification failed index (62891) read: 79A8BFD3 write: 79768DF5
[16969.341073] bcwc_pcie 0000:04:00.0: Full memory verification failed index (63702) read: 3B66425D write: 3B45B3F8
[16969.341466] bcwc_pcie 0000:04:00.0: Full memory verification failed index (64003) read: BFEBDFF5 write: 2B44DFF5
[16969.341482] bcwc_pcie 0000:04:00.0: Full memory verification failed index (64014) read: 257EAB92 write: 257EBDD3
[16969.342808] bcwc_pcie 0000:04:00.0: Full memory verification failed index (64951) read: BC71AE2A write: BC60F65A
[16969.345268] bcwc_pcie 0000:04:00.0: Full memory verification failed index (66818) read: F7A9B2F0 write: 18B4B2F0
[16969.347688] bcwc_pcie 0000:04:00.0: Full memory verification failed index (68542) read: D3FF2B53 write: D3FF465A
[16969.347835] bcwc_pcie 0000:04:00.0: Full memory verification failed index (68653) read: EF292CC5 write: EF293E10
[16969.348975] bcwc_pcie 0000:04:00.0: Full memory verification failed index (69545) read: 518B3139 write: 518BC90C
[16969.349081] bcwc_pcie 0000:04:00.0: Full memory verification failed index (69626) read: 4B79E5C8 write: 4B28EB42
[16969.349320] bcwc_pcie 0000:04:00.0: Full memory verification failed index (69804) read: 9381B0F7 write: 2037B0F7
[16969.354028] bcwc_pcie 0000:04:00.0: Full memory verification failed index (73276) read: 11409FD0 write: 15DBF253
[16969.354080] bcwc_pcie 0000:04:00.0: Full memory verification failed index (73315) read: 4F047D60 write: 4F047D50
[16969.354984] bcwc_pcie 0000:04:00.0: Full memory verification failed index (73998) read: 7ED7EF70 write: B8B79B70
[16969.355204] bcwc_pcie 0000:04:00.0: Full memory verification failed index (74172) read: C92568C8 write: D72568C8
[16969.356605] bcwc_pcie 0000:04:00.0: Full memory verification failed index (75267) read: 401CABA5 write: 1FC0ABA5
[16969.357750] bcwc_pcie 0000:04:00.0: Full memory verification failed index (76071) read: 6B6E9348 write: E9E7EC2A
[16969.358292] bcwc_pcie 0000:04:00.0: Full memory verification failed index (76405) read: C4263ABE write: 38263ABE
[16969.358529] bcwc_pcie 0000:04:00.0: Full memory verification failed index (76594) read: 55C37267 write: B537E622
[16969.358822] bcwc_pcie 0000:04:00.0: Full memory verification failed index (76823) read: E690107A write: E69010F2
[16969.362333] bcwc_pcie 0000:04:00.0: Full memory verification failed index (79489) read: 3AC6C2FE write: 3AC6C20B
[16969.365050] bcwc_pcie 0000:04:00.0: Full memory verification failed index (81476) read: E737A0EB write: 166AC045
[16969.365572] bcwc_pcie 0000:04:00.0: Full memory verification failed index (81878) read: 869052B5 write: E7D83CB5
[16969.365902] bcwc_pcie 0000:04:00.0: Full memory verification failed index (82080) read: E9323FEC write: 42417EEC
[16969.366175] bcwc_pcie 0000:04:00.0: Full memory verification failed index (82255) read: FE0A9147 write: BC859147
[16969.366941] bcwc_pcie 0000:04:00.0: Full memory verification failed index (82818) read: 5BC78CD7 write: 89306D87
[16969.367694] bcwc_pcie 0000:04:00.0: Full memory verification failed index (83368) read: 79534136 write: 81534136
[16969.368381] bcwc_pcie 0000:04:00.0: Full memory verification failed index (83887) read: 6F3456EB write: 6F342EF4
[16969.368806] bcwc_pcie 0000:04:00.0: Full memory verification failed index (84216) read: C0A84F30 write: F5854F30
[16969.370572] bcwc_pcie 0000:04:00.0: Full memory verification failed index (85447) read: 3B596B0A write: 54F1DD0A
[16969.370913] bcwc_pcie 0000:04:00.0: Full memory verification failed index (85710) read: 18D7E3EC write: 18D705E7
[16969.371803] bcwc_pcie 0000:04:00.0: Full memory verification failed index (86409) read: 353C88DA write: C43C88DA
[16969.372637] bcwc_pcie 0000:04:00.0: Full memory verification failed index (87055) read: 30A38B3C write: BFA38B3C
[16969.372802] bcwc_pcie 0000:04:00.0: Full memory verification failed index (87180) read: 7BB8D3CF write: 9786D0CF
[16969.373945] bcwc_pcie 0000:04:00.0: Full memory verification failed index (87981) read: 2C2F0AE write: F0C2F0AE
[16969.375443] bcwc_pcie 0000:04:00.0: Full memory verification failed index (89106) read: E2573C67 write: 8B788867
[16969.376334] bcwc_pcie 0000:04:00.0: Full memory verification failed index (89790) read: EE70C796 write: DD70C796
[16969.376527] bcwc_pcie 0000:04:00.0: Full memory verification failed index (89940) read: B8F62749 write: B8F62757
[16969.377049] bcwc_pcie 0000:04:00.0: Full memory verification failed index (90316) read: 6675AFFC write: 6675AF15
[16969.377937] bcwc_pcie 0000:04:00.0: Full memory verification failed index (90914) read: 43628C25 write: 5DA17A57
[16969.378166] bcwc_pcie 0000:04:00.0: Full memory verification failed index (91048) read: 8BD62C0F write: 17B72D0F
[16969.378240] bcwc_pcie 0000:04:00.0: Full memory verification failed index (91105) read: AB19D823 write: AB6EC0CF
[16969.379895] bcwc_pcie 0000:04:00.0: Full memory verification failed index (92348) read: 45BD5916 write: 45EFC0F4
[16969.384280] bcwc_pcie 0000:04:00.0: Full memory verification failed index (95601) read: CBBD8FC1 write: CB84C8CD
[16969.384448] bcwc_pcie 0000:04:00.0: Full memory verification failed index (95731) read: 1857ADDB write: 18D12619
[16969.387085] bcwc_pcie 0000:04:00.0: Full memory verification failed index (97700) read: 21EA43B write: 91EA43B
[16969.387853] bcwc_pcie 0000:04:00.0: Full memory verification failed index (98251) read: 4B68718D write: DBD8D3B5
[16969.389284] bcwc_pcie 0000:04:00.0: Full memory verification failed index (99371) read: ED8B97EB write: B83657EB
[16969.389447] bcwc_pcie 0000:04:00.0: Full memory verification failed index (99497) read: FF8549CA write: 777B0C53
[16969.390439] bcwc_pcie 0000:04:00.0: Full memory verification failed index (100180) read: 94E2802 write: A4B1E152
[16969.397930] bcwc_pcie 0000:04:00.0: Full memory verification failed index (105782) read: BEACCEE1 write: BE98EB1F
[16969.398612] bcwc_pcie 0000:04:00.0: Full memory verification failed index (106308) read: 1B7B8DEA write: CF7B8DEA
[16969.402630] bcwc_pcie 0000:04:00.0: Full memory verification failed index (109327) read: 30F75B24 write: 30F75B4F
[16969.404241] bcwc_pcie 0000:04:00.0: Full memory verification failed index (110520) read: B94C7250 write: 16ACEA50
[16969.411219] bcwc_pcie 0000:04:00.0: Full memory verification failed index (115819) read: B14C1E28 write: B16C9E96
[16969.424828] bcwc_pcie 0000:04:00.0: Full memory verification failed index (126021) read: CFD23E3B write: CFD293ED
[16969.427560] bcwc_pcie 0000:04:00.0: Full memory verification failed index (128092) read: 94D129E1 write: 94D125CD

Leave feedback to Broadcom?

Hi,

Thanks for your work!

It might be helpful to put a link on the wiki to Broadcom feedback page:
http://www.broadcom.com/contact/feedback.php
and ask people to leave a courteous request to provide any information to help develop a driver for the the 1570 PCIe webcam used in MacBooks (mid 2013 and later), with a link to this repo.

Regards,

Seb

failed with error -5 on Ubuntu 15.10 (4.2.0-23-generic) on MBP11,1

Hi. I have tried to get the camera working but module seems not to load correctly. I have tried the unloading of bdc_pci before. The error reported by dmesg is (full output copied):

[ 3055.280538] Linux video capture interface: v2.00
[ 3055.287336] facetimehd 0000:02:00.0: Found FaceTime HD camera with device id: 1570
[ 3055.287609] facetimehd 0000:02:00.0: Setting 64bit DMA mask
[ 3055.292989] facetimehd 0000:02:00.0: S2 PCIe link init succeeded
[ 3055.293018] facetimehd 0000:02:00.0: Refclk: 25MHz (0xa)
[ 3055.302980] facetimehd 0000:02:00.0: PLL reset finished
[ 3055.302985] facetimehd 0000:02:00.0: Waiting for S2 PLL to lock at 450 MHz
[ 3055.557419] facetimehd 0000:02:00.0: Failed to lock S2 PLL: 0xc902c902
[ 3055.577366] facetimehd 0000:02:00.0: DDR40 PHY PLL locked on safe settings
[ 3055.577380] facetimehd 0000:02:00.0: STRAP valid
[ 3055.577381] facetimehd 0000:02:00.0: Configuring DDR PLLs for 450 MHz
[ 3055.577388] facetimehd 0000:02:00.0: DDR40 PLL is locked after 0 us
[ 3055.577397] facetimehd 0000:02:00.0: First DDR40 VDL calibration completed after 2 us
[ 3055.577408] facetimehd 0000:02:00.0: Second DDR40 VDL calibration completed after 2 us
[ 3055.577409] facetimehd 0000:02:00.0: Using step size 154
[ 3055.577414] facetimehd 0000:02:00.0: VDL set to: coarse=0x10008, fine=0x1011b
[ 3055.577419] facetimehd 0000:02:00.0: Virtual VTT enabled
[ 3055.597832] facetimehd 0000:02:00.0: S2 DRAM memory address: 0x22159559
[ 3055.597845] facetimehd 0000:02:00.0: Rewrite DDR mode registers succeeded
[ 3055.598041] facetimehd 0000:02:00.0: Full memory verification succeeded! (0)
[ 3056.055456] facetimehd 0000:02:00.0: Loaded firmware, size: 1392kb
[ 3066.052140] facetimehd 0000:02:00.0: Init failed! No wake signal
[ 3066.052234] facetimehd: probe of 0000:02:00.0 failed with error -5

Extra info:

$ uname -a
Linux ushuaia 4.2.0-23-generic #28-Ubuntu SMP Sun Dec 27 17:47:31 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

$ sudo dmidecode -s system-product-name
MacBookPro11,1
Invalid entry length (0). DMI table is broken! Stop.

$ md5sum /lib/firmware/facetimehd/firmware.bin
4e1d11e205e5c55d128efa0029b268fe /lib/firmware/facetimehd/firmware.bin

Current commit: dc55cf3

Any hints would be appreciated.

Compatible firmware versions

Apparently there are a lot of different firmware versions in the drivers and not all of them work with the driver here. The one I got from my old Mavericks System didn't work. Also the one in the Windows drivers linked in one of the defects also didn't work.

However, after upgrading to El Capitan I got a firmware which worked. Great work from your side there!

Maybe it's a good idea to document which ones work and which don't.
Working version:
OSX_HASH=a9ad5b3dc36025ff92cc41b23b7f2437
FW_HASH=4e1d11e205e5c55d128efa0029b268fe
extraction works with your script, no other changes needed.

Set files on the other hand seem to be more universal. Using the one from the Windows driver with the new Mac OS driver seems to work. Btw. will you add an extraction script for those too?

Does not create /dev/video on MacBookPro11,4

All commands from the Ubuntu/Debian guide runs without any errors, but /dev/video is not created.

I did unload modprobe -r bdc_pci before modprobe facetimehd.

Playing tv://.
Detected file format: TV
Selected driver: v4l2
 name: Video 4 Linux 2 input
 author: Martin Olschewski <[email protected]>
 comment: first try, more to come ;-)
v4l2: unable to open '/dev/video0': No such file or directory
v4l2: ioctl set mute failed: Bad file descriptor
v4l2: 0 frames successfully processed, 0 frames dropped.
Opening as detected format "TV" failed.
Failed to recognize file format.

What is the status of the code supporting these webcams?

Hi there! I just wanted to thank you for your effort and thanks to a recent Hacker News post I decided to stop by not to bug you but to actually ask (quite generally speaking) what is the current status of the work?

Just to be clear, I am not demanding anything, I am simply curious because there is some activity going on but it's hard to tell what's up from the outside :-)

"vb2: drop v4l2_format argument from queue_setup" commit breaks facetimehd

This commit applied in linux>=4.4
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/include/media/videobuf2-core.h?id=df9ecb0cad14b952a2865f8b3af86b2bbadfab45

produces this warning

/usr/local/src/bcwc_pcie/fthd_v4l2.c:289:28: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
.queue_setup = fthd_buffer_queue_setup,
^
/usr/local/src/bcwc_pcie/fthd_v4l2.c:289:28: note: (near initialization for ‘vb2_queue_ops.queue_setup’)

and then dmesg is full of:
[ 340.238342] facetimehd: Unknown symbol vb2_queue_init (err 0)
[ 340.238396] facetimehd: Unknown symbol vb2_ioctl_streamoff (err 0)
[ 340.238417] facetimehd: Unknown symbol vb2_ioctl_expbuf (err 0)
[ 340.238499] facetimehd: Unknown symbol vb2_ops_wait_finish (err 0)
[ 340.238553] facetimehd: Unknown symbol vb2_ioctl_querybuf (err 0)
[ 340.238634] facetimehd: Unknown symbol vb2_fop_release (err 0)
[ 340.238681] facetimehd: Unknown symbol vb2_ioctl_dqbuf (err 0)
[ 340.238714] facetimehd: Unknown symbol vb2_ioctl_create_bufs (err 0)
[ 340.238784] facetimehd: Unknown symbol vb2_ioctl_qbuf (err 0)
[ 340.238815] facetimehd: Unknown symbol vb2_fop_mmap (err 0)

Happy refactoring :)

Xavier

Macbook Pro 11,3 Camera not working

Ok, so I followed the directions and I cannot get the camera to work. Running Ubuntu 15.10

❯ lsmod| grep face                                                    
facetimehd             94208  0
videobuf2_dma_sg       16384  1 facetimehd
videobuf2_core         49152  1 facetimehd
videodev              172032  3 v4l2_common,facetimehd,videobuf2_core

I have the firmware in the right place

 ls /lib/firmware/facetimehd                                        
firmware.bin

Any ideas?

Ubuntu 15.10: make install failed

Hi,

I have a Macbook Pro with Ubuntu 15.10 and I follow the procedure and it worked unit I got this :

sudo make install make -C /lib/modules/4.2.0-27-generic/build M=/home/mbelanger/dev/bcwc_pcie modules_install make[1]: Entering directory '/usr/src/linux-headers-4.2.0-27-generic' INSTALL /home/mbelanger/dev/bcwc_pcie/facetimehd.ko Can't read private key DEPMOD 4.2.0-27-generic make[1]: Leaving directory '/usr/src/linux-headers-4.2.0-27-generic'

I also have this error when I do dmesg command :
facetimehd: module verification failed: signature and/or required key missing - tainting kernel

I tried several solution like disabling the CONFIG_MODULE_SIG and it didn't work.
Also tried #29 but did not work either

Thanks

Driver Build Issue - Debian

Hi,

I'm on Debian with kernel 3.16.0-4-amd64, on a MacBookAir6,2 I'm having problems building the driver. Make gives me the following output.

make -C /lib/modules/3.16.0-4-amd64/build M=/home/rose/bin/bcwc_pcie modules
make[1]: Entering directory '/usr/src/linux-headers-3.16.0-4-amd64'
Makefile:10: *** mixed implicit and normal rules: deprecated syntax
make[1]: Entering directory `/usr/src/linux-headers-3.16.0-4-amd64'
  CC [M]  /home/rose/bin/bcwc_pcie/fthd_v4l2.o
/home/rose/bin/bcwc_pcie/fthd_v4l2.c: In function ‘fthd_v4l2_register’:
/home/rose/bin/bcwc_pcie/fthd_v4l2.c:705:2: error: implicit declaration of function ‘vb2_dma_sg_init_ctx’ [-Werror=implicit-function-declaration]
  dev_priv->alloc_ctx = vb2_dma_sg_init_ctx(&dev_priv->pdev->dev);
  ^
/home/rose/bin/bcwc_pcie/fthd_v4l2.c:705:22: warning: assignment makes pointer from integer without a cast [enabled by default]
  dev_priv->alloc_ctx = vb2_dma_sg_init_ctx(&dev_priv->pdev->dev);
                      ^
/home/rose/bin/bcwc_pcie/fthd_v4l2.c: In function ‘fthd_v4l2_unregister’:
/home/rose/bin/bcwc_pcie/fthd_v4l2.c:740:2: error: implicit declaration of function ‘vb2_dma_sg_cleanup_ctx’ [-Werror=implicit-function-declaration]
  vb2_dma_sg_cleanup_ctx(dev_priv->alloc_ctx);
  ^
cc1: some warnings being treated as errors
/usr/src/linux-headers-3.16.0-4-common/scripts/Makefile.build:262: recipe for target '/home/rose/bin/bcwc_pcie/fthd_v4l2.o' failed
make[4]: *** [/home/rose/bin/bcwc_pcie/fthd_v4l2.o] Error 1
/usr/src/linux-headers-3.16.0-4-common/Makefile:1352: recipe for target '_module_/home/rose/bin/bcwc_pcie' failed
make[3]: *** [_module_/home/rose/bin/bcwc_pcie] Error 2
Makefile:181: recipe for target 'sub-make' failed
make[2]: *** [sub-make] Error 2
Makefile:8: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-3.16.0-4-amd64'
Makefile:9: recipe for target 'all' failed
make: *** [all] Error 2

Any help is much appreciated :)

Thanks,
Rose

Cannot get mplayer to work ubuntu

Getting this message when trying to load mplayer with: mplayer tv://.
MPlayer2 2.0-728-g2c378c7-4build1 (C) 2000-2012 MPlayer Team
Cannot open file '/home/havardpettersen/.mplayer/input.conf': No such file or directory
Failed to open /home/havardpettersen/.mplayer/input.conf.
Cannot open file '/etc/mplayer/input.conf': No such file or directory
Failed to open /etc/mplayer/input.conf.

Playing tv://.
Detected file format: TV
Selected driver: v4l2
name: Video 4 Linux 2 input
author: Martin Olschewski [email protected]
comment: first try, more to come ;-)
v4l2: unable to open '/dev/video0': No such file or directory
v4l2: ioctl set mute failed: Bad file descriptor
v4l2: 0 frames successfully processed, 0 frames dropped.
Opening as detected format "TV" failed.
Failed to recognize file format.

Exiting... (End of file)

Camera does not work in Cheese either

webcam not recognized

Hello,

Thank you for the module, I've got my new mbp13 and the webcam is not recognized in "cheese". I compiled the kernel module and it loads with this message in dmesg:

[ 425.699386] bcwc_pcie 0000:02:00.0: Found Broadcom PCIe webcam with device id: 1570
[ 425.700678] bcwc_pcie 0000:02:00.0: Allocated S2 regs (BAR 0). 65536 bytes at 0xffffc9000b880000
[ 425.700688] bcwc_pcie 0000:02:00.0: Allocated S2 mem (BAR 2). 268435456 bytes at 0xffffc90023100000
[ 425.700695] bcwc_pcie 0000:02:00.0: Allocated ISP regs (BAR 4). 1048576 bytes at 0xffffc9000bf00000
[ 425.700767] bcwc_pcie 0000:02:00.0: irq 70 for MSI/MSI-X
[ 425.700839] bcwc_pcie 0000:02:00.0: Setting 64bit DMA mask
[ 425.700865] bcwc_pcie 0000:02:00.0: S2 PCIe link init succeeded
[ 425.700919] bcwc_pcie 0000:02:00.0: Refclk: 25MHz
[ 425.710950] bcwc_pcie 0000:02:00.0: PLL reset finished
[ 425.710956] bcwc_pcie 0000:02:00.0: Waiting for S2 PLL to lock at 450 MHz
[ 425.710987] bcwc_pcie 0000:02:00.0: S2 PLL is locked after 10 us
[ 425.721049] bcwc_pcie 0000:02:00.0: S2 PLL is in bypass mode
[ 425.741164] bcwc_pcie 0000:02:00.0: DDR40 PHY PLL locked on safe settings
[ 425.741184] bcwc_pcie 0000:02:00.0: STRAP valid
[ 425.741186] bcwc_pcie 0000:02:00.0: Configuring DDR PLLs for 450 MHz
[ 425.741195] bcwc_pcie 0000:02:00.0: DDR40 PLL is locked after 0 us
[ 425.741206] bcwc_pcie 0000:02:00.0: First DDR40 VDL calibration completed after 2 us
[ 425.741215] bcwc_pcie 0000:02:00.0: Second DDR40 VDL calibration completed after 1 us
[ 425.741217] bcwc_pcie 0000:02:00.0: Using default step size (708)
[ 425.741225] bcwc_pcie 0000:02:00.0: VDL set to: coarse=0x1003d, fine=0x1011a
[ 425.741231] bcwc_pcie 0000:02:00.0: Virtual VTT enabled
[ 425.761805] bcwc_pcie 0000:02:00.0: S2 DRAM memory address: 0x22159559
[ 425.761821] bcwc_pcie 0000:02:00.0: Rewrite DDR mode registers succeeded
[ 425.762570] bcwc_pcie 0000:02:00.0: rd_data_dly_fifo succeeded
[ 426.108330] bcwc_pcie 0000:02:00.0: Full memory verification failed! (221)
[ 574.533151] bcwc_pcie 0000:02:00.0: Found Broadcom PCIe webcam with device id: 1570
[ 574.534737] bcwc_pcie 0000:02:00.0: Allocated S2 regs (BAR 0). 65536 bytes at 0xffffc9000b880000
[ 574.534746] bcwc_pcie 0000:02:00.0: Allocated S2 mem (BAR 2). 268435456 bytes at 0xffffc90022f00000
[ 574.534750] bcwc_pcie 0000:02:00.0: Allocated ISP regs (BAR 4). 1048576 bytes at 0xffffc9000bf00000
[ 574.534835] bcwc_pcie 0000:02:00.0: irq 70 for MSI/MSI-X
[ 574.534911] bcwc_pcie 0000:02:00.0: Setting 64bit DMA mask
[ 574.534945] bcwc_pcie 0000:02:00.0: S2 PCIe link init succeeded
[ 574.534993] bcwc_pcie 0000:02:00.0: Refclk: 25MHz
[ 574.545020] bcwc_pcie 0000:02:00.0: PLL reset finished
[ 574.545027] bcwc_pcie 0000:02:00.0: Waiting for S2 PLL to lock at 450 MHz
[ 574.545058] bcwc_pcie 0000:02:00.0: S2 PLL is locked after 10 us
[ 574.555089] bcwc_pcie 0000:02:00.0: S2 PLL is in bypass mode
[ 574.575159] bcwc_pcie 0000:02:00.0: DDR40 PHY PLL locked on safe settings
[ 574.575196] bcwc_pcie 0000:02:00.0: STRAP valid
[ 574.575199] bcwc_pcie 0000:02:00.0: Configuring DDR PLLs for 450 MHz
[ 574.575209] bcwc_pcie 0000:02:00.0: DDR40 PLL is locked after 0 us
[ 574.575221] bcwc_pcie 0000:02:00.0: First DDR40 VDL calibration completed after 2 us
[ 574.575230] bcwc_pcie 0000:02:00.0: Second DDR40 VDL calibration completed after 1 us
[ 574.575233] bcwc_pcie 0000:02:00.0: Using default step size (708)
[ 574.575240] bcwc_pcie 0000:02:00.0: VDL set to: coarse=0x1003d, fine=0x1011a
[ 574.575248] bcwc_pcie 0000:02:00.0: Virtual VTT enabled
[ 574.595800] bcwc_pcie 0000:02:00.0: S2 DRAM memory address: 0x22159559
[ 574.595818] bcwc_pcie 0000:02:00.0: Rewrite DDR mode registers succeeded
[ 574.596614] bcwc_pcie 0000:02:00.0: rd_data_dly_fifo succeeded
[ 574.941045] bcwc_pcie 0000:02:00.0: Full memory verification failed! (221)

This is the lspci -vv output:

02:00.0 Multimedia controller: Broadcom Corporation Device 1570
Subsystem: Broadcom Corporation Device 1570
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 256 bytes
Interrupt: pin A routed to IRQ 70
Region 0: Memory at b0900000 (64-bit, non-prefetchable) [size=64K]
Region 2: Memory at 90000000 (64-bit, prefetchable) [size=256M]
Region 4: Memory at b0800000 (64-bit, non-prefetchable) [size=1M]
Capabilities: [48] Power Management version 3
Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=2 PME-
Capabilities: [58] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee00438 Data: 0000
Capabilities: [68] Vendor Specific Information: Len=44 Capabilities: [ac] Express (v2) Endpoint, MSI 00 DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd+ ExtTag- PhantFunc- AuxPwr+ NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend- LnkCap: Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <2us, L1 <32us ClockPM+ Surprise- LLActRep- BwNot- LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Via WAKE# DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis- Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1- EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest- Capabilities: [100 v1] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+ CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+ AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn- Capabilities: [13c v1] Device Serial Number 00-00-00-ff-ff-00-00-00 Capabilities: [150 v1] Power Budgeting
Capabilities: [160 v1] Virtual Channel
Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
Arb: Fixed- WRR32- WRR64- WRR128-
Ctrl: ArbSelect=Fixed
Status: InProgress-
VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
Status: NegoPending- InProgress-
Capabilities: [1b0 v1] Latency Tolerance Reporting
Max snoop latency: 3145728ns
Max no snoop latency: 3145728ns
Capabilities: [220 v1] #15
Kernel driver in use: bcwc_pcie

Is there something I can check, change to help for make this module work ?

Cheers

ERR: ./H4ISPCD/filters/IC/CImageCaptureH4.cpp, 781: FlowIC00: Frame done timeout! frameCount = -1.

I installed bcwc_pcie-firmware-bc and bcwc_pcie through @mauritiusdadd AUR packages.
I did sudo modprobe -r bdc_pci
I loaded facetimehd and then /dev/video0 was created.
I tried qv4l2 and mplayer tv://, and both times at the kernel log I get this error:
(BTW the camera LED turns green).

Kernel log during qv4l2

kernel: FWMSG: [ISP] CH = 0 CMD = 0x0106 [CISP_CMD_CH_CAMERA_CONFIG_GET]
kernel: FWMSG: [DSC] CH = 0   Camera current config Get [0] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0106 [CISP_CMD_CH_CAMERA_CONFIG_GET]
kernel: FWMSG: [DSC] CH = 0   Camera current config Get [1] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0107 [CISP_CMD_CH_CAMERA_CONFIG_SELECT]
kernel: FWMSG: [DSC] CH = 0   Camera set to config -> 0 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0801 [CISP_CMD_CH_CROP_SET]
kernel: FWMSG: [DSC] CH = 0   CROP -> [0, 0][1280, 720] within [0, 0][1280, 720]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0b01 [CISP_CMD_CH_OUTPUT_CONFIG_SET]
kernel: FWMSG: [DSC] CH = 0   New Output config -> format = 1, range 0, size = 1280x720
kernel: FWMSG: [ISP] CH = 0 CMD = 0x010e [CISP_CMD_CH_BUFFER_RECYCLE_MODE_SET]
kernel: FWMSG: [DSC] CH = 0   Dynamic Buffers Recycling Mode Set [EMPTY ONLY] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x010f [CISP_CMD_CH_BUFFER_RECYCLE_START]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x8206 [CISP_CMD_APPLE_CH_AE_METERING_MODE_SET]
kernel: FWMSG: [DSC] CH = 0   AE Metering Mode Set [3] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0c00 [CISP_CMD_CH_DRC_START]
kernel: FWMSG: [ISP] CH = 0 CMD = 0xc300 [CISP_CMD_APPLE_CH_TONE_CURVE_ADAPTATION_START]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0218 [CISP_CMD_CH_AE_SPEED_SET]
kernel: FWMSG: [DSC] CH = 0   AE Speed Set [60] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x021a [CISP_CMD_CH_AE_STABILITY_SET]
kernel: FWMSG: [DSC] CH = 0   AE Stability Set [75] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0229 [CISP_CMD_CH_AE_STABILITY_TO_STABLE_SET]
kernel: FWMSG: [DSC] CH = 0   AE Stability Set [8] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0115 [CISP_CMD_CH_SIF_PIXEL_FORMAT_SET]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0124 [CISP_CMD_CH_CAMERA_ERR_HANDLE_CONFIG]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0d05 [CISP_CMD_CH_FACE_DETECTION_ENABLE]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0d00 [CISP_CMD_CH_FACE_DETECTION_START]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0208 [CISP_CMD_CH_AE_FRAME_RATE_MAX_SET]
kernel: FWMSG: [DSC] CH = 0   AE Frame Rate Max Set [10240] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x020a [CISP_CMD_CH_AE_FRAME_RATE_MIN_SET]
kernel: FWMSG: [DSC] CH = 0   AE Frame Rate Min Set [10240] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0xc100 [CISP_CMD_APPLE_CH_TEMPORAL_FILTER_START]
kernel: FWMSG: [ISP] CH = 0 CMD = 0xc102 [CISP_CMD_APPLE_CH_MOTION_HISTORY_START]
kernel: FWMSG: [ISP] CH = 0 CMD = 0xc113 [CISP_CMD_APPLE_CH_TEMPORAL_FILTER_ENABLE]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x8106 [CISP_CMD_APPLE_CH_STREAMING_MODE_SET]
kernel: FWMSG: [DSC] CH = 0   Streaming Mode Set [0]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0b02 [CISP_CMD_CH_SCALER_BRIGHTNESS_SET]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0b03 [CISP_CMD_CH_SCALER_CONTRAST_SET]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0100 [CISP_CMD_CH_START]
kernel: FWMSG: ERR: ./H4ISPCD/filters/IC/CImageCaptureH4.cpp, 781: FlowIC00: Frame done timeout! frameCount = -1.

Kernel log during mplayer tv://

kernel: FWMSG: [ISP] CH = 0 CMD = 0x0101 [CISP_CMD_CH_STOP]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0104 [CISP_CMD_CH_BUFFER_RETURN]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0d01 [CISP_CMD_CH_FACE_DETECTION_STOP]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0d04 [CISP_CMD_CH_FACE_DETECTION_DISABLE]
kernel: FWMSG: [ISP] CH = 0 CMD = 0xc114 [CISP_CMD_APPLE_CH_TEMPORAL_FILTER_DISABLE]
kernel: FWMSG: [ISP] CH = 0 CMD = 0xc103 [CISP_CMD_APPLE_CH_MOTION_HISTORY_STOP]
kernel: FWMSG: [ISP] CH = 0 CMD = 0xc101 [CISP_CMD_APPLE_CH_TEMPORAL_FILTER_STOP]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0106 [CISP_CMD_CH_CAMERA_CONFIG_GET]
kernel: FWMSG: [DSC] CH = 0   Camera current config Get [0] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0106 [CISP_CMD_CH_CAMERA_CONFIG_GET]
kernel: FWMSG: [DSC] CH = 0   Camera current config Get [1] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0107 [CISP_CMD_CH_CAMERA_CONFIG_SELECT]
kernel: FWMSG: [DSC] CH = 0   Camera set to config -> 0 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0801 [CISP_CMD_CH_CROP_SET]
kernel: FWMSG: [DSC] CH = 0   CROP -> [160, 0][960, 720] within [0, 0][1280, 720]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0b01 [CISP_CMD_CH_OUTPUT_CONFIG_SET]
kernel: FWMSG: [DSC] CH = 0   New Output config -> format = 1, range 0, size = 640x480
kernel: FWMSG: [ISP] CH = 0 CMD = 0x010e [CISP_CMD_CH_BUFFER_RECYCLE_MODE_SET]
kernel: FWMSG: [DSC] CH = 0   Dynamic Buffers Recycling Mode Set [EMPTY ONLY] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x010f [CISP_CMD_CH_BUFFER_RECYCLE_START]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x8206 [CISP_CMD_APPLE_CH_AE_METERING_MODE_SET]
kernel: FWMSG: [DSC] CH = 0   AE Metering Mode Set [3] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0c00 [CISP_CMD_CH_DRC_START]
kernel: FWMSG: [ISP] CH = 0 CMD = 0xc300 [CISP_CMD_APPLE_CH_TONE_CURVE_ADAPTATION_START]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0218 [CISP_CMD_CH_AE_SPEED_SET]
kernel: FWMSG: [DSC] CH = 0   AE Speed Set [60] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x021a [CISP_CMD_CH_AE_STABILITY_SET]
kernel: FWMSG: [DSC] CH = 0   AE Stability Set [75] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0229 [CISP_CMD_CH_AE_STABILITY_TO_STABLE_SET]
kernel: FWMSG: [DSC] CH = 0   AE Stability Set [8] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0115 [CISP_CMD_CH_SIF_PIXEL_FORMAT_SET]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0124 [CISP_CMD_CH_CAMERA_ERR_HANDLE_CONFIG]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0d05 [CISP_CMD_CH_FACE_DETECTION_ENABLE]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0d00 [CISP_CMD_CH_FACE_DETECTION_START]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0208 [CISP_CMD_CH_AE_FRAME_RATE_MAX_SET]
kernel: FWMSG: [DSC] CH = 0   AE Frame Rate Max Set [10240] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x020a [CISP_CMD_CH_AE_FRAME_RATE_MIN_SET]
kernel: FWMSG: [DSC] CH = 0   AE Frame Rate Min Set [10240] 
kernel: FWMSG: [ISP] CH = 0 CMD = 0xc100 [CISP_CMD_APPLE_CH_TEMPORAL_FILTER_START]
kernel: FWMSG: [ISP] CH = 0 CMD = 0xc102 [CISP_CMD_APPLE_CH_MOTION_HISTORY_START]
kernel: FWMSG: [ISP] CH = 0 CMD = 0xc113 [CISP_CMD_APPLE_CH_TEMPORAL_FILTER_ENABLE]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x8106 [CISP_CMD_APPLE_CH_STREAMING_MODE_SET]
kernel: FWMSG: [DSC] CH = 0   Streaming Mode Set [0]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0b02 [CISP_CMD_CH_SCALER_BRIGHTNESS_SET]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0b03 [CISP_CMD_CH_SCALER_CONTRAST_SET]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0100 [CISP_CMD_CH_START]
kernel: FWMSG: ERR: ./H4ISPCD/filters/IC/CImageCaptureH4.cpp, 781: FlowIC00: Frame done timeout! frameCount = -1. 
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0101 [CISP_CMD_CH_STOP]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0104 [CISP_CMD_CH_BUFFER_RETURN]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0d01 [CISP_CMD_CH_FACE_DETECTION_STOP]
kernel: FWMSG: [ISP] CH = 0 CMD = 0x0d04 [CISP_CMD_CH_FACE_DETECTION_DISABLE]
kernel: FWMSG: [ISP] CH = 0 CMD = 0xc114 [CISP_CMD_APPLE_CH_TEMPORAL_FILTER_DISABLE]
kernel: FWMSG: [ISP] CH = 0 CMD = 0xc103 [CISP_CMD_APPLE_CH_MOTION_HISTORY_STOP]
kernel: FWMSG: [ISP] CH = 0 CMD = 0xc101 [CISP_CMD_APPLE_CH_TEMPORAL_FILTER_STOP]

And this is the error printed by mplayer tv://

Starting playback...
[VS] error (vdpVideoSurfacePutBitsYCbCr_glsl): not implemented source YCbCr format 'VDP_YCBCR_FORMAT_YUYV'
[vdpau] Error when calling vdp_video_surface_put_bits_y_cb_cr: VDP_STATUS_INVALID_Y_CB_CR_FORMAT

lshw

danmilon-laptop           
    description: Notebook
    product: MacBookPro11,1 (System SKU#)
    vendor: Apple Inc.
    version: 1.0
    serial: C02M40BKFH04
    width: 64 bits
    capabilities: smbios-2.4 dmi-2.4 vsyscall32
    configuration: boot=normal chassis=notebook family=Mac sku=System SKU# uuid=8047E3A1-AA5E-EF5F-9219-8072761D237B
  *-core
       description: Motherboard
       product: Mac-189A3D4F975D5FFC
       vendor: Apple Inc.
       physical id: 0
       version: MacBookPro11,1
       serial: C024034051PFJYY18

...
           *-multimedia
                description: Multimedia controller
                product: 720p FaceTime HD Camera
                vendor: Broadcom Corporation
                physical id: 0
                bus info: pci@0000:02:00.0
                version: 00
                width: 64 bits
                clock: 33MHz
                capabilities: pm msi pciexpress bus_master cap_list
                configuration: driver=facetimehd latency=0
                resources: irq:51 memory:b0900000-b090ffff memory:90000000-9fffffff memory:b0800000-b08fffff

Any idea what's wrong? :)

modprobe facetimehd fails with unknown symbols

Hi, thanks for working this. Very much appreciated.

Trying to insert the facetimehd module fails on my 11,5 system, which runs 4.3.3 with pax/grsec.

$ uname -a
Linux t 4.3.3-hardened-r7 #3 SMP Mon Jan 25 18:25:13 GMT 2016 x86_64 Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz GenuineIntel GNU/Linux

The required modules appear loaded:

$ sudo lsmod | egrep 'vid|v4l'
videobuf2_dma_sg        7864  0
videobuf2_memops        2609  1 videobuf2_dma_sg
videobuf2_core         36044  0
v4l2_common             3309  1 videobuf2_core
videodev              126967  2 v4l2_common,videobuf2_core

But the modprobe fails:

$ sudo modprobe facetimehd
modprobe: ERROR: could not insert 'facetimehd': Invalid argument

The following appears in dmesg:

[  737.720095] no symbol version for vb2_dma_sg_memops
[  737.720098] facetimehd: Unknown symbol vb2_dma_sg_memops (err -22)
[  737.720123] no symbol version for vb2_dma_sg_init_ctx
[  737.720125] facetimehd: Unknown symbol vb2_dma_sg_init_ctx (err -22)
[  737.720192] no symbol version for vb2_dma_sg_cleanup_ctx
[  737.720194] facetimehd: Unknown symbol vb2_dma_sg_cleanup_ctx (err -22)

Help?! Thanks!

How to install this

The one thing the readme is missing is how do I actually install this? At this point if it installs what do I get?

Get the firmware without Mac OS Installed

Ok, so I have not ran the mac os for the longest time on my Macbook Pro. Do I really need to reinstall El Capitan just to get this or is there another way to get the firmware? Thanks

Error occured while playing from webcam. Ubuntu 15.10 Kernel 4.5

I am on a MacBookAir 2014 model running on ubuntu 15.10, the driver is awesome and worked on kernel 4.4, but on 4.5 it just does not work anymore. Cheese says an error occured while playing from webcam, and I get a black screen where I am supposed to show on my screen. And dmesg gives this while trying to load the webcam module:

[   64.520866] facetimehd 0000:02:00.0: Direct firmware load for facetimehd/1871_01XX.dat failed with error -2
[  149.865828] FWMSG: [ISP] CMD = 0x0001 [CISP_CMD_STOP]
[  149.876910] facetimehd 0000:02:00.0: fthd_hw_deinit
[  165.600959] facetimehd 0000:02:00.0: Found FaceTime HD camera with device id: 1570
[  165.601034] facetimehd:fthd_pci_reserve_mem: Allocated S2 regs (BAR 0). 65536 bytes at 0xffffc90000940000
[  165.601036] facetimehd:fthd_pci_reserve_mem: Allocated S2 mem (BAR 2). 268435456 bytes at 0xffffc90040000000
[  165.601037] facetimehd:fthd_pci_reserve_mem: Allocated ISP regs (BAR 4). 1048576 bytes at 0xffffc90001e00000
[  165.601189] facetimehd 0000:02:00.0: Setting 64bit DMA mask
[  165.606788] facetimehd 0000:02:00.0: S2 PCIe link init succeeded
[  165.606819] facetimehd 0000:02:00.0: Refclk: 25MHz (0xa)
[  165.616794] facetimehd 0000:02:00.0: PLL reset finished
[  165.616797] facetimehd 0000:02:00.0: Waiting for S2 PLL to lock at 450 MHz
[  165.616810] facetimehd 0000:02:00.0: S2 PLL is locked after 10 us
[  165.626778] facetimehd 0000:02:00.0: S2 PLL is in bypass mode
[  165.646738] facetimehd 0000:02:00.0: DDR40 PHY PLL locked on safe settings
[  165.646754] facetimehd 0000:02:00.0: STRAP valid
[  165.646755] facetimehd 0000:02:00.0: Configuring DDR PLLs for 450 MHz
[  165.646763] facetimehd 0000:02:00.0: DDR40 PLL is locked after 0 us
[  165.646772] facetimehd 0000:02:00.0: First DDR40 VDL calibration completed after 2 us
[  165.646782] facetimehd 0000:02:00.0: Second DDR40 VDL calibration completed after 2 us
[  165.646783] facetimehd 0000:02:00.0: Using step size 152
[  165.646788] facetimehd 0000:02:00.0: VDL set to: coarse=0x10008, fine=0x1011a
[  165.646793] facetimehd 0000:02:00.0: Virtual VTT enabled
[  165.667273] facetimehd 0000:02:00.0: S2 DRAM memory address: 0x22159559
[  165.667288] facetimehd 0000:02:00.0: Rewrite DDR mode registers succeeded
[  165.667482] facetimehd 0000:02:00.0: Full memory verification succeeded! (0)
[  166.125092] facetimehd 0000:02:00.0: Loaded firmware, size: 1392kb
[  166.172369] facetimehd 0000:02:00.0: ISP woke up after 0ms
[  166.172420] facetimehd 0000:02:00.0: Number of IPC channels: 7, queue size: 44865
[  166.172500] facetimehd 0000:02:00.0: Firmware requested heap size: 3072kb
[  166.182526] facetimehd 0000:02:00.0: ISP second int after 0ms
[  166.182529] facetimehd 0000:02:00.0: Channel description table at 00800000
[  166.182544] facetimehd:isp_fill_channel_info: Channel 0: TERMINAL, type 2, source 0, size 512, offset 800700
[  166.182558] facetimehd:isp_fill_channel_info: Channel 1: IO, type 0, source 1, size 8, offset 808700
[  166.182571] facetimehd:isp_fill_channel_info: Channel 2: DEBUG, type 0, source 1, size 8, offset 808900
[  166.182584] facetimehd:isp_fill_channel_info: Channel 3: BUF_H2T, type 0, source 2, size 64, offset 808b00
[  166.182598] facetimehd:isp_fill_channel_info: Channel 4: BUF_T2H, type 1, source 3, size 64, offset 809b00
[  166.182611] facetimehd:isp_fill_channel_info: Channel 5: SHAREDMALLOC, type 1, source 3, size 8, offset 80ab00
[  166.182624] facetimehd:isp_fill_channel_info: Channel 6: IO_T2H, type 1, source 2, size 8, offset 80ad00
[  166.182627] facetimehd:fthd_channel_ringbuf_init: clearing ringbuf IO at 00808700 (size 8)
[  166.182630] facetimehd:fthd_channel_ringbuf_init: clearing ringbuf DEBUG at 00808900 (size 8)
[  166.182636] facetimehd:fthd_channel_ringbuf_init: clearing ringbuf BUF_H2T at 00808b00 (size 64)
[  166.192672] facetimehd 0000:02:00.0: magic value: 00000000 after 0 ms
[  166.192673] facetimehd 0000:02:00.0: Enabling interrupts
[  166.192678] facetimehd:fthd_isp_cmd_start: sending start cmd to firmware
[  166.192680] facetimehd:fthd_isp_cmd: sending cmd 0 to firmware
[  166.192682] facetimehd:fthd_channel_ringbuf_send: send 00b0c000
[  166.192699] facetimehd:fthd_handle_irq: channel SHAREDMALLOC: message available, address 00000000
[  166.192705] facetimehd:sharedmalloc_handler: Firmware allocated 65536 bytes at 00b0d000 (tag 
[  166.192706] facetimehd:fthd_channel_ringbuf_send: send 00b0d040
[  166.192902] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d042
[  166.192908] FWMSG: 
[  166.192910] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.192916] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d0c2
[  166.192932] FWMSG: - APOLLO-ISP-APPLE ------------------------------------------------------------
[  166.192933] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.192940] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d142
[  166.192945] FWMSG: 
[  166.192946] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.192952] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d1c2
[  166.192960] FWMSG:   Restart count : 0
[  166.192961] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.192967] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d242
[  166.192983] FWMSG:   Platform : mode = TARGET, ID = 0x00000000, HW = 00020018.00000000
[  166.192984] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.192990] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d2c2
[  166.192999] FWMSG:   System Clock : 200000000 Hz
[  166.193000] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193006] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d342
[  166.193015] FWMSG:   Processor mode : SUPERVISOR
[  166.193016] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193022] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d3c2
[  166.193032] FWMSG:   Cache architecture type : SEPARATE
[  166.193033] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193040] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d442
[  166.193049] FWMSG:   Cache type : WRITEBACK
[  166.193050] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193056] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d4c2
[  166.193065] FWMSG:   Data Cache Line : 32 [0x20]
[  166.193065] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193072] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d542
[  166.193081] FWMSG:   Boot arguments entries : 0
[  166.193081] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193088] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d5c2
[  166.193101] FWMSG:   Physical memory base : 0x00000000 [TLB base 0x00160000]
[  166.193102] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193109] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d642
[  166.193119] FWMSG:   Main memory :   base : 0x00000000
[  166.193120] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193171] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d6c2
[  166.193194] FWMSG:                   size : 8388608 [0x00800000] [8.0 MB]
[  166.193204] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193211] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d742
[  166.193223] FWMSG:   Extra heap :    base : 0x2080b000 [phy = 0x0080b000]
[  166.193224] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193231] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d7c2
[  166.193243] FWMSG:                   size : 3145728 [0x00300000] [3.0 MB]
[  166.193244] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193250] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d842
[  166.193263] FWMSG:   Shared window : base : 0x00800000 [static wiring]
[  166.193264] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193475] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d8c2
[  166.193490] FWMSG:                   size : 125829120 [0x07800000] [120.0 MB]
[  166.193491] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193498] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d942
[  166.193508] FWMSG:   Shared memory : base : 0x00800000
[  166.193509] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193516] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0d9c2
[  166.193529] FWMSG:                   size : 260046848 [0x0f800000] [248.0 MB]
[  166.193530] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193536] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0da42
[  166.193551] FWMSG:   TEXT : 1421992 [0x15b2a8] - text 667256, cstring  38749, const 715528
[  166.193552] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193558] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0dac2
[  166.193574] FWMSG:   DATA : 8076 [0x1f8c] - data 0, bss 460, common 1452, noinit 6144
[  166.193575] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193581] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0db42
[  166.193593] FWMSG:   Heap free space : 10002626 [0x0098a0c2]
[  166.193594] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193600] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0dbc2
[  166.193619] FWMSG:   Heap allocated space : 94656 [0x000171c0]
[  166.193620] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193627] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0dc42
[  166.193640] FWMSG:   Disclaimer : Copyright (c) APPLE Inc. All Rights Reserved.
[  166.193641] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193648] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0dcc2
[  166.193656] FWMSG:   Application : adc [release]
[  166.193657] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193664] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0dd42
[  166.193674] FWMSG:   Linked on : Jul 25 2015 - 08:48:55
[  166.193675] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193681] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0ddc2
[  166.193690] FWMSG:   Release : S2ISP-01.43.00
[  166.193691] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193697] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0de42
[  166.193705] FWMSG:   H4ISPAPPLE : 11536
[  166.193706] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193712] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0dec2
[  166.193720] FWMSG:   H4ISPCD : 4081
[  166.193721] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193727] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0df42
[  166.193734] FWMSG:   ffw : 4143
[  166.193735] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193741] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0dfc2
[  166.193753] FWMSG:   Tool-chain : iPhone OS - 7.0.3 [clang/clang++]
[  166.193754] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193761] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0e042
[  166.193766] FWMSG: 
[  166.193767] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.193975] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0e0c2
[  166.193993] FWMSG: -------------------------------------------------------------------------------
[  166.193994] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.194001] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0e142
[  166.194006] FWMSG: 
[  166.194007] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.194016] facetimehd:fthd_handle_irq: channel SHAREDMALLOC: message available, address 00000000
[  166.194023] facetimehd:sharedmalloc_handler: Firmware allocated 256 bytes at 00b1e000 (tag MISC)
[  166.194024] facetimehd:fthd_channel_ringbuf_send: send 00b1e040
[  166.194427] facetimehd:fthd_handle_irq: channel SHAREDMALLOC: message available, address 00000000
[  166.194432] facetimehd:sharedmalloc_handler: Firmware allocated 24960 bytes at 00b1f000 (tag MISC)
[  166.194433] facetimehd:fthd_channel_ringbuf_send: send 00b1f040
[  166.194940] facetimehd:fthd_handle_irq: channel SHAREDMALLOC: message available, address 00000000
[  166.194953] facetimehd:sharedmalloc_handler: Firmware allocated 256 bytes at 00b26000 (tag MISC)
[  166.194956] facetimehd:fthd_channel_ringbuf_send: send 00b26040
[  166.267010] facetimehd:fthd_handle_irq: IO channel ready
[  166.267022] facetimehd:fthd_handle_irq: DEBUG channel ready
[  166.267103] facetimehd:fthd_isp_cmd: status 0000, request_len 8 response len 0 address_flags b0c001
[  166.267109] facetimehd:fthd_isp_cmd: sending cmd 4 to firmware
[  166.267114] facetimehd:fthd_channel_ringbuf_send: send 00b0c000
[  166.267331] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0e1c2
[  166.267346] FWMSG: [ISP] CMD = 0x0004 [CISP_CMD_PRINT_ENABLE]
[  166.267348] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.267355] facetimehd:fthd_handle_irq: IO channel ready
[  166.267360] facetimehd:fthd_handle_irq: DEBUG channel ready
[  166.267437] facetimehd:fthd_isp_cmd: status 0000, request_len 12 response len 0 address_flags b0c001
[  166.267442] facetimehd:fthd_isp_cmd_camera_config: sending camera config
[  166.267444] facetimehd:fthd_isp_cmd: sending cmd 3 to firmware
[  166.267451] facetimehd:fthd_channel_ringbuf_send: send 00b0c000
[  166.267686] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0e242
[  166.267700] FWMSG: [ISP] CMD = 0x0003 [CISP_CMD_CONFIG_GET]
[  166.267702] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.267708] facetimehd:fthd_handle_irq: IO channel ready
[  166.267715] facetimehd:fthd_handle_irq: DEBUG channel ready
[  166.267860] facetimehd:fthd_isp_cmd: status 0000, request_len 28 response len 0 address_flags b0c001
[  166.267866] CAMINFO 00000000: 80 f0 fa 02 02 00 00 00 02 00 00 00 00 00 00 00  ................
[  166.267868] CAMINFO 00000010: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[  166.267871] facetimehd:fthd_isp_cmd_channel_info: sending ch info
[  166.267873] facetimehd:fthd_isp_cmd: sending cmd 269 to firmware
[  166.267962] facetimehd:fthd_channel_ringbuf_send: send 00b0c000
[  166.268215] facetimehd:fthd_handle_irq: channel TERMINAL: message available, address 00b0e2c2
[  166.268229] FWMSG: [ISP] CH = 0 CMD = 0x010d [CISP_CMD_CH_INFO_GET]
[  166.268232] facetimehd:fthd_channel_ringbuf_send: send 00000000
[  166.268238] facetimehd:fthd_handle_irq: IO channel ready
[  166.268244] facetimehd:fthd_handle_irq: DEBUG channel ready
[  166.268536] facetimehd:fthd_isp_cmd: status 0000, request_len 166 response len 0 address_flags b0c001
[  166.268543] CHINFO 00000000: 00 00 00 00 01 00 de 07 45 00 04 00 07 00 03 00  ........E.......
[  166.268546] CHINFO 00000010: 01 00 00 00 01 00 00 00 70 97 00 00 03 00 00 00  ........p.......
[  166.268550] CHINFO 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[  166.268553] CHINFO 00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[  166.268558] CHINFO 00000040: 01 00 00 00 ff ff 01 00 00 00 ff ff 00 00 00 00  ................
[  166.268561] CHINFO 00000050: 04 00 00 00 0a 00 00 00 02 00 00 00 01 00 00 00  ................
[  166.268564] CHINFO 00000060: 80 37 00 00 40 00 00 00 01 00 00 00 03 00 00 00  .7..@...........
[  166.268568] CHINFO 00000070: 00 10 00 00 40 00 00 00 01 00 00 00 00 00 00 00  ....@...........
[  166.268571] CHINFO 00000080: 00 00 00 00 6d b1 12 00 40 0d 03 00 43 43 32 34  [email protected]
[  166.268574] CHINFO 00000090: 32 31 34 58 35 52 46 46 39 54 39 43 33 00        214X5RFF9T9C3.
[  166.268578] facetimehd:fthd_isp_cmd_channel_info: sensor id: 0001 9770
[  166.268583] facetimehd:fthd_isp_cmd_channel_info: sensor count: 2
[  166.268587] facetimehd:fthd_isp_cmd_channel_info: camera module serial number string: CC24214X5RFF9T9C3
[  166.268592] facetimehd:fthd_isp_cmd_channel_info: sensor serial number: 6DB11200400D0300
[  166.268595] facetimehd:fthd_isp_cmd_set_loadfile: set loadfile
[  166.268627] facetimehd 0000:02:00.0: Direct firmware load for facetimehd/1871_01XX.dat failed with error -2

Doesn't build for me on Ununtu 14.04

I cloned the repo, cd'd into the firmware directory and make / make installed that. All good.

I then installed the packages required by the main driver sudo apt-get install linux-headers-3.13.0-77-generic git kmod checkinstall, as per the getting started instructions, all these installed OK too.

But when I run make in the main directory, the build fails:

~/repos/bcwc_pcie master › make
make -C /lib/modules/3.13.0-77-generic/build M=/home/tom/repos/bcwc_pcie modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-77-generic'
  CC [M]  /home/tom/repos/bcwc_pcie/fthd_ddr.o
  CC [M]  /home/tom/repos/bcwc_pcie/fthd_hw.o
  CC [M]  /home/tom/repos/bcwc_pcie/fthd_drv.o
  CC [M]  /home/tom/repos/bcwc_pcie/fthd_ringbuf.o
  CC [M]  /home/tom/repos/bcwc_pcie/fthd_isp.o
/home/tom/repos/bcwc_pcie/fthd_isp.c: In function ‘fthd_isp_cmd_channel_camera_config’:
/home/tom/repos/bcwc_pcie/fthd_isp.c:662:2: warning: ‘ret’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  return ret;
  ^
  CC [M]  /home/tom/repos/bcwc_pcie/fthd_v4l2.o
/home/tom/repos/bcwc_pcie/fthd_v4l2.c:293:2: warning: initialization from incompatible pointer type [enabled by default]
  .stop_streaming         = fthd_stop_streaming,
  ^
/home/tom/repos/bcwc_pcie/fthd_v4l2.c:293:2: warning: (near initialization for ‘vb2_queue_ops.stop_streaming’) [enabled by default]
/home/tom/repos/bcwc_pcie/fthd_v4l2.c: In function ‘fthd_v4l2_register’:
/home/tom/repos/bcwc_pcie/fthd_v4l2.c:680:3: error: ‘struct vb2_queue’ has no member named ‘timestamp_flags’
  q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
   ^
/home/tom/repos/bcwc_pcie/fthd_v4l2.c:681:3: error: ‘struct vb2_queue’ has no member named ‘min_buffers_needed’
  q->min_buffers_needed = 1;
   ^
/home/tom/repos/bcwc_pcie/fthd_v4l2.c:705:2: error: implicit declaration of function ‘vb2_dma_sg_init_ctx’ [-Werror=implicit-function-declaration]
  dev_priv->alloc_ctx = vb2_dma_sg_init_ctx(&dev_priv->pdev->dev);
  ^
/home/tom/repos/bcwc_pcie/fthd_v4l2.c:705:22: warning: assignment makes pointer from integer without a cast [enabled by default]
  dev_priv->alloc_ctx = vb2_dma_sg_init_ctx(&dev_priv->pdev->dev);
                      ^
/home/tom/repos/bcwc_pcie/fthd_v4l2.c: In function ‘fthd_v4l2_unregister’:
/home/tom/repos/bcwc_pcie/fthd_v4l2.c:740:2: error: implicit declaration of function ‘vb2_dma_sg_cleanup_ctx’ [-Werror=implicit-function-declaration]
  vb2_dma_sg_cleanup_ctx(dev_priv->alloc_ctx);
  ^
cc1: some warnings being treated as errors
make[2]: *** [/home/tom/repos/bcwc_pcie/fthd_v4l2.o] Error 1
make[1]: *** [_module_/home/tom/repos/bcwc_pcie] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-77-generic'
make: *** [all] Error 2
~/repos/bcwc_pcie master ›

I'm not really sure what to make of that, any help is appreciated. Would be so lovely if the webcam worked for me!

uname output in case it helps:

~/repos/bcwc_pcie master › uname -a
Linux fannybawz 3.13.0-77-generic #121-Ubuntu SMP Wed Jan 20 10:50:42 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Documentation help proposed

Hi,

I am not a developper but I'd be willing to help. I would like to write some documentation to help less technical users to install the driver on their Mac. I have a MacBook Air mid-2013 that I can use.

So far I managed to dump the firmware of my FaceTime under OSX then go back to linux and compile the module (on Fedora 23). I am now battling mod probe errors, module is not loading.

Let me know.

Unloading bdc_pci should not be needed.

On my box, a simple modprobe facetimehd does not work.
One has to unload bdc_pci first and then load facetimehd.
I know that with behaviour is documented in the Additional Notes of the wiki.
However, I think it is a issue which should be on the "FIXME" list (as the driver is now streaming more or less like a charm).

Module init/probe failure on MBP11,2 & Linux 4.2

I initially thought this was related to #35 but the failure mode seems to be different and the MBPs are different revs.

uname -a
Linux maxwell 4.2.5-1-ARCH #1 SMP PREEMPT Tue Oct 27 08:13:28 CET 2015 x86_64 GNU/Linux

md5sum /lib/firmware/facetimehd/firmware.bin 
4e1d11e205e5c55d128efa0029b268fe  /lib/firmware/facetimehd/firmware.bin

lsmod | grep -e face -e bdc
facetimehd             90112  0
videobuf2_dma_sg       20480  1 facetimehd
videobuf2_core         40960  1 facetimehd
videodev              143360  5 gspca_main,v4l2_common,facetimehd,videobuf2_core,gspca_zc3xx

only Linux no OSX

Dec 30 11:13:47 maxwell kernel: facetimehd 0000:03:00.0: Found FaceTime HD camera with device id: 1570
Dec 30 11:13:47 maxwell kernel: facetimehd 0000:03:00.0: Setting 64bit DMA mask
Dec 30 11:13:47 maxwell kernel: facetimehd 0000:03:00.0: S2 PCIe link init succeeded
Dec 30 11:13:47 maxwell kernel: facetimehd 0000:03:00.0: Refclk: 25MHz (0xa)
Dec 30 11:13:47 maxwell kernel: facetimehd 0000:03:00.0: PLL reset finished
Dec 30 11:13:47 maxwell kernel: facetimehd 0000:03:00.0: Waiting for S2 PLL to lock at 450 MHz
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: Failed to lock S2 PLL: 0xc902c902
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: DDR40 PHY PLL locked on safe settings
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: STRAP valid
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: Configuring DDR PLLs for 450 MHz
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: DDR40 PLL is locked after 0 us
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: First DDR40 VDL calibration completed after 2 us
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: Second DDR40 VDL calibration completed after 1 us
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: Using step size 151
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: VDL set to: coarse=0x10008, fine=0x1011a
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: Virtual VTT enabled
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: S2 DRAM memory address: 0x22159559
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: Rewrite DDR mode registers succeeded
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: Full memory verification succeeded! (0)
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: Loaded firmware, size: 1392kb
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: ISP woke up after 0ms
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: Number of IPC channels: 7, queue size: 44865
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: Firmware requested heap size: 3072kb
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: ISP second int after 0ms
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: Channel description table at 00800000
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: magic value: 00000000 after 0 ms
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: Enabling interrupts
Dec 30 11:13:48 maxwell kernel: FWMSG: 
Dec 30 11:13:48 maxwell kernel: FWMSG: - APOLLO-ISP-APPLE ------------------------------------------------------------
Dec 30 11:13:48 maxwell kernel: FWMSG: 
Dec 30 11:13:48 maxwell kernel: FWMSG:   Restart count : 0
Dec 30 11:13:48 maxwell kernel: FWMSG:   Platform : mode = TARGET, ID = 0x00000000, HW = 00020018.00000000
Dec 30 11:13:48 maxwell kernel: FWMSG:   System Clock : 200000000 Hz
Dec 30 11:13:48 maxwell kernel: FWMSG:   Processor mode : SUPERVISOR
Dec 30 11:13:48 maxwell kernel: FWMSG:   Cache architecture type : SEPARATE
Dec 30 11:13:48 maxwell kernel: FWMSG:   Cache type : WRITEBACK
Dec 30 11:13:48 maxwell kernel: FWMSG:   Data Cache Line : 32 [0x20]
Dec 30 11:13:48 maxwell kernel: FWMSG:   Boot arguments entries : 0
Dec 30 11:13:48 maxwell kernel: FWMSG:   Physical memory base : 0x00000000 [TLB base 0x00160000]
Dec 30 11:13:48 maxwell kernel: FWMSG:   Main memory :   base : 0x00000000
Dec 30 11:13:48 maxwell kernel: FWMSG:                   size : 8388608 [0x00800000] [8.0 MB]
Dec 30 11:13:48 maxwell kernel: FWMSG:   Extra heap :    base : 0x2080b000 [phy = 0x0080b000]
Dec 30 11:13:48 maxwell kernel: FWMSG:                   size : 3145728 [0x00300000] [3.0 MB]
Dec 30 11:13:48 maxwell kernel: FWMSG:   Shared window : base : 0x00800000 [static wiring]
Dec 30 11:13:48 maxwell kernel: FWMSG:                   size : 125829120 [0x07800000] [120.0 MB]
Dec 30 11:13:48 maxwell kernel: FWMSG:   Shared memory : base : 0x00800000
Dec 30 11:13:48 maxwell kernel: FWMSG:                   size : 260046848 [0x0f800000] [248.0 MB]
Dec 30 11:13:48 maxwell kernel: FWMSG:   TEXT : 1421992 [0x15b2a8] - text 667256, cstring  38749, const 715528
Dec 30 11:13:48 maxwell kernel: FWMSG:   DATA : 8076 [0x1f8c] - data 0, bss 460, common 1452, noinit 6144
Dec 30 11:13:48 maxwell kernel: FWMSG:   Heap free space : 10002626 [0x0098a0c2]
Dec 30 11:13:48 maxwell kernel: FWMSG:   Heap allocated space : 94656 [0x000171c0]
Dec 30 11:13:48 maxwell kernel: FWMSG:   Disclaimer : Copyright (c) APPLE Inc. All Rights Reserved.
Dec 30 11:13:48 maxwell kernel: FWMSG:   Application : adc [release]
Dec 30 11:13:48 maxwell kernel: FWMSG:   Linked on : Jul 25 2015 - 08:48:55
Dec 30 11:13:48 maxwell kernel: FWMSG:   Release : S2ISP-01.43.00
Dec 30 11:13:48 maxwell kernel: FWMSG:   H4ISPAPPLE : 11536
Dec 30 11:13:48 maxwell kernel: FWMSG:   H4ISPCD : 4081
Dec 30 11:13:48 maxwell kernel: FWMSG:   ffw : 4143
Dec 30 11:13:48 maxwell kernel: FWMSG:   Tool-chain : iPhone OS - 7.0.3 [clang/clang++]
Dec 30 11:13:48 maxwell kernel: FWMSG: 
Dec 30 11:13:48 maxwell kernel: FWMSG: -------------------------------------------------------------------------------
Dec 30 11:13:48 maxwell kernel: FWMSG: 
Dec 30 11:13:48 maxwell kernel: FWMSG: [ISP] CMD = 0x0004 [CISP_CMD_PRINT_ENABLE]
Dec 30 11:13:48 maxwell kernel: FWMSG: [ISP] CMD = 0x0003 [CISP_CMD_CONFIG_GET]
Dec 30 11:13:48 maxwell kernel: FWMSG: [ISP] CH = 0 CMD = 0x010d [CISP_CMD_CH_INFO_GET]
Dec 30 11:13:48 maxwell kernel: facetimehd 0000:03:00.0: Direct firmware load for facetimehd/1871_01XX.dat failed with error -2

Extract firmware on Linux

I assume that we'll need a program to extract the firmware from the kext bundle at some point, so that users can obtain the firmware legally.

The current firmware extract script requires segedit, which is available on MacOSX. I cannot seem to find a version of objcopy that understands the mach-o kext bundle.

Possible solutions:

  • get permission to redistribute the binary firmware image
  • find a version of objcopy that understands kext bundles
  • find a way to use llvm 3.7+ kext bundle parser to output the section
  • get segedit to run on linux (like toolwhip or this)

change default format and resolution

hi, is there a way to change the default format and resolution as video is grainy and very yellow this is what is shown in mplayer.

Opening video decoder: [raw] RAW Uncompressed Video
Movie-Aspect is undefined - no prescaling applied.
VO: [xv] 640x480 => 640x480 Packed YUY2

Selected video codec: [rawyuy2] vfm: raw (RAW YUY2)

Thanks
Mark

OSX 10.11.3 has different firmware and extract/make does not work

I was just getting around to trying this on my MBP (Late 2014 15" model) and after updating OSX I have found I am running 10.11.3 and the hashes are wrong again.

I coped the firmware into the ./firmware/ folder:

$ ls
AppleCameraInterface extract-firmware.sh Makefile

I then ran make:

$ make

Error: Mismatching driver hash for AppleCameraInterface
Error: The unknown hash is dfac86799c6cf0aceb59bb4e732be8f030e7943eb1146830c7136f62621c9853
Error: No firmware extracted!
Makefile:21: recipe for target 'all' failed
make: *** [all] Error 1

Hence I just tried to dd out the firmware using the old offsets and found that the firmware may have changed.

I copied the System/Library/Extensions/AppleCameraInterface.kext/Contents/MacOS/AppleCameraInterface file onto a memory key and when I sha256sum this on Fedora 23 I get:

dfac86799c6cf0aceb59bb4e732be8f030e7943eb1146830c7136f62621c9853 ./AppleCameraInterface

So another new Hash.

I ran the following to try and extract the firmware, just using the old offset:

dd bs=1 skip=81920 if=./AppleCameraInterface of=firmware.bin

But when I run the check.sh script it fails:

$ ./check.sh firmware.bin
The extracted firmware does not seem good (wrong header)

So I need to figure out how to work out the right offset, then I can add the new hash and the new offset as well to a pull request.

low resolution (320x240) by default

I got the driver working under Gentoo with kernel 4.3.3 and Firmware 1.43.0. The resolution is low by default and the only way to get a higher one is via mplayer tv:// -tv width=1280:height=720.

Especially Google hangouts do not use the high resolution.

early 2015 MBP 12,1 not working

ubuntu 15.10 is installed directly onto laptop (NOT a VM)

dmesg:
[Tue Jan 19 15:56:47 2016] facetimehd 0000:02:00.0: Init failed! No wake signal
[Tue Jan 19 15:56:47 2016] facetimehd: probe of 0000:02:00.0 failed with error -5

$ lsmod |grep face
facetimehd 98304 0
videobuf2_dma_sg 20480 1 facetimehd
videobuf2_core 49152 1 facetimehd
videodev 172032 3 v4l2_common,facetimehd,videobuf2_core

/dev/video not created even after rmmod bdc_pci and modprobe facetimehd

Proposal: Rename repository to facetimehd

Since the kernel module is called facetimehd I think it would be good to have the repo match that name. Github knows to redirect from the old url to the new one if you use the github rename facility.

Ubuntu Studio 15.10 on MacBook Air (Mid 2013) fails to work with Facetime HD driver

Built using make command on Ubuntu Studio 15.10

lcpci -nnk

02:00.0 Multimedia controller [0480]: Broadcom Corporation 720p FaceTime HD Camera [14e4:1570]
    Subsystem: Broadcom Corporation 720p FaceTime HD Camera [14e4:1570]
    Kernel driver in use: bdc-pci

I just read that if it is not working at boot time then be sure to add facetimehd to /etc/modules !

Sorry to make an issue of it but maybe this will attract others searching for a solution online in 2016.

/dev/video not created (Ubuntu 15.10)

Ubuntu 15.10 + Kernel 4.3

My firmware:

4e1d11e205e5c55d128efa0029b268fe  /lib/firmware/facetimehd/firmware.bin

after loading the module there is no signs the /dev/videoX interface is created:

$ lsmod |grep facetime
facetimehd             94208  0
videobuf2_core         49152  1 facetimehd
videobuf2_dma_sg       16384  1 facetimehd
videodev              172032  3 v4l2_common,facetimehd,videobuf2_core

$ ls -l /dev/video*
ls: cannot access /dev/video*: No such file or directory

How can I debug what's happening with the module ?

compile problems

Hello,

great work so far! I was very pleased to read your all success to extract the firmware.
However, I was trying to compile the driver but i got a couple of compiler errors.

I'm running Ubuntu with a self compiled kernel (3.16.7-ckt15):

$ make
make -C /lib/modules/3.16.7-ckt15/build M=/tmp/1rba/bcwc_pcie modules
make[1]: Entering directory /usr/src/linux-headers-3.16.7-ckt15' CC [M] /tmp/1rba/bcwc_pcie/fthd_v4l2.o /tmp/1rba/bcwc_pcie/fthd_v4l2.c: In function ‘fthd_v4l2_register’: /tmp/1rba/bcwc_pcie/fthd_v4l2.c:697:2: error: implicit declaration of function ‘vb2_dma_sg_init_ctx’ [-Werror=implicit-function-declaration] dev_priv->alloc_ctx = vb2_dma_sg_init_ctx(&dev_priv->pdev->dev); ^ /tmp/1rba/bcwc_pcie/fthd_v4l2.c:697:22: warning: assignment makes pointer from integer without a cast [enabled by default] dev_priv->alloc_ctx = vb2_dma_sg_init_ctx(&dev_priv->pdev->dev); ^ /tmp/1rba/bcwc_pcie/fthd_v4l2.c: In function ‘fthd_v4l2_unregister’: /tmp/1rba/bcwc_pcie/fthd_v4l2.c:732:2: error: implicit declaration of function ‘vb2_dma_sg_cleanup_ctx’ [-Werror=implicit-function-declaration] vb2_dma_sg_cleanup_ctx(dev_priv->alloc_ctx); ^ cc1: some warnings being treated as errors make[2]: *** [/tmp/1rba/bcwc_pcie/fthd_v4l2.o] Error 1 make[1]: *** [_module_/tmp/1rba/bcwc_pcie] Error 2 make[1]: Leaving directory/usr/src/linux-headers-3.16.7-ckt15'

make: *** [all] Error 2

Any ideas whats missing?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.