Dell XPS-9320 Intel IPU6 Camera Driver on Linux

After 5 days of seeking solution for making Intel IPU6 camera on Dell xps 9320 to work on recent kernel module (without using OEM Ubuntu driver - ofc not running on Ubuntu), I finally found a way to make it works (though the image quality is not very good), here is how I debug and the instruction
Getting IPU6 Camera Working on Linux (OVTI01A0 sensor)
Check if you have the right camera sensor:
sudo dmesg | grep -i ipu6
Example output:
[ 4.254150] intel-ipu6 0000:00:05.0: enabling device (0000 -> 0002)
[ 15.476130] pci 0000:00:05.0: deferred probe pending: intel-ipu6: IPU6 bridge init failed
[ 17.186083] intel-ipu6 0000:00:05.0: Sending BOOT_LOAD to CSE
[ 17.204162] intel-ipu6 0000:00:05.0: Sending AUTHENTICATE_RUN to CSE
[ 17.274647] intel-ipu6 0000:00:05.0: CSE authenticate_run done
[ 17.274671] intel-ipu6 0000:00:05.0: IPU6-v3[a75d] hardware version 5
[ 17.347317] intel_ipu6_psys.psys intel_ipu6.psys.40: pkg_dir entry count:8
[ 17.347676] intel_ipu6_psys.psys intel_ipu6.psys.40: psys probe minor: 0
So the ID for the camera is:
0000:00:05.0
Check the sensor type:
sudo dmesg | grep "pci 0000:00:05.0"
Look for this line:
[ 15.915105] intel-ipu6 0000:00:05.0: Found supported sensor OVTI01A0:00
The sensor is OVTI01A0.
Driver Status Check:
This sensor is not included in the standard kernel yet.
Check installed drivers:
yay -Ql linux-zen | grep "/drivers/media/i2c/ov"
Intel repo has the driver:
ov2c10.c
https://github.com/intel/ipu6-drivers/tree/master/drivers/media/i2c
Install the AUR driver:
yay -S intel-ipu6-dkms-git
Flush old cache to ensure latest version:
rm -rf ~/.cache/yay/intel-ipu6-dkms-git/
Then check the module:
ls -l /var/lib/dkms/ipu6-drivers/r2*/6.*/x86_64/module/
Load the driver:
sudo modprobe -v ov02c1
Test the camera:
cam -l
Example output:
Available cameras:
[0:13:03.010443621] [4961] ERROR IPAModule ipa_module.cpp:171 Symbol ipaModuleInfo not found
[0:13:03.010461160] [4961] ERROR IPAModule ipa_module.cpp:291 v4l2-compat.so: IPA module has no valid info
[0:13:03.010477659] [4961] INFO Camera camera_manager.cpp:326 libcamera v0.5.0
[0:13:03.018153510] [4962] WARN CameraSensorProperties camera_sensor_properties.cpp:463 No static properties available for 'ov01a10'
[0:13:03.018171368] [4962] WARN CameraSensorProperties camera_sensor_properties.cpp:465 Please consider updating the camera sensor properties database
[0:13:03.018179990] [4962] WARN CameraSensor camera_sensor_legacy.cpp:501 'ov01a10 15-0036': No sensor delays found in static properties. Assuming unverified defaults.
[0:13:03.019108094] [4962] WARN IPAProxy ipa_proxy.cpp:177 Configuration file 'ov01a10.yaml' not found for IPA module 'simple', falling back to 'uncalibrated.yaml'
[0:13:03.019128813] [4962] WARN IPASoft soft_simple.cpp:103 IPASoft: Failed to create camera sensor helper for ov01a10
Available cameras:
1: Internal front camera (\_SB_.PC00.LNK1)
Some IPA-related errors may appear — they are usually safe to ignore if the camera shows up.
Firefox Fix:
In about:config set:
media.webrtc.camera.allow-pipewire = true
Restart Firefox.
Chrome Fix:
In chrome://flags, enable:
#enable-webrtc-pipewire-camera
Then test webcam — should show an image.
Note for electron app like discord, slack:
enable the flag
--enable-features=WebRTCPipeWireCapturer
Performance:
- Firefox: 19 FPS
- Chrome: 27 FPS
Camera is working successfully!