stefanpartheym / archlinux-ipu6-webcam

Easy installation for patched Intel IPU6 camera drivers
133 stars 14 forks source link

Only working in some programs #1

Closed alba4k closed 11 months ago

alba4k commented 1 year ago

First of all, I know this isn't your work, as you mention in the readme, but maybe you'll be able to help anyway, as you probably have a better understanding than me.

Basically, my webcam still doesn't seem to work.

What I find curious and that might be related is a series of errors that pop up while installing the v4l2loopback, ipu6-drivers and ivsc-driver modules packages:

==> ERROR: Missing dev kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing lib64 kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing lost+found kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing root kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing usr kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing tmp kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing lib kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing mnt kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing sys kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing swapfile kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing var kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing home kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing opt kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing boot kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing run kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing sbin kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing etc kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing srv kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing proc kernel headers for module ipu6-drivers/r67.278b7e3d0.
==> ERROR: Missing bin kernel headers for module ipu6-drivers/r67.278b7e3d0.

(same errors, all that changes is the module name and version)

As you probably noticed, the list of elements is simply a list of the files and directories in my root. My competence in kernel module building is close to none.

Also, if I try to load any of those modules, I get nothing (e.g. modprobe v4l2loopbaclk: modprobe: FATAL: Module v4l2loopback not found in directory /lib/modules/6.0.9-arch1-1; modprobe -r v4l2loopback: modprobe: FATAL: Module v4l2loopback not found.)

$ journalctl -xb -p3

Nov 24 23:56:54 dell-xps kernel: pci 0000:00:07.0: DPC: RP PIO log size 0 is invalid
Nov 24 23:56:54 dell-xps kernel: pci 0000:00:07.2: DPC: RP PIO log size 0 is invalid
Nov 24 23:56:53 dell-xps systemd-modules-load[313]: Failed to find module 'v4l2loopback'
Nov 24 23:56:55 dell-xps kernel: int3472-discrete INT3472:01: INT3472 seems to have no dependents.
Nov 24 23:56:56 dell-xps systemd[1]: Failed to start v4l2-relay daemon service.
-- Subject: A start job for unit v4l2-relayd.service has failed
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- A start job for unit v4l2-relayd.service has finished with a failure.
-- 
-- The job identifier is 806 and the job result is failed.
Nov 24 23:57:01 dell-xps kernel: dell_smm_hwmon: unable to get SMM Dell signature
Nov 24 23:57:02 dell-xps bluetoothd[1450]: src/plugin.c:plugin_init() Failed to init vcp plugin
Nov 24 23:57:02 dell-xps bluetoothd[1450]: src/plugin.c:plugin_init() Failed to init mcp plugin
Nov 24 23:57:02 dell-xps bluetoothd[1450]: src/plugin.c:plugin_init() Failed to init bap plugin
Nov 24 23:57:04 dell-xps sddm-helper[1481]: gkr-pam: couldn't unlock the login keyring.
Nov 24 23:57:04 dell-xps pipewire[1492]: pw.module: No module "libpipewire-module-x11-bell" was found
Nov 24 23:57:04 dell-xps kernel: Bluetooth: hci0: Malformed MSFT vendor event: 0x02
Nov 24 23:57:04 dell-xps bluetoothd[1450]: src/device.c:set_wake_allowed_complete() Set device flags return status: Invalid Parameters
Nov 24 23:57:04 dell-xps bluetoothd[1450]: src/device.c:set_wake_allowed_complete() Set device flags return status: Invalid Parameters
Nov 24 23:57:11 dell-xps bluetoothd[1450]: src/profile.c:record_cb() Unable to get Hands-Free Voice gateway SDP record: Host is down

# GST_DEBUG=3 gst-launch-1.0 icamerasrc ! autovideoconvert

Setting pipeline to PAUSED ...
[11-24 23:57:50.326] CamHAL[INF] aiqb file name ov13b10.aiqb
[11-24 23:57:50.326] CamHAL[ERR] there is no aiqb file:ov13b10
[11-24 23:57:50.326] CamHAL[INF] aiqb file name ov13b10.aiqb
[11-24 23:57:50.326] CamHAL[ERR] there is no aiqb file:ov13b10
[11-24 23:57:50.326] CamHAL[INF] aiqb file name ov8856.aiqb
[11-24 23:57:50.326] CamHAL[ERR] there is no aiqb file:ov8856
[11-24 23:57:50.326] CamHAL[INF] aiqb file name ov8856.aiqb
[11-24 23:57:50.326] CamHAL[ERR] there is no aiqb file:ov8856
[11-24 23:57:50.326] CamHAL[INF] aiqb file name ov01a10.aiqb
[11-24 23:57:50.326] CamHAL[INF] aiqb file name ov01a10.aiqb
[11-24 23:57:50.326] CamHAL[INF] aiqb file name ov01a10.aiqb
[11-24 23:57:50.327] CamHAL[INF] aiqb file name ov01a10.aiqb
[11-24 23:57:50.327] CamHAL[INF] aiqb file name OV02C10_1BG203N3_ADL.aiqb
[11-24 23:57:50.327] CamHAL[INF] aiqb file name OV02C10_1BG203N3_ADL.aiqb
[11-24 23:57:50.327] CamHAL[INF] aiqb file name OV02C10_1SG204N3_ADL.aiqb
[11-24 23:57:50.327] CamHAL[INF] aiqb file name OV02C10_1SG204N3_ADL.aiqb
[11-24 23:57:50.327] CamHAL[INF] aiqb file name OV02C10_CIFME14_ADL.aiqb
[11-24 23:57:50.327] CamHAL[INF] aiqb file name OV02C10_CIFME14_ADL.aiqb
[11-24 23:57:50.327] CamHAL[INF] aiqb file name OV2740_CJFLE23_ADL.aiqb
[11-24 23:57:50.327] CamHAL[INF] aiqb file name OV2740_CJFLE23_ADL.aiqb
[11-24 23:57:50.327] CamHAL[INF] aiqb file name HM2170_1SG205N3_ADL.aiqb
[11-24 23:57:50.328] CamHAL[INF] aiqb file name HM2170_1SG205N3_ADL.aiqb
[11-24 23:57:50.328] CamHAL[INF] aiqb file name HM2170_CJFME18_ADL.aiqb
[11-24 23:57:50.328] CamHAL[INF] aiqb file name HM2170_CJFME18_ADL.aiqb
[11-24 23:57:50.328] CamHAL[INF] aiqb file name HI556_1BG502T3_ADL.aiqb
[11-24 23:57:50.328] CamHAL[INF] aiqb file name HI556_1BG502T3_ADL.aiqb
[11-24 23:57:50.328] CamHAL[INF] aiqb file name HI556_CJFLE25_ADL.aiqb
[11-24 23:57:50.328] CamHAL[INF] aiqb file name HI556_CJFLE25_ADL.aiqb
[11-24 23:57:50.328] CamHAL[INF] aiqb file name ov01a1s.aiqb
[11-24 23:57:50.328] CamHAL[INF] aiqb file name ov01a1s.aiqb
[11-24 23:57:50.329] CamHAL[ERR] @getDeviceName, Fail open : /sys/class/video4linux/
[11-24 23:57:50.329] CamHAL[ERR] Failed to find DevName for cameraId: 0, get video node: ov13b10 , devname: /dev/v4l-subdev1
[11-24 23:57:50.331] CamHAL[ERR] MediaControl init failed
0:00:00.263195316  8524 0x5650103c3a90 ERROR             icamerasrc gstcamerasrc.cpp:2845:gst_camerasrc_start: CameraId=0 failed to open libcamhal device.
0:00:00.289852695  8524 0x5650103c3a90 WARN              CamBaseSrc gstcambasesrc.cpp:4192:gst_cam_base_src_activate_push:<camerasrc0> Failed to start in push mode
0:00:00.289864168  8524 0x5650103c3a90 WARN                GST_PADS gstpad.c:1141:gst_pad_set_active:<camerasrc0:src> Failed to activate pad
Failed to set pipeline to PAUSED.
Setting pipeline to NULL ...
Freeing pipeline ...

I don't have any /dev/video* virtual devices

Tested on both linux and linux-zen, XPS 13 Plus (i7-1260P)

alba4k commented 1 year ago

I'm an idiot, I didn't have linux-headers installed

Now I am able to compile the modules and I do have some /dev/video* devices:

$ v4l2-ctl --list-devices

ipu6 (PCI:pci:pci0000:00):
    /dev/video1

ipu6 (pci:pci0000:00):
    /dev/media0

Virtual Camera (platform:v4l2loopback-000):
    /dev/video0

# lshw

[...]
        *-multimedia:0
             description: Multimedia controller
             product: Intel Corporation
             vendor: Intel Corporation
             physical id: 5
             bus info: pci@0000:00:05.0
             version: 02
             width: 64 bits
             clock: 33MHz
             capabilities: pciexpress pm bus_master cap_list
             configuration: driver=intel-ipu6 latency=0
             resources: iomemory:600-5ff irq:16 memory:603c000000-603cffffff
[...]

I still don't get any video output tho (I can select a "Virtual Camera" webcam)

sigboe commented 1 year ago

I have the same issue, but I did some steps some steps to get further. And I hope that you or someone can see if these steps get you further. And maybe you can see if you can get even further, and document what you did.

I can currently get image from the test.sh script, here is what I did.

/etc/modprobe.d/v4l2loopback.conf

options v4l2loopback exclusive_caps=1

Made this file, instead of the instructions @stefanpartheym wrote here Its possible to add more settings here if they may help.

The issue is that Firefox and Cheese still does not see the camera.

The original test.sh did not work for me, several error, and I got different errors while trying different variations of the command. What worked for me is to replace the contents of test.sh with this

#!/bin/sh

sudo -E gst-launch-1.0 icamerasrc buffer-count=7 ! video/x-raw,format=NV12,width=1280,height=720 ! videoconvert ! waylandsink

This works for me, if you have wayland I hope it will work for you too. If you have X11 then I believe you can replace waylandsink with ximagesink Other laptops with other sensors may require different variations of the command.

I have a Dell XPS 13 Plus 9320 with alder lake

sigboe commented 1 year ago

I also tested this command as the test command, and it works

sudo -E gst-launch-1.0 icamerasrc ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! videoconvert ! waylandsink

notable changes are that I removed buffer-count=7 and added ,framerate=30/1 which are more similar to how v4l2-relayd standard settings.

I have yet to figure out why the test command now works but not v4l2-relayd

stefanpartheym commented 1 year ago

Hi @alba4k,

I still don't get any video output tho (I can select a "Virtual Camera" webcam)

For me, I also can only select "Virtual Camera". How did out test camera input? Using the test.sh script or in a chromium based browser using this website.

Also, I'm currently on kernel 6.0.12-arch1-1. But I remember it was also working on 6.0.9.

Best regards Stefan

alba4k commented 1 year ago

I used that website, on firefox tho, and discord (which counts as chromium based ig)

I might try this evening in chromium

stefanpartheym commented 1 year ago

Hi @alba4k,

I'm gonna be honest: It doesn't work in Firefox for me either. I didn't notice, because I don't use Firefox.

Best regards Stefan

alba4k commented 1 year ago

HOLY SH*T, thanks a lot @stefanpartheym

immagine

The camera actually works in chromium! I had never seen that light turn on! This basically means that whenever I need it for something I can still use it via chromium!

Also, while still keeping my expectations low, I also tried cheese (it did not work). What was interesting tho was that is also found an "ipu6" device other than a the Virtual Camera one (I see 2 Virtual Camera and 2 ipu6). huh

v4l2-ctl --list-devices

ipu6 (PCI:pci:pci0000:00):
    /dev/video1

ipu6 (pci:pci0000:00):
    /dev/media0

Virtual Camera (platform:v4l2loopback-000):
    /dev/video0

Also, about the IR camera, do you think Howdy would now work, as that would be the main use I'd have for the cam. linux-enable-ir-emitter seems to turn on the webcam light when using /dev/video0, but I don't see anyhting flashing using my phone's camera.

After some testing: firefox, cheese, discord and gphoto/kamera do NOT work; webcord, chromium and obs work

edit: both firefox and discord work with this workaround.

edit 2: chese now works too

stefanpartheym commented 1 year ago

Hi @alba4k,

I'm glad it works for you on Chromium :)

Also, about the IR camera, do you think Howdy would now work, as that would be the main use I'd have for the cam. linux-enable-ir-emitter seems to turn on the webcam light when using /dev/video0, but I don't see anyhting flashing using my phone's camera.

Unfortunately, I don't know if (or how) Howdy works. I have not yet tried it. I didn't even know such a thing exists. But good hint, I think I'll try it out at some point ;)

Best regards Stefan

alba4k commented 1 year ago

@stefanpartheym I would certainty recommend trying it out.

Apart from that, let me know if you (or some other guy(e.g. on the archlinux forums) get the camera to work in more or, ideally, all scenarios.

Congrats on the nice works on creating this repository, also :)

stefanpartheym commented 1 year ago

Hi @alba4k,

thank you! I'll let you know, if there are any news on this. ;)

I wanted to rename the packages in the repo anyways, as they always appear in the available updates list of my package manager due to the same name of the packages on AUR.

Best regards Stefan

alba4k commented 1 year ago

Yeah noticed that yesterday, and unfortunately the updates breaks stuff

maybe just rename the -git or to -fix-git or -fix?

The best of luck on your continuation!

stefanpartheym commented 1 year ago

Yeah noticed that yesterday, and unfortunately the updates breaks stuff

Uff, yeah didn't try to update yet, but good to know, that it's not an option haha.

maybe just rename the -git or to -fix-git or -fix?

Exactly, something like that, hopefully I'll have the time for this in the next few days. :grimacing:

sigboe commented 1 year ago

@stefanpartheym @alba4k Has Howdy been updated to python 3 yet? I uninstalled it when python 2 was deprecated on Arch. Howdy worked quite well for me after it was configured properly, but I did not want to have a security related program depend on python 2 after it was deprecated from the repos

sigboe commented 1 year ago

Amazing, chromium does indeed work with the webcam. I didn't test it because I used cheese to test instead.

I wonder why it doesn't work with firefox

alba4k commented 1 year ago

@stefanpartheym it sadly does not seem to work anymore on 6.1

Tropicao commented 1 year ago

@stefanpartheym it sadly does not seem to work anymore on 6.1

Hi. I have just finalized the setup on my XPS 13 9320, and indeed I have had to tweak the ipu6_driver installation, because its build is currently broken on 6.1. The fix is ready to merge on Intel's repository but it seems to be stalled :shrug: While it is not merged, it is possible to pick a working copy of the driver by taking directly the source from the fix author repository:

diff --git a/intel-ipu6-dkms-git/PKGBUILD b/intel-ipu6-dkms-git/PKGBUILD
index 28e0d82..2238216 100644
--- a/intel-ipu6-dkms-git/PKGBUILD
+++ b/intel-ipu6-dkms-git/PKGBUILD
@@ -1,14 +1,15 @@
 pkgname=intel-ipu6-dkms-git
 _pkgname=ipu6-drivers
 pkgver=r60.4ef83f208
 pkgrel=1
 pkgdesc="Intel IPU6 camera drivers (DKMS)"
 arch=('any')
-url="https://github.com/intel/ipu6-drivers"
+url="https://github.com/jwrdegoede/ipu6-drivers"
 license=('unknown')
 depends=('dkms')
 makedepends=('git')
-source=("git+${url}.git")
+revision="ipu6-kernel6.1-build-fix"
+source=("git+${url}#branch=${revision}")
 sha256sums=('SKIP')

 pkgver() {

I am able to get a valid stream from test.sh with this workaround. Thanks a lot @stefanpartheym for this packaging !

sigboe commented 1 year ago

@Tropicao Do you want to make a pull request to this repo with this change? It works for me, in fact, both hans' master branch and the ipu6-kernel6.1-build-fix works for me on 6.1.1. But you are maybe correct in using the specific branch in case the master branch is used for something else in the future.

Another merge request would be needed to revert this change, if when Intel merges this PR

Tropicao commented 1 year ago

@Tropicao Do you want to make a pull request to this repo with this change? It works for me, in fact, both hans' master branch and the ipu6-kernel6.1-build-fix works for me on 6.1.1. But you are maybe correct in using the specific branch in case the master branch is used for something else in the future.

Another merge request would be needed to revert this change, if when Intel merges this PR

I am not convinced it is desirable to point to jwrdegoede repository/branches "by default", because it will multiply the sources to monitor for drivers updates (it would be best to assume that its PR on Intel repository will eventually be merged), but if @stefanpartheym thinks otherwise, I'll gladly submit a PR

sigboe commented 1 year ago

@Tropicao what about temporarily pointing the PKGBUILD file to a specific git commit in the intel repo, and then add Hans' changes as a patch file?

That is how many AUR packages do it anyway

When the PKGBUILD is updated to get a newer version, the patch can be removed at the same time, so its almost self regulating

Just thinking about making it easy for the user who just want to follow some instructions instead of finding comments here and there to compliment the instructions

Tropicao commented 1 year ago

@Tropicao what about temporarily pointing the PKGBUILD file to a specific git commit in the intel repo, and then add Hans' changes as a patch file?

That is how many AUR packages do it anyway

I am not very familiar with Arch packaging good practices, so I trust you on this. Its sounds convenient for both user and maintainer.

When the PKGBUILD is updated to get a newer version, the patch can be removed at the same time, so its almost self regulating

Just thinking about making it easy for the user who just want to follow some instructions instead of finding comments here and there to compliment the instructions

~Agree on the purpose. I will submit a PR with your suggestions~ EDIT: PR has been merged

maharifu commented 1 year ago

Hey, Thanks for all your effort in this! :smile:

I believe the issue with Firefox is the lack of support for the NV12 format, as identified here - https://bugzilla.mozilla.org/show_bug.cgi?id=1761519

In the meanwhile, I got it working by forcing v4l2-relayd to convert to a supported format (YUY2). I'm sure this is not the best way to do it, but I overwrote the service ExecStart by creating the file /etc/systemd/system/v4l2-relayd.service.d/override.conf with content:

[Service]
ExecStart=
ExecStart=/bin/sh -c 'DEVICE=$(grep -l -m1 -E "^${CARD_LABEL}$" /sys/devices/virtual/video4linux/*/name | cut -d/ -f6); exec /usr/bin/v4l2-relayd -i "${VIDEOSRC}" $${SPLASHSRC:+-s "${SPLASHSRC}"} -o "appsrc name=appsrc caps=video/x-raw,format=${FORMAT},width=${WIDTH},height=${HEIGHT},framerate=${FRAMERATE} ! videoconvert ! video/x-raw,format=YUY2 ! v4l2sink name=v4l2sink device=/dev/$${DEVICE}"'

It just adds ! video/x-raw,format=YUY2 after videoconvert to the original ExecStart.

After sudo systemctl status v4l2-relayd.service it works in Firefox. :smile: It also keeps working in Chromium and Cheese.

sigboe commented 1 year ago

@maharifu I think the theoretical "propper way" to configure this would be in /etc/v4l2-relayd so

sudo cp /etc/default/v4l2-relayd /etc/v4l2-relayd
sudo -e /etc/v4l2-relayd

I changed FORTMAT= to YUY2, the webcam looks like it works in firefox after I do that, but it just shows a single color black.

If it can work by editing that file, it can probably be shipped already working in this repo

maharifu commented 1 year ago

@sigboe I believe that FORMAT specifies the input format from the webcam, so it should be NV12. That's why you get the black screen when changing it.

The problem is Firefox doesn't handle that format, so we need to convert it before the v4l2sink.

Maybe we could have a patch to change the systemd unit file of v4l2-relayd when building the package?

stefanpartheym commented 1 year ago

Agree on the purpose. I will submit a PR with your suggestions

Hi @Tropicao , thanks a lot for your effort! I merged your PR as requested.

Best regards Stefan

alba4k commented 1 year ago

I can confirm that it now seems to work on 6.1 :D

Also, the workaround proposed by @maharifu does indeed make the webcam work in firefox, and actually in discord too!

As for the mentioned workaround, I opened a pull request that allows the changes to be applied automatically when launching the install.sh script with a --workaround first command line argument.

stefanpartheym commented 1 year ago

Upgrading to kernel v6.1.6 breaks webcam for me unfortunately, even when using the new --workaround flag. :sweat_smile: I need to figure out whats going on in my case. Maybe a Wayland thing, I don't know. I'll post an update once I now more.

alba4k commented 1 year ago

That is interesting, everything still works perfectly for me on 6.1.6 (both zen and mainline arch).

I would be surprised if that was because of wayland, have you rebooted your system after upgrading?

z4lem commented 1 year ago

That is interesting, everything still works perfectly for me on 6.1.6 (zen, but I doubt that's what makes it work).

I would be surprised if that was because of wayland, have you rebooted your system after upgrading?

@stefanpartheym Same for me: With or and without the workaround, I get a black image for all test cases as output and the cam light doesn't show up. I rebooted after each installation and I'm using X and kernel 6.1.6-arch1-3.

alba4k commented 1 year ago

@z4lem does DKMS give you any errors when running the install script? also, even though this shouldn't matter, are you running the uninstall script first?

Also, I just noticed that 6.1.7 just came out (it also works on my machine), so maybe check if that does anything?

z4lem commented 1 year ago

@z4lem does DKMS give you any errors when running the install script? also, even though this shouldn't matter, are you running the uninstall script first?

Also, I just noticed that 6.1.7 just came out (it also works on my machine), so maybe check if that does anything?

@alba4k No errors during installation. And yes, in uninstalled the old version and rebooted, before trying the new one. My error described above appears on the newest kernel version 6.1.7 :\

alba4k commented 1 year ago

That's interesting, I honestly have no Idea what to suggest. maybe try to ask on the arch BBS discussion?

Tropicao commented 1 year ago

@z4lem does DKMS give you any errors when running the install script? also, even though this shouldn't matter, are you running the uninstall script first? Also, I just noticed that 6.1.7 just came out (it also works on my machine), so maybe check if that does anything?

@alba4k No errors during installation. And yes, in uninstalled the old version and rebooted, before trying the new one. My error described above appears on the newest kernel version 6.1.7 :\

Hi. I observed that DKMS build errors are quite silent during installation with the script, I only observed real errors when refreshing dkms manually (dmks status; dkms autoinstall), when I searched for webcam issues on my laptop. Did you go this far to check for build error ? Is the driver really loaded after executing the install script ? Moreover, some fixes have finally been merged mainline, so we will need to revert the hotfix to point on custom branch of mainline driver. I will try to test current state of driver install on my machine by the end of the week, and submit the revert if it works

GorgetGuilhem commented 1 year ago

Hi, I can't get it fully working on 6.1.8-arch1-1. No errors at the installation and test.sh works properly. Problem is that no application detects the camera, tried with Chromium, Chrome, Firefox, Slack and Discord, with and without the --workarround flag.

Here are some informations :

# v4l2-ctl --list-devices
ipu6 (PCI:pci:pci0000:00):
        /dev/video1

ipu6 (pci:pci0000:00):
        /dev/media0

Virtual Camera (platform:v4l2loopback-000):
        /dev/video0

Webcam C170: Webcam C170 (usb-0000:04:00.0-2.3.2.1.3):
        /dev/video2
        /dev/video3
        /dev/media1

# sudo lshw
*-multimedia:0
             description: Multimedia controller
             produit: Intel Corporation
             fabriquant: Intel Corporation
             identifiant matériel: 5
             information bus: pci@0000:00:05.0
             version: 02
             bits: 64 bits
             horloge: 33MHz
             fonctionnalités: pciexpress pm bus_master cap_list
             configuration: driver=intel-ipu6 latency=0
             ressources: mémoireE/S:600-5ff irq:16 mémoire:603c000000-603cffffff

# dkms status
ipu6-drivers/r70.913905fe0, 6.1.8-arch1-1, x86_64: installed (WARNING! Diff between built and installed module!) (WARNING! Diff between built and installed module!)
ivsc-driver/r35.94ecb88, 6.1.8-arch1-1, x86_64: built
v4l2loopback/r10.b37d72d, 6.1.8-arch1-1, x86_64: installed

I'm actually trying to see what the dkms status warning message means, but without result for now.

Anyway thanks a lot for your work !

Tropicao commented 1 year ago

No major issue on my side on 6.1.8-arch1-1 kernel, after full uninstall then reinstall (using the --workaround flag). I did it with custom patches removed and updated revision to make sure to get all latest fixes merged on mainline. I observe the opposite of @GorgetGuilhem : I still can not make test.sh work because of following error :

[...]
ERROR: from element /GstPipeline:pipeline0/Gstcamerasrc:camerasrc0: src pad: Internal data flow error.
[...]
[01-28 17:10:48.595] CamHAL[WAR] Failed to open file /run/camera/ov01a10-uf_VIDEO.aiqd, error No such file or directory

However camera works properly when testing it in Cheese (using the proper device) and in Google Meet (tested in Firefox)

alba4k commented 1 year ago

That is interesting

test.sh does not report any errors on my 9320, but cheese doesn't seem to work. What device are you selecting?

Tropicao commented 1 year ago

That is interesting

test.sh does not report any errors on my 9320, but cheese doesn't seem to work. What device are you selecting?

I select Virtual Camera, since it is the name reported by v4l2-ctl --list-devices on my machine

alba4k commented 1 year ago

Nevermind, it does seem to work now in cheese too! I'm guessing some kernel between 6.1.6 and 6.1.8 did the trick, maybe in combination with the workaround for changing the video format (?).

Well, anyway, I think it's working basically everywhere for me now.

GorgetGuilhem commented 1 year ago

@Tropicao tried with custom patches removed and updated revision and I still cannot get applications seeing the webcam, even though v4l2-ctl --list-devices find it. test.sh works properly however.

Tropicao commented 1 year ago

@Tropicao tried with custom patches removed and updated revision and I still cannot get applications seeing the webcam, even though v4l2-ctl --list-devices find it. test.sh works properly however.

Well, I have no clue why applications do not detect camera on your device :thinking: Since test.sh is working on your host, it means that your video stack is properly configured. You can not use webcam in chrome neither firefox ? Did you use the --workaround parameter when executing the install script ?

alba4k commented 1 year ago

As a pretty sad sidenote, it eventually stopped working for me too.

Something weird I noticed, is that the camera still does turn off for a split second when I turn my laptop on (which it also did when the driver was working.)

Anyway, I think I will temporarily be removing the driver, since I don't really need the webcam anyway.

GorgetGuilhem commented 1 year ago

@Tropicao yes, I did the installation with the --workarround flag, and it doesn't work on Firefox and Chrome neither. And I've observed the same behavior as @alba4k about the camera led turning on half a second at system startup.

alba4k commented 1 year ago

I think that the issue might be on the driver-side.

GorgetGuilhem commented 1 year ago

No idea what's going on there, but I've noticed this running sudo systemctl status v4l2-relayd (last line) :

● v4l2-relayd.service - v4l2-relay daemon service
     Loaded: loaded (/usr/lib/systemd/system/v4l2-relayd.service; enabled; preset: disabled)
    Drop-In: /etc/systemd/system/v4l2-relayd.service.d
             └─override.conf
     Active: active (running) since Thu 2023-02-02 18:19:44 CET; 14h ago
   Main PID: 1182 (v4l2-relayd)
      Tasks: 2 (limit: 18692)
     Memory: 14.8M
        CPU: 59ms
     CGroup: /system.slice/v4l2-relayd.service
             └─1182 /usr/bin/v4l2-relayd -i icamerasrc -o "appsrc name=appsrc caps=video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! videoconvert ! video/x-raw,format=YUY2 ! v4l2sink name=v4l2sink device=/dev/video0"

févr. 02 18:19:43 GuilhemArch systemd[1]: Starting v4l2-relay daemon service...
févr. 02 18:19:44 GuilhemArch systemd[1]: Started v4l2-relay daemon service.
févr. 02 18:19:44 GuilhemArch v4l2-relayd[1182]: gst_element_set_state: assertion 'GST_IS_ELEMENT (element)' failed

EDIT : After some investigations, I found out that I needed to install gst-plugin-pipewire ... The webcam works for all applications now, thanks for your help !

Tropicao commented 1 year ago

EDIT : After some investigations, I found out that I needed to install gst-plugin-pipewire ... The webcam works for all applications now, thanks for your help !

Congratulations on finding the solution and making it work :) We should probably add a mention to this in the README or even automate it in the install script

alba4k commented 1 year ago

I might do this tomorrow, if I find a couple of minutes :)

GorgetGuilhem commented 1 year ago

Congratulations on finding the solution and making it work :) We should probably add a mention to this in the README or even automate it in the install script

Yep, could definitively help someone else !

I might do this tomorrow, if I find a couple of minutes :)

That would be great, thanks ! Just to mention, I'm using pipewire ;)

alba4k commented 1 year ago

Same

I would be curious to see if the same happened if someone using pulseaudio would be experiencing the same (most likely, the answer is yes, since pipewire handles a lot of non-audio related media stuff), but I'm too lazy to install it just to check out ;P

Anyway, I think I will be opening the PR later this evening (it's 20.28 at the moment of typing for me)

alba4k commented 1 year ago

Ok so, it's not working for me, which I expected, but if any of you can confirm that it works with gst-plugin-pipewire installed, then using my branch should be working too. I can open a pull request if someone is able to confirm that it is indeed working.

Also, the reason I suppose it is not working for me, is that the ivsc-driver and ipu6-drivers (no complaints for v4l2loopback) modules fail to install with DKMS printing the following (wall of) errors:

==> dkms install --no-depmod ivsc-driver/r35.94ecb88 -k 6.1.9-arch1-1
Module version  for ljca.ko.zst
exactly matches what is already found in kernel 6.1.9-arch1-1.
DKMS will not replace this module.
You may override by specifying --force.
Module version  for spi-ljca.ko.zst
exactly matches what is already found in kernel 6.1.9-arch1-1.
DKMS will not replace this module.
You may override by specifying --force.
Module version  for gpio-ljca.ko.zst
exactly matches what is already found in kernel 6.1.9-arch1-1.
DKMS will not replace this module.
You may override by specifying --force.
Module version  for i2c-ljca.ko.zst
exactly matches what is already found in kernel 6.1.9-arch1-1.
DKMS will not replace this module.
You may override by specifying --force.
Module version  for mei-vsc.ko.zst
exactly matches what is already found in kernel 6.1.9-arch1-1.
DKMS will not replace this module.
You may override by specifying --force.
Module version  for intel_vsc.ko.zst
exactly matches what is already found in kernel 6.1.9-arch1-1.
DKMS will not replace this module.
You may override by specifying --force.
Module version  for mei_csi.ko.zst
exactly matches what is already found in kernel 6.1.9-arch1-1.
DKMS will not replace this module.
You may override by specifying --force.
Module version  for mei_ace.ko.zst
exactly matches what is already found in kernel 6.1.9-arch1-1.
DKMS will not replace this module.
You may override by specifying --force.
Module version  for mei_pse.ko.zst
exactly matches what is already found in kernel 6.1.9-arch1-1.
DKMS will not replace this module.
You may override by specifying --force.
Module version  for mei_ace_debug.ko.zst
exactly matches what is already found in kernel 6.1.9-arch1-1.
DKMS will not replace this module.
You may override by specifying --force.
Error! Installation aborted.
==> WARNING: `dkms install --no-depmod ivsc-driver/r35.94ecb88 -k 6.1.9-arch1-1' exited 6

TL;DR: DKMS doesn't seem to like those modules already (seemingly) being there.

image

One more thing: paru warns about intel-ivsc-driver-dkms-git conflicting with the AUR package intel-ipu6-dkms-git. Altough I do recognize that this is not exactly the same as what is being installed by the script, I wonder if this recent update might cause siome issues too. So this also goes in favour of renaming the packages related to the ones in the AUR to avoid confusion.

stefanpartheym commented 1 year ago

Hi @alba4k ,

Also, the reason I suppose it is not working for me, is that the ivsc-driver and ipu6-drivers (no complaints for v4l2loopback) modules fail to install with DKMS printing the following (wall of) errors:

I'm experiencing the exact same issue. However, it seems like webcam does work regardless (at least in my browser, not with test.sh though).

One more thing: paru warns about intel-ivsc-driver-dkms-git conflicting with the AUR package intel-ipu6-dkms-git. Altough I do recognize that this is not exactly the same as what is being installed by the script, I wonder if this recent update might cause siome issues too. So this also goes in favour of renaming the packages related to the ones in the AUR to avoid confusion.

Yes, same for me when using yay. I modified all PKGBUILDs in the repo to use a suffix in order for the AUR package managers to be able to distinguish between those packages (also specifying provides and conflicts). This will be part of the v1.0.0 "release". Currently, I use the suffix -archfix. Not sure, if it really fits, but probably not too important :sweat_smile: @alba4k @Tropicao @sigboe : Do you have any suggestions/wishes regarding the suffix? Otherwise I'll commit and push my changes to the repo.

Best regards Stefan

sigboe commented 1 year ago

Currently, I use the suffix -archfix. Not sure, if it really fits, but probably not too important :sweat_smile:

Well my only opinion is that it's implicit this is a fix for arch, and many AUR packages have -fix suffix while no AUR package has -archfix suffix. So if you are interested in pushing this to AUR, then maybe the -fix suffix would suffice.