Patch for support Motion tracking feature with linux-uvc devices
Description of Patch
To enable tracking for Logitech Quickcam Sphere (046d:08c2) which use linux-uvc driver I had written uvc_center and uvc_move function inspired by original lqos_center and lqos_move function.
Installation of Patch
Download the patch file. If it is packed as a gz or tar.gz unpack it first. Then copy it to the motion source directory and issue the command (assuming the patch file is called filename_of_patch_file.diff)
patch < filename_of_patch_file.diff
Then re-build Motion and test the patch.
Change History of Patch
On my Bus 001 Device 002: ID 046d:08c2 Logitech, Inc.
I get :
[1] Failed to move camera!: Input/output error
[1] File of type 1 saved to: /usr/local/apache2/htdocs/cam1/01-20060709014719-00.jpg
on kernel log i get:
uvcvideo: Failed to query (1) UVC control 1 (unit 9) : -32.
ps: i've set the TRACK_TYPE to 5
do i have to modify something else?
Thx
--
FabioYamamoto - 09 Jul 2006
I track down the problem, i can't explain. but here it is:
When vd->formatIn is set to
V4L2_PIX_FMT_YUYV the control (pan/tilt) do not respond. if i set to
V4L2_PIX_FMT_MJPEG it works. ( But "Motion" is not prepared to accept this format ).
--
FabioYamamoto - 10 Jul 2006
I gonna try to merge your patch with current svn version revision 163 , but the API of uvcvideo has changed so i will introduce some changes.
--
AngelCarpintero - 25 Jan 2007
I have problem with tilting. Panning works ok, but tilt aint. My device is also 046d:08c2 Logitech, Inc. Logitech Sphere and using with
V4L2_PIX_FMT_MJPEG ok. Is there any solution in this tilt problem?
--
PeterBowle - 20 Feb 2007
Same problem as
PeterBowle :
uvctrack.diff applied to latest daily snapshot : panning OK, tilting KO
everything was allright with 3.6 release sources.
--
JeromeV - 26 Feb 2007
in the version 3.8.1 I get only mad moves - up&down nothing left&right sometimes and not clear. My cam is a 08CC.
This I can see, if I start the uvcvideo with tracelevel 15:
LinkStation:/usr/local/src/motion/motion# cat usb_08CC
Linux video capture interface: v2.00
uvcvideo: Adding mapping Brightness to control 00000000-0000-0000-0000-000000000101/2.
uvcvideo: Adding mapping Contrast to control 00000000-0000-0000-0000-000000000101/3.
uvcvideo: Adding mapping Hue to control 00000000-0000-0000-0000-000000000101/6.
uvcvideo: Adding mapping Saturation to control 00000000-0000-0000-0000-000000000101/7.
uvcvideo: Adding mapping Sharpness to control 00000000-0000-0000-0000-000000000101/8.
uvcvideo: Adding mapping Gamma to control 00000000-0000-0000-0000-000000000101/9.
uvcvideo: Adding mapping Backlight Compensation to control 00000000-0000-0000-0000-000000000101/1.
uvcvideo: Adding mapping Gain to control 00000000-0000-0000-0000-000000000101/4.
uvcvideo: Adding mapping Power Line Frequency to control 00000000-0000-0000-0000-000000000101/5.
uvcvideo: Adding mapping Hue, Auto to control 00000000-0000-0000-0000-000000000101/16.
uvcvideo: Adding mapping Pan (relative) to control 63610682-5070-49ab-b8cc-b3855e8d2256/1.
uvcvideo: Adding mapping Tilt (relative) to control 63610682-5070-49ab-b8cc-b3855e8d2256/1.
uvcvideo: Adding mapping Pan/Tilt (reset) to control 63610682-5070-49ab-b8cc-b3855e8d2256/2.
uvcvideo: Adding mapping Exposure, Auto to control 00000000-0000-0000-0000-000000000001/2.
uvcvideo: Adding mapping Exposure (Absolute) to control 00000000-0000-0000-0000-000000000001/4.
uvcvideo: Adding mapping White Balance Temperature, Auto to control 00000000-0000-0000-0000-000000000101/11.
uvcvideo: Adding mapping White Balance Temperature to control 00000000-0000-0000-0000-000000000101/10.
uvcvideo: Probing generic UVC device 1
uvcvideo: Found format MJPEG.
uvcvideo: - 160x120 (30.0 fps)
uvcvideo: - 176x144 (30.0 fps)
uvcvideo: - 320x240 (15.0 fps)
uvcvideo: - 352x288 (15.0 fps)
uvcvideo: - 640x480 (15.0 fps)
uvcvideo: - 960x720 (15.0 fps)
uvcvideo: Found format Uncompressed.
uvcvideo: - 160x120 (30.0 fps)
uvcvideo: - 176x144 (30.0 fps)
uvcvideo: - 320x240 (15.0 fps)
uvcvideo: - 352x288 (15.0 fps)
uvcvideo: - 640x480 (15.0 fps)
uvcvideo: - 960x720 (10.0 fps)
uvcvideo: - 1280x960 (7.5 fps)
uvcvideo: Found a Status endpoint (addr 87).
uvcvideo: Found UVC 1.00 device <unnamed> (046d:08cc)
uvcvideo: Added control 00000000-0000-0000-0000-000000000101/2 to device 1 entity 2
uvcvideo: Added control 00000000-0000-0000-0000-000000000101/3 to device 1 entity 2
uvcvideo: Added control 00000000-0000-0000-0000-000000000101/7 to device 1 entity 2
uvcvideo: Added control 00000000-0000-0000-0000-000000000101/8 to device 1 entity 2
uvcvideo: Added control 00000000-0000-0000-0000-000000000101/1 to device 1 entity 2
uvcvideo: Added control 00000000-0000-0000-0000-000000000101/4 to device 1 entity 2
uvcvideo: Added control 00000000-0000-0000-0000-000000000101/5 to device 1 entity 2
uvcvideo: Added control 63610682-5070-49ab-b8cc-b3855e8d2256/1 to device 1 entity 9
uvcvideo: Added control 63610682-5070-49ab-b8cc-b3855e8d2256/2 to device 1 entity 9
uvcvideo: Added control 00000000-0000-0000-0000-000000000001/2 to device 1 entity 1
uvcvideo: Added control 00000000-0000-0000-0000-000000000001/4 to device 1 entity 1
uvcvideo: Added control 00000000-0000-0000-0000-000000000101/11 to device 1 entity 2
uvcvideo: Added control 00000000-0000-0000-0000-000000000101/10 to device 1 entity 2
uvcvideo: Scanning UVC chain: OT 5 (-> 12 8 10 11 9) <- Unit 4 (-> 13) <- Unit 3 <- Unit 2 <- IT 1
uvcvideo: Found a valid video chain (1 -> 5).
uvcvideo: UVC device initialized.
usbcore: registered new interface driver uvcvideo
USB Video Class driver (v0.1.0)
LinkStation:/usr/local/src/motion/motion#
--
DirkWesenberg - 14 Mar 2007
Sorry, if I lost the format .Interessting is the message if I want to control the camera (also from dmesg = uvcvideo:
- Just start with <verbatim> and end with </verbatim> when you want to show "ASCII" text without TWiki formatting. -- KennethLavrsen
uvcvideo: Trying format 0x56595559 (VYUY): 640x480.
uvcvideo: Using default frame interval 66666.6 us (15.0 fps).
uvcvideo: Trying format 0x56595559 (VYUY): 640x480.
uvcvideo: Using default frame interval 66666.6 us (15.0 fps).
uvcvideo: Control 0x00980903 not found.
uvcvideo: Control 0x0098090e not found.
uvcvideo: Control 0x0098090f not found.
uvcvideo: Control 0x00980910 not found.
uvcvideo: Control 0x00980911 not found.
uvcvideo: Control 0x00980912 not found.
--
DirkWesenberg - 14 Mar 2007
One information more:
Motion - daily bind from the 14.03 / uvcvideo = daily from 13.03
I have try it in the morning also via a M$ IE and it works better as the Konquerer. The problem of Peter Bowle, I've too.
I use the script and html for try from :
http://www.lavrsen.dk/twiki/bin/view/Motion/LogitechSphereControl
with all the buttons at the webpage ( not the last - for testing the first is better ).
and
up and down at the buttons from the web will move the Cam left and right !
Left and right at the buttons from the webside will NOT move the Cam.
I think, there is only a little count error somewhere ?
--
DirkWesenberg - 15 Mar 2007
The HTTP/1.0 204 No Content trick works on all browsers - except some older versions of Konquerer that seems to react the wrong way to this.
--
KennethLavrsen - 15 Mar 2007
Hi I am having a similar problem. I have everything working apart from tilt. Pan is fine but I get no response to tilt. Any help much appreciated
--
PaulMcclung - 17 Mar 2007
Upps - I does not want override the old patch....
I have modified the old patch and split the pan/tilt function into 2 calls. I know it will be going better, but in C I'm a bloody beginner. Feel free to test also and/or change the 2 single calls of the procedure VIDIOC_S_CTRL to one call via VIDIOC_S_EXT_CTRLS ....
Tested with the motion of daily from 15.3.07 of motion and the daily of 15.3 of uvcvideo with the Kernel 2.6.20-4 PPC.
There is a small bug in the patch: I'll update later today ( Pan does not work anymore [all pan.tilt value must be in tilt ] ). Pan is working, but not long ... Maybe a small pause must be in ...
I try to rewrite the function - Yesterday Tilt was working w/o any problems, but Pan was going over the limit (first pan was working)... The pan&tilt via picture coordinate is in the first step disabled. At first the normal PAN&TILT must be working. I'm sorry that it is not going faster, but I've no experience with C ( more in Assembler ) ... maybe at the evening, I'll have a result.
--
DirkWesenberg - 28 Mar 2007
The Motion_Logitech_MP_Tracking.diff is now working with uvcvideo ( 03/07) and motion 3.2.8 with a Logitech Sphere MP refresh.
Relative PAN=7777 is also a PANTILT Reset. Also if first only relative working and than the switch to absolut is now working, because I reset the Webcam at first use. The Min & Max is fixed in Code, because the function is not included just now. Also the prgramming is not the best:I know-but it is my first C prog-Part. I hope, I have nothing forgotten, because M$ Controll char is must recopy in a orig track.c file.
Have fun !
--
DirkWesenberg - 30 Mar 2007
Thanks , added to current svn trunk , i did some ident on code ... still i didn't check it i'll try to get a webcam or someone that allow me to test one.
--
AngelCarpintero - 31 Mar 2007
Continue:
During I try to change the patch about Pan&Tilt I see, that the
WebCam Logitech 0x08cc handle also digital zoom. I think that is also hardware controll.
In
V4L2 I've found the procedure : VIDIOC_S_CROP
Does someone have try, to implement this feature ?
--
DirkWesenberg - 18 Apr 2007
The current patch it's already in current beta ( 3.2.8 beta 1) , so new patches will be against this beta version.
--
AngelCarpintero - 21 Apr 2007
I am having a similar problem with uvcvideo with original Logitech Orbit MP (046d:08c2) on Linux 2.6.20-16-generic using Motion 3.2.8 b1 (as well as latest snapshot). If I plug the camera into a USB 2.0 port, YUYV is used in Motion and I get a decent picture with flickering and no tracking. If I plug the camera into a USB 1.1 port, MJPG is used in Motion and the picture has funny colors, but the tracking works. Using the camera with luvcview (v0.2.1), the camera has a clear picture and tracking works with either USB 1.1 or 2.0 and generally get 13-16 fps.
--
BiehlD - 19 Jul 2007
I'm going to commit a patch to svn that fix the color issue, there was a previous patch that fixed that issue already but using libmjpegtools :
http://www.lavrsen.dk/twiki/bin/view/Motion/MjpegToYUV420pPatch
But was not very smart to introduce another dependency , so i hope the next commit fix finally the color issue.
Take a look to this new topic :
http://www.lavrsen.dk/twiki/bin/view/Motion/MjpegColorIssue
--
AngelCarpintero - 24 Jul 2007
After applying the patch mentioned in
http://www.lavrsen.dk/twiki/bin/view/Motion/MjpegColorIssue to release 200, I get a seg fault when I run Motion. Motion starts up, and reads the camera controls, then seg faults.
motion: [1] cap.driver: "uvcvideo"
motion: [1] cap.card: "UVC Camera (046d:08c2)"
motion: [1] cap.bus_info: "0000:00:1f.2"
motion: [1] cap.capabilities=0x04000001
motion: [1] - VIDEO_CAPTURE
motion: [1] - STREAMING
motion: [1] v4l2_select_input: name = "Camera 1", type 0x00000002, status 00000000
motion: [1] - CAMERA
motion: [1] Device doesn't support VIDIOC_G_STD
motion: [1] Supported palettes:
motion: [1] 0: MJPG (MJPEG)
motion: [1] Test palette MJPG (640x480)
motion: [1] Using palette MJPG (640x480) bytesperlines 0 sizeimage 62933 colorspace 00000008
motion: [1] found control 0x00980900, "Brightness", range 0,255
motion: [1] ^I"Brightness", default 127, current 231
motion: [1] found control 0x00980901, "Contrast", range 0,255
motion: [1] ^I"Contrast", default 32, current 221
motion: [1] found control 0x00980902, "Saturation", range 0,255
motion: [1] ^I"Saturation", default 32, current 221
motion: [1] found control 0x00980910, "Gamma", range 100,220
motion: [1] ^I"Gamma", default 220, current 220
motion: [1] found control 0x00980913, "Gain", range 0,255
motion: [1] ^I"Gain", default 0, current 0
motion: [1] found control 0x08000000, "Backlight Compensation", range 0,2
motion: [1] ^I"Backlight Compensation", default 1, current 1
motion: [1] found control 0x08000001, "Power Line Frequency", range 0,2
motion: [1] ^I"Power Line Frequency", default 2, current 2
SEG FAULT
Motion v3.2.8 still has the same color issues with the Logitech Orbit MP (046d:08c2). The strange colors appear more as the satuartion is increased. Email me if you need additional info.
--
BiehlD - 02 Aug 2007
You're right my patch segfault , i didn't notice before because seems that my camera ( using uvcvideo ) gets jpegs without problems , so there's no problem with huffman table , strange though. I'll work on this.
--
AngelCarpintero - 06 Aug 2007
I've added the old patch against current svn version ( -r201 )
http://www.lavrsen.dk/twiki/bin/view/Motion/MjpegColorIssue
--
AngelCarpintero - 08 Aug 2007
FYI:
r201 with mjpeg-color-issue.diff (from messages log)....
motion: [1] ^I"Power Line Frequency", default 2, current 2
motion: [1] Missing huffman table ... fixing
last message repeated 9 times
motion: [1] Removed process id file (pid file).
(motion quits automatically)
r201 with mjpeg2-r201.patch (while patching)...
patching file Makefile.in
patching file video.h
patching file video2.c
Hunk #1 succeeded at 828 with fuzz 2 (offset 42 lines).
patching file video_common.c
Hunk #2 succeeded at 396 (offset -1 lines).
r201 with mjpeg2-r201.patch works and color problem is fixed...Thank You!
--
BiehlD - 09 Aug 2007
Ok , seems that mjpeg-color-issue.diff mess jpeg :-/
So mjpeg2-r201.patch with mjpegtools dependency is in svn trunk until there's not a best approach.
--
AngelCarpintero - 09 Aug 2007