[FreeBSD 8/9] USB webcamd and video4bsd: Call for testing

Henri Hennebert hlh at restart.be
Mon Jan 11 17:59:56 UTC 2010


On 01/10/2010 14:37, Hans Petter Selasky wrote:
> Hi,
>
> During the last couple of days I've spent some time to finish my webcam
> daemon. My webcam daemon is basically an application which consists of
> userspace Video4Linux USB webcam drivers and some uLinux glue code which links
> with libc, pthreads and libusb. The webcamd talks to /dev/video_daemonX which
> is provided by the video4bsd kernel module. There is full support for
> mmap/read/write/open/close. poll is not supported.
>
> Basic operation and idea:
>
> /dev/video_daemonX is the interface for the webcamd. /dev/videoX is the
> interface for the V4L application. The video4bsd transports all data between
> these two devices. In the case the V4L application is using mmap, no data is
> copied due to shared kernel memory buffer!
>
> Licensing issues:
>
> Effectivly the webcamd userland program becomes GPL'ed due to the V4L USB
> drivers which are GPL licensed. Some files inside the webcamd remains BSD
> licensed which allows for building similar BSD licensed daemons.
>
> The rest of the code is BSD licensed.
>
> Source code:
>
> 1) FreeBSD 8-stable
>
> 2) Apply the patch below and re-install libusb in /usr/src/lib/libusb:
>
> http://p4web.freebsd.org/chv.cgi?CH=172876
>
> http://perforce.freebsd.org/chv.cgi?CH=172876
>
> 3) Compile ulinux (webcamd + libv4l + pwcview) and video4bsd (must be checked
> out in the same folder due to dependencies)
>
> svn --username anonsvn --password anonsvn \
>        checkout svn://svn.turbocat.net/i4b/trunk/usbcam/video4bsd
>
> make all install
> kldload video4bsd
>
> svn --username anonsvn --password anonsvn \
>        checkout svn://svn.turbocat.net/i4b/trunk/usbcam/ulinux
>
> make fetch
> make patch
> make all
> make install
>
> # this will attach to the first detected webcam:
> ./webcamd
>
> # this will try to attach to the given USB unit, interface and V4B unit.
> ./webcamd -d ugen4.1 -i 0 -v 0
>
> # this will display webcam contents from /dev/video0 by default.
> ./pwcview/pwcview
>
> Feedback and bug reports are welcome.
>
I try on a Fujitsu M2010:

FreeBSD meribel.restart.bel 8.0-RELEASE-p2 FreeBSD 8.0-RELEASE-p2 #0 
r201748M: Thu Jan  7 16:23:56 CET 2010 
root at meribel.restart.bel:/usr/obj/usr/src/sys/MERIBEL  i386

[root at meribel ~]# usbconfig
ugen0.1: <UHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=FULL 
(12Mbps) pwr=ON
ugen1.1: <UHCI root HUB Intel> at usbus1, cfg=0 md=HOST spd=FULL 
(12Mbps) pwr=ON
ugen2.1: <UHCI root HUB Intel> at usbus2, cfg=0 md=HOST spd=FULL 
(12Mbps) pwr=ON
ugen3.1: <EHCI root HUB Intel> at usbus3, cfg=0 md=HOST spd=HIGH 
(480Mbps) pwr=ON
ugen3.2: <USB Webcam QCM> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
ugen0.2: <product 0x1133 vendor 0x04d9> at usbus0, cfg=0 md=HOST spd=LOW 
(1.5Mbps) pwr=ON
ugen1.2: <product 0x6216 vendor 0x18e8> at usbus1, cfg=0 md=HOST 
spd=FULL (12Mbps) pwr=ON
ugen3.3: <USB2.0-CRW Generic> at usbus3, cfg=0 md=HOST spd=HIGH 
(480Mbps) pwr=ON
[root at meribel ~]# /home/meribel/webcam/ulinux/webcamd -d ugen3.2 -i 0 -v 0
KrefGet: 0x34028404 = 1
KrefGet: 0x34028404 = 2
KrefGet: 0x3402860c = 1
KrefGet: 0x340286c8 = 1
Added device 0x33f18b04
KrefGet: 0x33f18b08 = 1
KrefGet: 0x33f18b08 = 2

[root at meribel ~]# chmod 666 /dev/video* /dev/usb/*

[hlh at meribel ~]$ pwcview
Webcam set to: 320x240 (sif) at 5 fps

Give me a green window for some time and then this picture:

http://verbier.restart.be/xfer/Screenshot-pwcview.png

which stay still.

I can't kill pwcview window.

Thank you for your work!

Henri


More information about the freebsd-current mailing list