webcamd/cuse4bsd && Skype

Hans Petter Selasky hselasky at c2i.net
Tue Jan 3 08:26:36 UTC 2012


On Tuesday 03 January 2012 09:13:49 Hans Petter Selasky wrote:
> On Tuesday 03 January 2012 07:51:40 Matthias Apitz wrote:
> > El día Monday, January 02, 2012 a las 11:49:09AM +0100, Matthias Apitz
> 
> escribió:
> > > I will compile webcamd(8) with WITH_DEBUG to see what is going on on
> > > access by Skype...
> > > 
> > > the cam itself 0x0c45:0x62c0 is listed in uvc(4);
> > 
> > I have inserted some printf debug statements, see below:
> > 
> > # setenv LD_PRELOAD
> > /usr/local/lib/libhal.so:/usr/local/lib/libdbus-1.so:/usr/local/lib/libcu
> > s e4bsd.so # ./work/webcamd-3.1.0.4/webcamd
> > 
> > : v3.2:USB Acecad Flair tablet driver
> > : v2.3 (May 2, 2007):Aiptek HyperPen USB Tablet Driver (Linux 2.6.x)
> > : Bryan W. Headley/Chris Atenasio/Cedric Brun/Rene van Paassen
> > 
> > GTCO usb driver version: 2.00.0006: v0.0.2:USB KB Gear JamStudio Tablet
> > driver
> > 
> > : v1.52:USB Wacom tablet driver
> > 
> > lirc_dev: IR Remote Control driver registered, major 14
> > IR NEC protocol handler initialized
> > IR RC5(x) protocol handler initialized
> > IR RC6 protocol handler initialized
> > IR JVC protocol handler initialized
> > IR Sony protocol handler initialized
> > IR RC5 (streamzap) protocol handler initialized
> > IR LIRC bridge handler initialized
> > Linux video capture interface: v2.00
> > em28xx driver loaded
> > Em28xx: Initialized (Em28xx dvb Extension) extension
> > USBVision USB Video Device Driver for Linux : 0.9.11
> > USBVision USB Video Device Driver for Linux : 0.9.11
> > pvrusb2: V4L in-tree version:Hauppauge WinTV-PVR-USB2 MPEG2 Encoder/Tuner
> > pvrusb2: Debug mask is 31 (0x1f)
> > cpia2: V4L-Driver for Vision CPiA2 based cameras v3.0.1
> > 
> > : Zoran 364xx
> > 
> > au0828 driver loaded
> > USB Video Class driver (1.1.1)
> > 
> > : 0.4.7:D-Link DSB-R100 USB FM radio driver
> > : 0.0.2: A driver for the TEA5764 radio chip for EZX Phones.
> > 
> > b2c2-flexcop: B2C2 FlexcopII/II(b)/III digital TV receiver chip loaded
> > successfully dib0700: loaded with support for 21 different device-types
> > Attached ugen4.2[0] to cuse unit 0
> > uvcvideo: Found UVC 1.00 device  (0c45:62c0)
> > Creating /dev/video0
> > 
> > (now I started Skype in some other session)
> > 
> > mydebug: v4b_open
> > mydebug: linux_open: handle=28c08600
> > mydebug: v4b_ioctl: handle=28c08600
> > mydebug: linux_ioctl returns: error=ffffffea
> > mydebug: v4b_convert_error: CUSE_ERR_INVALID
> > mydebug: v4b_ioctl: handle=28c08600
> > mydebug: linux_ioctl returns: error=ffffffea
> > mydebug: v4b_convert_error: CUSE_ERR_INVALID
> > mydebug: v4b_close: handle=28c08600
> > 
> > The mydebug: lines names the function where we are (v4b_*) and
> > the values which are important; why linux_ioctl() returns that broken
> > value 0xffffffea?
> 
> Because Linux ERROR codes are all negative!
> 
> I have another suggestion. Maybe there is a sign error:
> 
> printf("arg=0x%016llx\n", (long)arg);
> 
> If that value is bigger than 32-bit, try to cast it to:
> 

Hi,

> (u32)(long)arg, when passing to IOCTL functions.

I meant printing the "cmd" value. "arg" value can be negative if a pointer is 
passed along.

Try to figure out which ioctl is failing. Maybe run webcamd from gdb and add 
some code you can break-point on, then single step.

--HPS

> 
> --HPS
> 
> 
> linux_ioctl(struct cdev_handle *handle, int fflags,
>     unsigned int cmd, void *arg)
> {
>         if (handle == NULL)
>                 return (-EINVAL);
> 
>         linux_fix_f_flags(&handle->fixed_file, fflags);
> 
>         if (handle->fixed_file.f_op->unlocked_ioctl != NULL)
>                 return (handle->fixed_file.f_op->unlocked_ioctl(&handle-
> 
> >fixed_file,
> 
>                     cmd, (long)arg));
>         else if (handle->fixed_file.f_op->ioctl != NULL)
>                 return
> (handle->fixed_file.f_op->ioctl(&handle->fixed_inode, &handle->fixed_file,
> cmd, (long)arg));
>         else
>                 return (-EINVAL);
> }
> 
> > 	matthias


More information about the freebsd-multimedia mailing list