Hello everyone.
Half a year ago I installed OpenSUSE Tumbleweed on my two MacBooks (MacBookPro11.3 A1398 and MacBookAir6.2 A1466). They are very similar in their filling. The only differences are in the amount of RAM, processor and video card. I was absolutely thrilled with how OST ran on these MacBooks. All equipment (except for the network card) and services work “out of the box”. Then I used the Macbook Air for other tasks and now I decided to restore OST on it. After installation, a problem arose - the webcam did not work.
dmesg output.
> sudo dmesg | grep facetimehd
[ 2.093347] [ T366] facetimehd: loading out-of-tree module taints kernel.
[ 2.095554] [ T366] facetimehd 0000:02:00.0: Found FaceTime HD camera with device id: 1570
[ 2.095811] [ T366] facetimehd 0000:02:00.0: Setting 64bit DMA mask
[ 2.101856] [ T366] facetimehd 0000:02:00.0: S2 PCIe link init succeeded
[ 2.101892] [ T366] facetimehd 0000:02:00.0: Refclk: 25MHz (0xa)
[ 2.111908] [ T366] facetimehd 0000:02:00.0: PLL reset finished
[ 2.111913] [ T366] facetimehd 0000:02:00.0: Waiting for S2 PLL to lock at 450 MHz
[ 2.111929] [ T366] facetimehd 0000:02:00.0: S2 PLL is locked after 10 us
[ 2.121938] [ T366] facetimehd 0000:02:00.0: S2 PLL is in bypass mode
[ 2.141982] [ T366] facetimehd 0000:02:00.0: DDR40 PHY PLL locked on safe settings
[ 2.142005] [ T366] facetimehd 0000:02:00.0: STRAP valid
[ 2.142007] [ T366] facetimehd 0000:02:00.0: Configuring DDR PLLs for 450 MHz
[ 2.142017] [ T366] facetimehd 0000:02:00.0: DDR40 PLL is locked after 0 us
[ 2.142029] [ T366] facetimehd 0000:02:00.0: First DDR40 VDL calibration completed after 2 us
[ 2.142039] [ T366] facetimehd 0000:02:00.0: Second DDR40 VDL calibration completed after 1 us
[ 2.142041] [ T366] facetimehd 0000:02:00.0: Using step size 143
[ 2.142048] [ T366] facetimehd 0000:02:00.0: VDL set to: coarse=0x10007, fine=0x10119
[ 2.142056] [ T366] facetimehd 0000:02:00.0: Virtual VTT enabled
[ 2.162580] [ T366] facetimehd 0000:02:00.0: S2 DRAM memory address: 0x22159559
[ 2.162598] [ T366] facetimehd 0000:02:00.0: Rewrite DDR mode registers succeeded
[ 2.162795] [ T366] facetimehd 0000:02:00.0: Full memory verification succeeded! (0)
[ 2.163024] [ T366] facetimehd 0000:02:00.0: Direct firmware load for facetimehd/firmware.bin failed with error -2
[ 2.163182] [ T366] facetimehd 0000:02:00.0: probe with driver facetimehd failed with error -2
As expected, there is no firmware in the catalog /lib/firmware/facetimehd/.
Forced reinstallation of the facetimehd-firmware package gave a positive result. Firmware in place.
> sudo zypper ref && sudo zypper in -f facetimehd-firmware
> ls /lib/firmware/facetimehd/
firmware.bin
Reboot. System state after reboot:
> sudo dmesg | grep facetimehd
[sudo] password for root:
[ 2.187381] [ T365] facetimehd: loading out-of-tree module taints kernel.
[ 2.189421] [ T365] facetimehd 0000:02:00.0: Found FaceTime HD camera with device id: 1570
[ 2.189701] [ T365] facetimehd 0000:02:00.0: Setting 64bit DMA mask
[ 2.195427] [ T365] facetimehd 0000:02:00.0: S2 PCIe link init succeeded
[ 2.195463] [ T365] facetimehd 0000:02:00.0: Refclk: 25MHz (0xa)
[ 2.205480] [ T365] facetimehd 0000:02:00.0: PLL reset finished
[ 2.205487] [ T365] facetimehd 0000:02:00.0: Waiting for S2 PLL to lock at 450 MHz
[ 2.205503] [ T365] facetimehd 0000:02:00.0: S2 PLL is locked after 10 us
[ 2.215512] [ T365] facetimehd 0000:02:00.0: S2 PLL is in bypass mode
[ 2.235558] [ T365] facetimehd 0000:02:00.0: DDR40 PHY PLL locked on safe settings
[ 2.235579] [ T365] facetimehd 0000:02:00.0: STRAP valid
[ 2.235581] [ T365] facetimehd 0000:02:00.0: Configuring DDR PLLs for 450 MHz
[ 2.235591] [ T365] facetimehd 0000:02:00.0: DDR40 PLL is locked after 0 us
[ 2.235602] [ T365] facetimehd 0000:02:00.0: First DDR40 VDL calibration completed after 2 us
[ 2.235613] [ T365] facetimehd 0000:02:00.0: Second DDR40 VDL calibration completed after 1 us
[ 2.235615] [ T365] facetimehd 0000:02:00.0: Using step size 143
[ 2.235622] [ T365] facetimehd 0000:02:00.0: VDL set to: coarse=0x10007, fine=0x10119
[ 2.235629] [ T365] facetimehd 0000:02:00.0: Virtual VTT enabled
[ 2.256153] [ T365] facetimehd 0000:02:00.0: S2 DRAM memory address: 0x22159559
[ 2.256172] [ T365] facetimehd 0000:02:00.0: Rewrite DDR mode registers succeeded
[ 2.256369] [ T365] facetimehd 0000:02:00.0: Full memory verification succeeded! (0)
[ 2.256601] [ T365] facetimehd 0000:02:00.0: Direct firmware load for facetimehd/firmware.bin failed with error -2
[ 2.256764] [ T365] facetimehd 0000:02:00.0: probe with driver facetimehd failed with error -2
> ls /lib/firmware/facetimehd/
firmware.bin
> lsmod | grep facetimehd
facetimehd 139264 0
videobuf2_dma_sg 24576 1 facetimehd
videobuf2_v4l2 45056 1 facetimehd
videodev 405504 2 videobuf2_v4l2,facetimehd
videobuf2_common 98304 4 videobuf2_v4l2,facetimehd,videobuf2_dma_sg,videobuf2_memops
> ls /dev | grep vid
/dev/video0 is missing, webcam does not work.
Reconnected the module:
> sudo modprobe -r facetimehd && sudo modprobe facetimehd
/dev/video0 appeared and the webcam started working.
> ls /dev | grep vid
video0
> sudo zypper in ffmpeg-7 && ffplay /dev/video0
LogOUT && LogIN
System status after re-registration. The error has changed. Color calibration files are now missing. This is a solvable problem.
> sudo dmesg | grep facetimehd
[sudo] password for root:
[ 2.187381] [ T365] facetimehd: loading out-of-tree module taints kernel.
[ 2.189421] [ T365] facetimehd 0000:02:00.0: Found FaceTime HD camera with device id: 1570
[ 2.189701] [ T365] facetimehd 0000:02:00.0: Setting 64bit DMA mask
[ 2.195427] [ T365] facetimehd 0000:02:00.0: S2 PCIe link init succeeded
[ 2.195463] [ T365] facetimehd 0000:02:00.0: Refclk: 25MHz (0xa)
[ 2.205480] [ T365] facetimehd 0000:02:00.0: PLL reset finished
[ 2.205487] [ T365] facetimehd 0000:02:00.0: Waiting for S2 PLL to lock at 450 MHz
[ 2.205503] [ T365] facetimehd 0000:02:00.0: S2 PLL is locked after 10 us
[ 2.215512] [ T365] facetimehd 0000:02:00.0: S2 PLL is in bypass mode
[ 2.235558] [ T365] facetimehd 0000:02:00.0: DDR40 PHY PLL locked on safe settings
[ 2.235579] [ T365] facetimehd 0000:02:00.0: STRAP valid
[ 2.235581] [ T365] facetimehd 0000:02:00.0: Configuring DDR PLLs for 450 MHz
[ 2.235591] [ T365] facetimehd 0000:02:00.0: DDR40 PLL is locked after 0 us
[ 2.235602] [ T365] facetimehd 0000:02:00.0: First DDR40 VDL calibration completed after 2 us
[ 2.235613] [ T365] facetimehd 0000:02:00.0: Second DDR40 VDL calibration completed after 1 us
[ 2.235615] [ T365] facetimehd 0000:02:00.0: Using step size 143
[ 2.235622] [ T365] facetimehd 0000:02:00.0: VDL set to: coarse=0x10007, fine=0x10119
[ 2.235629] [ T365] facetimehd 0000:02:00.0: Virtual VTT enabled
[ 2.256153] [ T365] facetimehd 0000:02:00.0: S2 DRAM memory address: 0x22159559
[ 2.256172] [ T365] facetimehd 0000:02:00.0: Rewrite DDR mode registers succeeded
[ 2.256369] [ T365] facetimehd 0000:02:00.0: Full memory verification succeeded! (0)
[ 2.256601] [ T365] facetimehd 0000:02:00.0: Direct firmware load for facetimehd/firmware.bin failed with error -2
[ 2.256764] [ T365] facetimehd 0000:02:00.0: probe with driver facetimehd failed with error -2
[ 408.325005] [ T2596] facetimehd 0000:02:00.0: Found FaceTime HD camera with device id: 1570
[ 408.325217] [ T2596] facetimehd 0000:02:00.0: Setting 64bit DMA mask
[ 408.330558] [ T2596] facetimehd 0000:02:00.0: S2 PCIe link init succeeded
[ 408.330597] [ T2596] facetimehd 0000:02:00.0: Refclk: 25MHz (0xa)
[ 408.340609] [ T2596] facetimehd 0000:02:00.0: PLL reset finished
[ 408.340611] [ T2596] facetimehd 0000:02:00.0: Waiting for S2 PLL to lock at 450 MHz
[ 408.340624] [ T2596] facetimehd 0000:02:00.0: S2 PLL is locked after 10 us
[ 408.350629] [ T2596] facetimehd 0000:02:00.0: S2 PLL is in bypass mode
[ 408.370663] [ T2596] facetimehd 0000:02:00.0: DDR40 PHY PLL locked on safe settings
[ 408.370677] [ T2596] facetimehd 0000:02:00.0: STRAP valid
[ 408.370678] [ T2596] facetimehd 0000:02:00.0: Configuring DDR PLLs for 450 MHz
[ 408.370685] [ T2596] facetimehd 0000:02:00.0: DDR40 PLL is locked after 0 us
[ 408.370694] [ T2596] facetimehd 0000:02:00.0: First DDR40 VDL calibration completed after 2 us
[ 408.370703] [ T2596] facetimehd 0000:02:00.0: Second DDR40 VDL calibration completed after 1 us
[ 408.370704] [ T2596] facetimehd 0000:02:00.0: Using step size 143
[ 408.370709] [ T2596] facetimehd 0000:02:00.0: VDL set to: coarse=0x10007, fine=0x10119
[ 408.370714] [ T2596] facetimehd 0000:02:00.0: Virtual VTT enabled
[ 408.391233] [ T2596] facetimehd 0000:02:00.0: S2 DRAM memory address: 0x22159559
[ 408.391247] [ T2596] facetimehd 0000:02:00.0: Rewrite DDR mode registers succeeded
[ 408.391441] [ T2596] facetimehd 0000:02:00.0: Full memory verification succeeded! (0)
[ 408.515195] [ T2596] facetimehd 0000:02:00.0: Loaded firmware, size: 1392kb
[ 408.557382] [ T2596] facetimehd 0000:02:00.0: ISP woke up after 0ms
[ 408.557389] [ T2596] facetimehd 0000:02:00.0: Number of IPC channels: 7, queue size: 44865
[ 408.557393] [ T2596] facetimehd 0000:02:00.0: Firmware requested heap size: 3072kb
[ 408.567409] [ T2596] facetimehd 0000:02:00.0: ISP second int after 0ms
[ 408.567411] [ T2596] facetimehd 0000:02:00.0: Channel description table at 00800000
[ 408.577660] [ T2596] facetimehd 0000:02:00.0: magic value: 00000000 after 0 ms
[ 408.577662] [ T2596] facetimehd 0000:02:00.0: Enabling interrupts
[ 408.652724] [ T2596] facetimehd 0000:02:00.0: Direct firmware load for facetimehd/1871_01XX.dat failed with error -2
After rebooting the system the problem returns: /dev/video0 is missing, and reconnecting the module enables the webcam.
How to make a webcam work from the start of the system without additional actions?
I would be grateful to everyone for their participation and recommendations.