Hi Natalie, > I am trying to use Logitech Pro 5000 web cam under Linux x86_64. I don't > seem to have any problems with the webcam under Linux i386. But when I am > trying to run it under x86_64, the application doesn't work. I heard some > opinions about no support for video4linux L2 in the uvcvideo driver, but > both the application and the driver seem to use l2 calls and have full L2 > support. However, the driver doesn't work which makes me think that this > might be the compat_ioctl32 layer in the linux kernel. The kernel level is > 2.6.18.5, and I am also planning to test with the newest kernel, either -rc > or even -mm tree. > I've collected some traces to check if something is missing still in > the UVCapplication/driver/kernel chain, or this is just some bugs in > the compat > layers. > I was using Marratech application, uvccapture, and luvcview with similar > results. > Here some sample traces (with my debug): > > Marratech conferencing application: > > [EMAIL PROTECTED]:~/Desktop/uvccapture-0.4$ /usr/local/marratech/Marratech6 > .1/bin/Marratech > Virtual screensize: java.awt.Rectangle[x=0,y=0,width=1600,height=1024] > ALSA lib control.c:817:(snd_ctl_open_noupdate) Invalid CTL > ioctl VIDIOCGCHAN: Invalid argument > V4l: failed to find a supported format. > ioctl VIDIOCGCHAN: Invalid argument > ioctl VIDIOCGMBUF: Invalid argument > mmap: Invalid argument > V4l: device has no mmap support > ioctl VIDIOCSWIN: Input/output error > ioctl VIDIOCGWIN: Invalid argument > ioctl VIDIOCGCHAN: Invalid argument > ioctl VIDIOCGWIN: Invalid argument > yuvgrab, read failed! > yuvgrab, read failed! > yuvgrab, read failed!
Those ioctls are from the V4L1 API, which the Linux UVC driver doesn't support. It might be possible to use the V4L1 compatibility layer, and that's probably what you're doing already (maybe without even being aware) if Marratech works on a 32 bits machine. In that case, there might be some issues with the V4L1 compatibility layer on 64 bit architectures. > uvccapture and luvcview: > > [EMAIL PROTECTED]:/tmp$ ./uvccapture > sending ioctl VIDIOC_QUERYCAP > sending ioctl VIDIOC_S_FMT > Unable to set format: 22. > Init v4L2 failed !! exit fatal Those are definitely V4L2 calls. -22 means invalid argument. There might again be some issue with 64 bit architectures, either in the driver or in luvcview. I can't help you much as I have no 64 bit machine to test this on. > I also have a kernel trace with my debug, this is a part of it that shows > that the driver calls into the l1 compat layer, which seems odd to me since > everything from application to kernel is all l2: compat_ioctl32 is the 32bit/64bit compatibility layer, not the V4L1 compatibility layer. [snip] > Mar 27 19:07:36 4300-test kernel: [ 587.417071] uvcvideo: Unknown ioctl > 0xc0cc5605 > Mar 27 19:07:36 4300-test kernel: [ 587.417075] NBP: compat_ioctl32:ret > ffffffea - > > and the compat_ioctl32 fails, which makes me think this is a culprit. compat_ioctl32 fails because the requested ioctl is not recognised by the Linux UVC driver. The issue is either the user space application calling an unsupported ioctl (seems to be VIDIOC_G_FBUF), or the 32bit/64bit compatibility layer failing to translate the ioctl properly. > I will sure appreciate some help with all this... I have no idea why the 32bit/64bit compatibility layer is called, as it is not explicitly supported by the driver (that might be a bug though). Do you use the vanilla driver, or some patched version provided by your distribution ? Compiling the user space applications as native 64 bit binaries might help as well. Best regards, Laurent Pinchart _______________________________________________ Linux-uvc-devel mailing list [email protected] https://lists.berlios.de/mailman/listinfo/linux-uvc-devel
