You are not logged in.
I installed Arch Linux on the new Dell xps 13 plus 9320 developer edition laptop. It mostly works, except for the camera.
The camera does work on Dell's original Ubuntu image. Firefox identifies it as an Intel MIPI camera.
A bit of research shows that Ubuntu recently added "Support Intel IPU6 MIPI camera on Alder Lake platforms to their linux-firmware package. Looks like they took the drivers from https://github.com/intel/ipu6-camera-bins. ipu6ep seems to be the one for Alder Lake.
When I run "lsmod | grep ipu6" on Ubuntu, I see a couple of modules that seem to be related:
intel_ipu6_psys 86016 0
intel_ipu6_isys 114688 0
videobuf2_dma_contig 20480 1 intel_ipu6_isys
videobuf2_v4l2 32768 1 intel_ipu6_isys
videobuf2_common 61440 4 videobuf2_dma_contig,videobuf2_v4l2,intel_ipu6_isys,videobuf2_memops
intel_ipu6 81920 2 intel_ipu6_isys,intel_ipu6_psys
v4l2_fwnode 28672 2 ov01a10,intel_ipu6_isys
v4l2_async 28672 3 v4l2_fwnode,ov01a10,intel_ipu6_isys
intel_vsc 16384 4 mei_ace,mei_csi,ov01a10,intel_ipu6_isys
videodev 237568 7 v4l2_async,videobuf2_v4l2,ov01a10,v4l2loopback,intel_ipu6_isys,videobuf2_common
mc 57344 5 videodev,videobuf2_v4l2,ov01a10,intel_ipu6_isys,videobuf2_common
Anyway, I could be totally wrong and the above has nothing to do with it .
Could anyone help me get the camera working on Arch Linux?
Offline
Hey there!
I just got the same laptop 1260p i7 version and I'm having the same issue. Sorry to raise your hopes by my posting. Just thought I'd signal boost Help would be great!
Offline
Hello!
Thanks for the hints @fstab.
After some effort, I managed to get the camera barely working. The steps I followed was :
1) Compiled (out-of-tree) the Intel Vision Sensing Controller (ivsc) kernel modules from https://github.com/intel/ivsc-driver
2) Installed ivsc firmware binaries available at https://github.com/intel/ivsc-firmware
3) Compiled (out-of-tree) the IPU6 drivers from https://github.com/intel/ipu6-drivers
4) Installed ipu6ep firmware from https://github.com/intel/ipu6-camera-bins
5) Compiled and installed the userspace library at https://github.com/intel/ipu6-camera-hal
6) Compiled the gstreamer plugin icamerasrc from https://github.com/intel/icamerasrc/tre … c_slim_api
The sensor on the device is ov01a10.
After all the steps, I can barely turn the camera on and see the image using `gst-launch-1.0`. Although, `v4l2-ctl` recognizes and lists the device, i have not managed to get other applications (cheese or firefox) to capture images with it.
Offline
Sorry for spamming the thread, very interested in picking one of these machines up. If you get the chance throwing up a wiki page on the machine and your experiences would be awesome!
Offline
I started a page: https://wiki.archlinux.org/title/Dell_X … lus_(9320)
Offline
Hello!
Thanks for the hints @fstab.
After some effort, I managed to get the camera barely working. The steps I followed was :
1) Compiled (out-of-tree) the Intel Vision Sensing Controller (ivsc) kernel modules from https://github.com/intel/ivsc-driver
2) Installed ivsc firmware binaries available at https://github.com/intel/ivsc-firmware
3) Compiled (out-of-tree) the IPU6 drivers from https://github.com/intel/ipu6-drivers
4) Installed ipu6ep firmware from https://github.com/intel/ipu6-camera-bins
5) Compiled and installed the userspace library at https://github.com/intel/ipu6-camera-hal
6) Compiled the gstreamer plugin icamerasrc from https://github.com/intel/icamerasrc/tre … c_slim_apiThe sensor on the device is ov01a10.
After all the steps, I can barely turn the camera on and see the image using `gst-launch-1.0`. Although, `v4l2-ctl` recognizes and lists the device, i have not managed to get other applications (cheese or firefox) to capture images with it.
Thanks for these hint! How did you manage to successfully build the IPU6 drivers? I'm stuck at this open issue https://github.com/intel/ipu6-drivers/issues/13
ERROR: modpost: "vsc_release_camera_sensor" [/home/plant34/github/ipu6-drivers/drivers/media/i2c/ov02c10.ko] undefined!
ERROR: modpost: "vsc_acquire_camera_sensor" [/home/plant34/github/ipu6-drivers/drivers/media/i2c/ov02c10.ko] undefined!
ERROR: modpost: "vsc_release_camera_sensor" [/home/plant34/github/ipu6-drivers/drivers/media/i2c/ov01a10.ko] undefined!
ERROR: modpost: "vsc_acquire_camera_sensor" [/home/plant34/github/ipu6-drivers/drivers/media/i2c/ov01a10.ko] undefined!
Also, did you arrive in making the camera work e.g. in a browser?
Offline
It'll work if you first do the in-kernel method of compiling the ivsc driver, then do the in-kernel method of compiling those ov-drivers. The DKMS method does not work, you have to integrate both ivsc and the ipu6 drivers in your current kernel tree.
The whole thing seems like a code dump from some Windows driver, it has loads of proprietary code (ipu6-camera-bins) that are mandatory to make it work, and you can only get it to work through that gstreamer plugin (icamerasrc). I think it'll be a long time before this is properly upstreamed, unfortunately...
But, since it works with gstreamer, it should be possible to get a proper webcam /dev/video-device by using v4l2loopback, like the kind you use when you create virtual camera devices. I'll see if I can get it to work.
Offline
Hm, am I missing something in my kernel or something? Went through all those horrenduous steps, but I ended up with this when I run that gst-launch command:
[07-17 23:40:55.449] CamHAL[ERR] Malformed ET range in exposure time range configuration
[07-17 23:40:55.449] CamHAL[ERR] Parse AE eExposure time range failed
[07-17 23:40:55.449] CamHAL[ERR] Malformed ET range in exposure time range configuration
[07-17 23:40:55.449] CamHAL[ERR] Parse AE gain range failed
[07-17 23:40:55.450] CamHAL[ERR] Malformed ET range in exposure time range configuration
[07-17 23:40:55.450] CamHAL[ERR] Parse AE eExposure time range failed
[07-17 23:40:55.450] CamHAL[ERR] Malformed ET range in exposure time range configuration
[07-17 23:40:55.450] CamHAL[ERR] Parse AE gain range failed
[07-17 23:40:55.450] CamHAL[ERR] Malformed ET range in exposure time range configuration
[07-17 23:40:55.450] CamHAL[ERR] Parse AE eExposure time range failed
[07-17 23:40:55.450] CamHAL[ERR] Malformed ET range in exposure time range configuration
[07-17 23:40:55.450] CamHAL[ERR] Parse AE gain range failed
Setting pipeline to PAUSED ...
[07-17 23:40:55.533] CamHAL[INF] aiqb file name ov01a10.aiqb
[07-17 23:40:55.534] CamHAL[INF] aiqb file name ov01a10.aiqb
[07-17 23:40:55.534] CamHAL[INF] aiqb file name ov01a10.aiqb
[07-17 23:40:55.534] CamHAL[INF] aiqb file name ov01a10.aiqb
[07-17 23:40:55.534] CamHAL[INF] aiqb file name OV02C10_1BG203N3_ADL.aiqb
[07-17 23:40:55.535] CamHAL[INF] aiqb file name OV02C10_1BG203N3_ADL.aiqb
[07-17 23:40:55.535] CamHAL[ERR] Failed to find DevName for cameraId: 0, get video node: ov01a10 , devname: /dev/v4l-subdev1
[07-17 23:40:55.537] CamHAL[ERR] MediaControl init failed
Failed to set pipeline to PAUSED.
Setting pipeline to NULL ...
Freeing pipeline ...
Offline
Hmm, just reread the first post.
If it is working with binary stuff on Ubuntu without screwing around with v4l2loopback, I really hope they'll release enough code to at least be able to replicate that on other OSes too...
Offline
Hm, am I missing something in my kernel or something? Went through all those horrenduous steps, but I ended up with this when I run that gst-launch command:
[07-17 23:40:55.449] CamHAL[ERR] Malformed ET range in exposure time range configuration
[07-17 23:40:55.449] CamHAL[ERR] Parse AE eExposure time range failed
[07-17 23:40:55.449] CamHAL[ERR] Malformed ET range in exposure time range configuration
[07-17 23:40:55.449] CamHAL[ERR] Parse AE gain range failed
[07-17 23:40:55.450] CamHAL[ERR] Malformed ET range in exposure time range configuration
[07-17 23:40:55.450] CamHAL[ERR] Parse AE eExposure time range failed
[07-17 23:40:55.450] CamHAL[ERR] Malformed ET range in exposure time range configuration
[07-17 23:40:55.450] CamHAL[ERR] Parse AE gain range failed
[07-17 23:40:55.450] CamHAL[ERR] Malformed ET range in exposure time range configuration
[07-17 23:40:55.450] CamHAL[ERR] Parse AE eExposure time range failed
[07-17 23:40:55.450] CamHAL[ERR] Malformed ET range in exposure time range configuration
[07-17 23:40:55.450] CamHAL[ERR] Parse AE gain range failed
Setting pipeline to PAUSED ...
[07-17 23:40:55.533] CamHAL[INF] aiqb file name ov01a10.aiqb
[07-17 23:40:55.534] CamHAL[INF] aiqb file name ov01a10.aiqb
[07-17 23:40:55.534] CamHAL[INF] aiqb file name ov01a10.aiqb
[07-17 23:40:55.534] CamHAL[INF] aiqb file name ov01a10.aiqb
[07-17 23:40:55.534] CamHAL[INF] aiqb file name OV02C10_1BG203N3_ADL.aiqb
[07-17 23:40:55.535] CamHAL[INF] aiqb file name OV02C10_1BG203N3_ADL.aiqb
[07-17 23:40:55.535] CamHAL[ERR] Failed to find DevName for cameraId: 0, get video node: ov01a10 , devname: /dev/v4l-subdev1
[07-17 23:40:55.537] CamHAL[ERR] MediaControl init failed
Failed to set pipeline to PAUSED.
Setting pipeline to NULL ...
Freeing pipeline ...
This was because the way I amended the kernel with ipu6 went a little awry. When I got intel_ipu6{,_isys,_psys} compiled, the gst-launch worked. Still no webcam in any browsers though, so I think I'll have to try v4l2loopback.
Offline
I got it working.
sudo modprobe v4l2loopback video_nr=1 card_label=v4l2 exclusive_caps=1 max_buffers=2
sudo -E gst-launch-1.0 icamerasrc buffer-count=7 device-name=ov01a10-uf ! video/x-raw,format=YUY2,width=1280,height=720 ! v4l2sink device=/dev/video1
Offline
any help getting the speakers to work? no output device is showing in helvum
Offline
You have to use this kernel https://github.com/thesofproject/linux, it's not upstream yet.
If anyone has any tips for getting working/stable suspend, then please do tell! On my machine I'll get non-working wifi if I suspend (not always but often).Running with acpi_osi="!Windows 2012" now, seems to work the best, but more often than not I have to reboot my computer after suspend.
It does not support S3 either, but I guess that is a known issue for all new Intel laptops.
Offline
Mic does work though, someone should update the wiki :P The sound works perfectly with the sof kernel.
Last edited by Mads (2022-07-21 18:19:15)
Offline
Lol I found this age old article, and it still seems to work: https://sorenpoulsen.com/dell-xps-devel … buntu-1604
No acpi_osi needed.
Offline
The problem seems to be that systemd-sleep hangs when entering suspend mode. I'm not quite sure how to debug that...
Offline
Sorry for spamming the thread, but I think my findings might help others, about that suspend snafu. That NetworkManager workaround I just posted is not needed either.
The problem is that ivsc-driver and ipu6 drivers are trash. You must add a script that unloads all those modules before suspend, and then reloads them after waking up again.
I placed this script I called webcammodules.sh in the /lib/systemd/system-sleep folder:
#!/bin/bash
if [ "${1}" == "pre" ]; then
rmmod intel_ipu6_isys
rmmod intel_ipu6_psys
rmmod ov01a10
rmmod intel_ipu6
rmmod mei_ace
rmmod mei_csi
rmmod intel_vsc
elif [ "${1}" == "post" ]; then
modprobe intel_vsc
modprobe mei_csi
modprobe mei_ace
modprobe intel_ipu6
modprobe intel_ipu6_isys
modprobe intel_ipu6_psys
modprobe ov01a10
fi
and then suspend works again, wifi and all.
Offline
I finally also got the camera to work, thanks for your hints.
I didn't need to build the modules in-kernel, it was actually working with dkms, after cloning the source repository from an Ubuntu developer (@vicamo) and applying their patches in
debian/patches
https://code.launchpad.net/~vicamo/+git … untu/devel
https://code.launchpad.net/~vicamo/+git … untu/devel
And after using v4l2loopback, my Browser can access the video (or other apps probably, too, except Gnome Cheese)
It'll work if you first do the in-kernel method of compiling the ivsc driver, then do the in-kernel method of compiling those ov-drivers. The DKMS method does not work, you have to integrate both ivsc and the ipu6 drivers in your current kernel tree.
The whole thing seems like a code dump from some Windows driver, it has loads of proprietary code (ipu6-camera-bins) that are mandatory to make it work, and you can only get it to work through that gstreamer plugin (icamerasrc). I think it'll be a long time before this is properly upstreamed, unfortunately...
But, since it works with gstreamer, it should be possible to get a proper webcam /dev/video-device by using v4l2loopback, like the kind you use when you create virtual camera devices. I'll see if I can get it to work.
Offline
Seems like zebra-ok on github was successful in building the modules with dkms using ubuntus srpms: https://github.com/intel/ipu6-drivers/i … 1191848414
So with that method of building the module, I guess there's no need for that v4l2loopback workaround. Someone should test if it works properly, I'm a bit fed up with this now...
Edit: Sorry I didn't see the previous post, I had the tab open
Last edited by Mads (2022-07-21 21:01:57)
Offline
Sound isn't working perfectly even with the sof-dev kernel, speaker output cuts off after one minute of playback, and I can't get it on again without rebooting...
Anyone else experienced this with sof?
Offline
@plant34 I'm running into issues getting the debian/patches to even apply cleanly. intel-ipu6-dkms fails to apply half the patches due to weird merge conflicts.
intel-ipu6-dkms/debian/patches/0002-build-drop-the-use-of-EXTERNAL_BUILD.patch fails 2 out of 2 hunks on Makefile. And there are others that fail after that too.
Can you share more details around the order in which you patched and built everything?
Offline
Sound isn't working perfectly even with the sof-dev kernel, speaker output cuts off after one minute of playback, and I can't get it on again without rebooting...
Anyone else experienced this with sof?
Seems like it has something to do with if you do a powertop --auto-tune on your system. If you don't do that, it seems to work. Bah
Offline
This was a perfect script for applying powertop --auto-tune for everything except the device at 0f.1 (Runtime PM for PCI Device Intel Corporation Alder Lake PCH eSPI Controller), if I do that the sound doesn't turn off after a minute anymore.
https://github.com/jlmcgraw/apply_power … d_settings
I don't think the issue was powertop in the end, still trying to figure it out. If someone is experiencing the same, please do tell. I'm using pipewire 0.3.56.
Last edited by Mads (2022-07-25 21:54:55)
Offline
@plant34 I'm running into issues getting the debian/patches to even apply cleanly. intel-ipu6-dkms fails to apply half the patches due to weird merge conflicts.
intel-ipu6-dkms/debian/patches/0002-build-drop-the-use-of-EXTERNAL_BUILD.patch fails 2 out of 2 hunks on Makefile. And there are others that fail after that too.
Can you share more details around the order in which you patched and built everything?
Many of the patches from vicamo's repo have been merged upstream. You only need one or two of them.
Offline
netllama wrote:@plant34 I'm running into issues getting the debian/patches to even apply cleanly. intel-ipu6-dkms fails to apply half the patches due to weird merge conflicts.
intel-ipu6-dkms/debian/patches/0002-build-drop-the-use-of-EXTERNAL_BUILD.patch fails 2 out of 2 hunks on Makefile. And there are others that fail after that too.
Can you share more details around the order in which you patched and built everything?
Many of the patches from vicamo's repo have been merged upstream. You only need one or two of them.
OK, but how do I know which ones that I need?
Offline