patjak / facetimehd

Reverse engineered Linux driver for the FacetimeHD (Broadcom 1570) PCIe webcam
GNU General Public License v2.0
1.35k stars 160 forks source link

Kernel config options? #247

Open fultonm opened 3 years ago

fultonm commented 3 years ago

When building this out-of-tree module using a kernel and headers built from kernel.org source, which are the ideal kernel config options related to V4L2 and VB2 (VideoBuf2) we should choose so that this driver can build?

For example so far I've found that choosing Device Drivers > Multimedia support > Video4Linux options eliminates all V4L2 missing symbols, and choosing Device Drivers > Multimedia support > Media drivers > Media USB Adapters > USB Video Class (UVC) eliminates all but one VB2 missing symbols (vb2_dma_sg_memops), but also results in a tremendous number of "dvb-frontends" being compiled.

Hoping there is some minimal configuration we can choose so bcwc_pcie has the 30 or so symbols it needs from v4l2 and vb2.

patjak commented 3 years ago

lsmod should be able to tell you the dependencies of the facetimehd module (with facetimehd loaded ofc). lsmod | grep facetimehd

fultonm commented 3 years ago

Thanks for your reply,

How can we find which Configuration Options do these correspond to when configuration with make menuconfig on the kernel?

When I lsmod | grep facetimehd this I see the following listed: videobuf2_dma_sg videobuf2_v4l2 videobuf2_common videodev

So which options do they correspond to here? And in general, how to determine this option for any dependency found using lsmod? What if I had not yet loaded facetimehd, so I could not lsmod | facetimehd? How to find the necessary configuration to load it? I found them accidentally by trying a bunch of different config and building dozens of times lol. Maybe there is a more succinct set of options I could choose??

menuconfig (1)

I know this is not an issue with this driver but a user problem created by newbie hackers like me. But for MacBook users trying to experiment with linux development this may very well be the first thing they try to get their machine working, so I hope it helps someone in the future. I am happy to write some information in the Wiki after I fully understand.

patjak commented 3 years ago

Hi, sorry for the delay. I don't know of a good way to do this. You can try searching in "menuconfig" by pressing '/' (forward slash), but when I tried finding the configs you're looking for I only found ways to enable it by enabling drivers that use them. One alternative to try would be to edit the .config file manually.