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

facetimehd: probe of 0000:04:00.0 failed with error -5 #259

Closed aliris-schmidt closed 2 years ago

aliris-schmidt commented 2 years ago

Followed installation instruction from Wiki and from this site before. Always worked very nice. Now it stopped working and reinstall does not help either.

Apple MacBook Pro 11.3 Ubuntu 21.10 5.13.0-28-generic

[    1.868915] facetimehd: loading out-of-tree module taints kernel.
[    1.868970] facetimehd: module verification failed: signature and/or required key missing - tainting kernel
[    1.869590] facetimehd 0000:04:00.0: Found FaceTime HD camera with device id: 1570
[    1.869787] facetimehd 0000:04:00.0: Setting 64bit DMA mask
[    1.875572] facetimehd 0000:04:00.0: S2 PCIe link init succeeded
[    1.875603] facetimehd 0000:04:00.0: Refclk: 25MHz (0xa)
[    1.885536] facetimehd 0000:04:00.0: PLL reset finished
[    1.885538] facetimehd 0000:04:00.0: Waiting for S2 PLL to lock at 450 MHz
[    1.885551] facetimehd 0000:04:00.0: S2 PLL is locked after 10 us
[    1.895477] facetimehd 0000:04:00.0: S2 PLL is in bypass mode
[    1.915356] facetimehd 0000:04:00.0: DDR40 PHY PLL locked on safe settings
[    1.915370] facetimehd 0000:04:00.0: STRAP valid
[    1.915371] facetimehd 0000:04:00.0: Configuring DDR PLLs for 450 MHz
[    1.915378] facetimehd 0000:04:00.0: DDR40 PLL is locked after 0 us
[    1.915389] facetimehd 0000:04:00.0: First DDR40 VDL calibration completed after 2 us
[    1.915400] facetimehd 0000:04:00.0: Second DDR40 VDL calibration completed after 2 us
[    1.915401] facetimehd 0000:04:00.0: Using step size 158
[    1.915406] facetimehd 0000:04:00.0: VDL set to: coarse=0x10008, fine=0x1011b
[    1.915411] facetimehd 0000:04:00.0: Virtual VTT enabled
[    1.935769] facetimehd 0000:04:00.0: S2 DRAM memory address: 0x22159559
[    1.935797] facetimehd 0000:04:00.0: Rewrite DDR mode registers succeeded
[    1.936107] facetimehd 0000:04:00.0: Full memory verification succeeded! (0)
[    2.073811] facetimehd 0000:04:00.0: Loaded firmware, size: 1392kb
[   12.027408] facetimehd 0000:04:00.0: Init failed! No wake signal
[   12.027873] facetimehd: probe of 0000:04:00.0 failed with error -5
$ sudo lspci -s 04:00.0 -vvv

04:00.0 Multimedia controller: Broadcom Inc. and subsidiaries 720p FaceTime HD Camera
    Subsystem: Broadcom Inc. and subsidiaries 720p FaceTime HD Camera
    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-
    Interrupt: pin A routed to IRQ 19
    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: [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: 0000000000000000  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- SlotPowerLimit 10.000W
        DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq-
            RlxdOrd+ ExtTag- PhantFunc- AuxPwr+ NoSnoop+
            MaxPayload 128 bytes, MaxReadReq 512 bytes
        DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr- TransPend-
        LnkCap: Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <2us, L1 <32us
            ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
        LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
            ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
        LnkSta: Speed 5GT/s (ok), Width x1 (ok)
            TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
        DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
             10BitTagComp- 10BitTagReq- OBFF Via WAKE#, ExtFmt- EETLPPrefix-
             EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
             FRS- TPHComp- ExtTPHComp-
             AtomicOpsCap: 32bit- 64bit- 128bitCAS-
        DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ OBFF Disabled,
             AtomicOpsCtl: ReqEn-
        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-
             Retimer- 2Retimers- CrosslinkRes: unsupported
    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- AdvNonFatalErr-
        CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
        AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
            MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
        HeaderLog: 00000000 00000000 00000000 00000000
    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: 71680ns
        Max no snoop latency: 71680ns
    Capabilities: [220 v1] Physical Resizable BAR
        BAR 2: current size: 256MB, supported: 1MB 2MB 4MB 8MB 16MB 32MB 64MB 128MB 256MB
    Kernel modules: facetimehd

seems to be the same as here? https://github.com/patjak/facetimehd/issues/35

aliris-schmidt commented 2 years ago

Tried it again on a clean install of Ubuntu 21.10 5.13.0-28-generic MacBookPro11,3

Made every step of Firmware extraction and then Install script but the camera won't work.

[    5.537878] facetimehd: module verification failed: signature and/or required key missing - tainting kernel
[    5.552886] facetimehd 0000:04:00.0: Found FaceTime HD camera with device id: 1570
[    5.553799] facetimehd 0000:04:00.0: Setting 64bit DMA mask
[    5.566299] facetimehd 0000:04:00.0: S2 PCIe link init succeeded
[    5.566363] facetimehd 0000:04:00.0: Refclk: 25MHz (0xa)
[    5.576310] facetimehd 0000:04:00.0: PLL reset finished
[    5.576316] facetimehd 0000:04:00.0: Waiting for S2 PLL to lock at 450 MHz
[    5.739092] facetimehd 0000:04:00.0: Failed to lock S2 PLL: 0xc902c902
[    5.759055] facetimehd 0000:04:00.0: DDR40 PHY PLL locked on safe settings
[    5.759087] facetimehd 0000:04:00.0: STRAP valid
[    5.759088] facetimehd 0000:04:00.0: Configuring DDR PLLs for 450 MHz
[    5.759106] facetimehd 0000:04:00.0: DDR40 PLL is locked after 0 us
[    5.759135] facetimehd 0000:04:00.0: First DDR40 VDL calibration completed after 0 us
[    5.759150] facetimehd 0000:04:00.0: Second DDR40 VDL calibration completed after 0 us
[    5.759151] facetimehd 0000:04:00.0: Using step size 159
[    5.759161] facetimehd 0000:04:00.0: VDL set to: coarse=0x10008, fine=0x1011b
[    5.759170] facetimehd 0000:04:00.0: Virtual VTT enabled
[    5.779560] facetimehd 0000:04:00.0: S2 DRAM memory address: 0x22159559
[    5.779578] facetimehd 0000:04:00.0: Rewrite DDR mode registers succeeded
[    5.779782] facetimehd 0000:04:00.0: Full memory verification succeeded! (0)
[    5.897933] facetimehd 0000:04:00.0: Loaded firmware, size: 1392kb
[   15.853465] facetimehd 0000:04:00.0: Init failed! No wake signal
[   15.853742] facetimehd: probe of 0000:04:00.0 failed with error -5
aliris-schmidt commented 2 years ago

I also get this error on sudo modprobe facetimehd.

modprobe: FATAL: Module facetimhd not found in directory /lib/modules/5.13.0-28-generic

Which I can't explain because as mentioned it is a new system no updates etc.

lsmod |grep facetimehd
facetimehd             90112  0
videobuf2_dma_sg       16384  1 facetimehd
videobuf2_v4l2         32768  1 facetimehd
videobuf2_common       61440  4 videobuf2_v4l2,facetimehd,videobuf2_dma_sg,videobuf2_memops
videodev              249856  3 videobuf2_v4l2,facetimehd,videobuf2_common
aliris-schmidt commented 2 years ago

Just installed MacOS on an external drive to check if the camera works there. The camera is not recognized in the systems report. Dont know if that is an hardware error.

patjak commented 2 years ago

Hi All I can tell from the log is that the camera is not "booting" after the firmware is loaded. But as you say, if the camera is not working in MacOS then I suspect it's not an issue with our driver.

jplx commented 2 years ago

I have used this driver successfully on Macbook Pro running Gentoo Linux. However, it failed recently because apparently EAPI 5 is not more supported. I tried to modify to EAPI=6 in the ebuild file but it fails the "source prepare" step. It seems that it does not even fetch and unpack when EAPI is set to 6. Would it be possible for you to update both ebuild files to EAPI 6 or 7? The files are bcwc_pcie-9999-r1.ebuild and apple_facetimehd_firmware-1.43.0-r1.ebuild. Thank you in advance.

jplx commented 2 years ago

I was able to make it work with EAPI7 and the attached ebuild. It requires to download de bcwc_pcie-master.zip file into the DISTDIR directory defined in /etc/portage/make.conf It also requires to add the following FEATURES in the /etc/portage/make.conf FEATURES=" -sandbox -userpriv -usersandbox" As I am new to ebuild, this looks like a hack but it works on my Macpro. Your comments and corrections would be greatly appreciated.

bcwc_pcie-9999-r2.ebuild.txt

patjak commented 2 years ago

sorry, I don't know anything about ebuild. You need to ask whoever is maintaining the Gentoo package. I'm closing this issues since it seems to be about broken hardware.

jplx commented 2 years ago

OK. Thank you for letting me know.

On Thu, Mar 10, 2022 at 12:18 AM Patrik Jakobsson @.***> wrote:

Closed #259 https://github.com/patjak/facetimehd/issues/259.

— Reply to this email directly, view it on GitHub https://github.com/patjak/facetimehd/issues/259#event-6215732112, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABRPVESBUYZDHBSHMQNT6ZDU7GV7DANCNFSM5NKK6U5Q . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you commented.Message ID: @.***>