Logitech Quickcam Sphere MP - Pan & Tilt do not work
Question
I have a brand new Logitech Quickcam Sphere MP. The picture is fine through motion and other tools but i can not get pan & tilt to work.
This is my configuration:
- Fedora Core 6
- Kernel 2.6.20
-
V4L2 as it came with the kernel (don't know how to determine the version)
- UVCvideo from latest svn 2008-01-28 (don't know how to determine the version)
- libwebcam 0.1 (latest from quickcamteam.net)
- Motion 3.2.9
Please Help...
Here are some things I've tried and the responses I got:
## UVCDYNCTRL import ok but any other action on the camera fails with the same error.
[root@server]# uvcdynctrl -i ./logitech.xml
Importing dynamic controls from file ./logitech.xml.
[root@server]# uvcdynctrl -l
[libwebcam] Unable to refresh device list. (error 12: A Video4Linux2 API call returned an unexpected error)
## LUVCVIEW output on screen when pressing pan / tilt buttons (pan up as example)
[root@server] # luvcview
luvcview version 0.2.1
Video dreive: x11
A window manager is available
video /dev/video0
ioctl quirycontrol error 22
Set Pan up error
ioctl quirycontrol error 22
Set Pan up error
## MOTION output in /var/log/messages when enabling tracking
Jan 29 00:41:40 tjserver motion: [0] Processing thread 0 - config file /usr/local/etc/motion.conf
Jan 29 00:41:40 tjserver motion: [0] Motion 3.2.9 Started
Jan 29 00:41:40 tjserver motion: [0] Created process id file /var/run/motion.pid. Process ID is 29668
Jan 29 00:41:40 tjserver motion: [0] Motion running as daemon process
Jan 29 00:41:40 tjserver motion: [0] ffmpeg LIBAVCODEC_BUILD 3352580 LIBAVFORMAT_BUILD 3345409
Jan 29 00:41:40 tjserver motion: [0] Thread 1 is from /usr/local/etc/motion.conf
Jan 29 00:41:40 tjserver motion: [1] cap.driver: "uvcvideo"
Jan 29 00:41:40 tjserver motion: [1] cap.card: "UVC Camera (046d:08cc)"
Jan 29 00:41:40 tjserver motion: [1] cap.bus_info: "0000:00:02.1"
Jan 29 00:41:40 tjserver motion: [1] cap.capabilities=0x04000001
Jan 29 00:41:40 tjserver motion: [1] - VIDEO_CAPTURE
Jan 29 00:41:40 tjserver motion: [1] - STREAMING
Jan 29 00:41:40 tjserver motion: [1] Supported palettes:
Jan 29 00:41:40 tjserver motion: [1] 0: MJPG (MJPEG)
Jan 29 00:41:40 tjserver motion: [1] 1: YUYV (YUV 4:2:2 (YUYV))
Jan 29 00:41:40 tjserver motion: [1] Test palette YUYV (640x480)
Jan 29 00:41:40 tjserver motion: [1] Using palette YUYV (640x480) bytesperlines 1280 sizeimage 614400 colorspace 00000008
Jan 29 00:41:40 tjserver motion: [1] found control 0x00980900, "Brightness", range 0,255
Jan 29 00:41:40 tjserver motion: [1] "Brightness", default 127, current 127
Jan 29 00:41:40 tjserver motion: [1] found control 0x00980901, "Contrast", range 0,255
Jan 29 00:41:40 tjserver motion: [1] "Contrast", default 32, current 32
Jan 29 00:41:40 tjserver motion: [1] found control 0x00980902, "Saturation", range 0,255
Jan 29 00:41:40 tjserver motion: [1] "Saturation", default 32, current 32
Jan 29 00:41:40 tjserver motion: [1] found control 0x00980913, "Gain", range 0,255
Jan 29 00:41:40 tjserver motion: [1] "Gain", default 0, current 127
Jan 29 00:41:40 tjserver motion: [1] found control 0x08000000, "Backlight Compensation", range 0,2
Jan 29 00:41:40 tjserver motion: [1] "Backlight Compensation", default 1, current 1
Jan 29 00:41:40 tjserver motion: [1] found control 0x08000001, "Power Line Frequency", range 0,2
Jan 29 00:41:40 tjserver motion: [1] "Power Line Frequency", default 2, current 2
Jan 29 00:42:38 tjserver motion: [1] Failed to reset camera to starting position! Reason: Invalid argument
Update:
I Just installed the new libwebcam that was released yesterday: version 0.1.1
Outputs:
[root@tjserver libwebcam-0.1.1]# uvcdynctrl -c
[libwebcam] Unsupported
V4L2 _CID_EXPOSURE_AUTO control with a non-contiguous
range of choice IDs found
[libwebcam] Invalid or unsupported
V4L2 control encountered: ctrl_id = 134217738, name = 'Exposure, Auto'
Listing available controls for device video0:
Raw bits per pixel
Disable video processing
LED1 Frequency
LED1 Mode
Pan/tilt Reset
Tilt (relative)
Pan (relative)
Exposure, Auto Priority
White Balance Temperature
White Balance Temperature, Auto
Exposure (Absolute)
Sharpness
Power Line Frequency
Backlight Compensation
Gain
Saturation
Contrast
Brightness
[root@tjserver libwebcam-0.1.1]# uvcdynctrl -i /etc/udev/data/046d/logitech.xml
[libwebcam] Unsupported
V4L2 _CID_EXPOSURE_AUTO control with a non-contiguous
range of choice IDs found
[libwebcam] Invalid or unsupported
V4L2 control encountered: ctrl_id = 134217738, name = 'Exposure, Auto'
Importing dynamic controls from file /etc/udev/data/046d/logitech.xml.
/etc/udev/data/046d/logitech.xml: error: video0: unable to add control with GUID {63610682-5070-49ab-b8cc-b3855e8d2250} and selector 5. ioctl(UVCIOC_CTRL_ADD) failed with return value -1 (error 17: File exists)
/etc/udev/data/046d/logitech.xml: error: video0: unable to add control with GUID {63610682-5070-49ab-b8cc-b3855e8d2250} and selector 8. ioctl(UVCIOC_CTRL_ADD) failed with return value -1 (error 17: File exists)
/etc/udev/data/046d/logitech.xml: error: video0: unable to add control with GUID {63610682-5070-49ab-b8cc-b3855e8d221f} and selector 1. ioctl(UVCIOC_CTRL_ADD) failed with return value -1 (error 17: File exists)
/etc/udev/data/046d/logitech.xml: error: video0: unable to add control with GUID {63610682-5070-49ab-b8cc-b3855e8d2256} and selector 3. ioctl(UVCIOC_CTRL_ADD) failed with return value -1 (error 17: File exists)
/etc/udev/data/046d/logitech.xml: error: video0: unable to add control with GUID {63610682-5070-49ab-b8cc-b3855e8d2256} and selector 1. ioctl(UVCIOC_CTRL_ADD) failed with return value -1 (error 17: File exists)
/etc/udev/data/046d/logitech.xml: error: video0: unable to add control with GUID {63610682-5070-49ab-b8cc-b3855e8d2256} and selector 2. ioctl(UVCIOC_CTRL_ADD) failed with return value -1 (error 17: File exists)
/etc/udev/data/046d/logitech.xml: error: video0: unable to map 'Pan (relative)' control. ioctl(UVCIOC_CTRL_MAP) failed with return value -1 (error 17: File exists)
/etc/udev/data/046d/logitech.xml: error: video0: unable to map 'Tilt (relative)' control. ioctl(UVCIOC_CTRL_MAP) failed with return value -1 (error 17: File exists)
/etc/udev/data/046d/logitech.xml: error: video0: unable to map 'Pan/tilt Reset' control. ioctl(UVCIOC_CTRL_MAP) failed with return value -1 (error 17: File exists)
/etc/udev/data/046d/logitech.xml: error: video0: unable to map 'Focus' control. ioctl(UVCIOC_CTRL_MAP) failed with return value -1 (error 17: File exists)
/etc/udev/data/046d/logitech.xml: error: video0: unable to map 'LED1 Mode' control. ioctl(UVCIOC_CTRL_MAP) failed with return value -1 (error 17: File exists)
/etc/udev/data/046d/logitech.xml: error: video0: unable to map 'LED1 Frequency' control. ioctl(UVCIOC_CTRL_MAP) failed with return value -1 (error 17: File exists)
/etc/udev/data/046d/logitech.xml: error: video0: unable to map 'Disable video processing' control. ioctl(UVCIOC_CTRL_MAP) failed with return value -1 (error 17: File exists)
/etc/udev/data/046d/logitech.xml: error: video0: unable to map 'Raw bits per pixel' control. ioctl(UVCIOC_CTRL_MAP) failed with return value -1 (error 17: File exists)
Does it look like a uvcvideo driver problem?
BTW: just did a full system update (yum update):
Now running on kernel 2.6.22 etc...
With the new libwebcam, uvcdynctrl now works on all capabilities. For example, this does tilt:
[root@tjserver libwebcam-0.1.1]# uvcdynctrl --set="Tilt (relative)" 100
[libwebcam] Unsupported V4L2_CID_EXPOSURE_AUTO control with a non-contiguous
range of choice IDs found
[libwebcam] Invalid or unsupported V4L2 control encountered: ctrl_id = 134217738, name = 'Exposure, Auto'
luvcview: still prints; ioctl querycontrol error 22
motion: still logs; Failed to reset camera to starting position! Reason: Invalid argument
Environment
Motion version: |
3.2.9 |
ffmpeg version: |
SVN-r9816 |
Libraries: |
ffmpeg, mysql, postgresql |
Server OS: |
Fedora Core 6, kernel 2.6.20 |
--
TjOnline - 29 Jan 2008
Follow up
Well track (pan/tilt) worked fine with motion-3.2.9 and uvc webcams , but maybe driver changed pan/tilt API or controls ... it's hard to work on it without any
webcam of this type :-/
I'll try to add a track debug feature in motion trunk to help on this issue.
--
AngelCarpintero - 30 Jan 2008
Follow up
Thanks you for your quick reply.
I'll wait for the debug feature.
It is weird though; I have full control via uvcdynctrl, but no pan and tilt through luvcview and motion...
--
TjOnline - 30 Jan 2008
I ran into the this link:
http://www.quickcamteam.net/documentation/faq/i-have-a-logitech-quickcam-orbit-sphere-mp-why-dont-the-pan-tilt-buttons-in-luvcview-work
Could my problems with motion be exactly the same? Does this help?
--
TjOnline - 31 Jan 2008
Thanks for the link , that was an old issue that already was fixed in motion . Current problem is the introduction of dynctrl , i've been reading documentation and development is still in progress so API is not stable yet. Lets see if there's a way to introduce a quick patch to workaround.
--
AngelCarpintero - 02 Feb 2008
Follow up: SOLVED
You are totally right about dynctrl;
FINDINGS:
The uvcvideo driver maps all standard controls like brightnes, saturation etc.
Maps for pan, tilt, reset and other specials are mapped by dynctrl based on an xml file; logitech.xml
The latest version of libwebcam, version 0.1.1 (containing libwebcam and uvcdynctrl) comes with logitech.xml version 0.15.
This version of logitech.xml contains some strange keys for the controls:
MOTION uses the CORRECT values:
V4L2 _CID_PAN_RELATIVE =
V4L2 _CID_PRIVATE_BASE+7 = 0x08000007
V4L2 _CID_TILT_RELATIVE =
V4L2 _CID_PRIVATE_BASE+8 = 0x08000008
V4L2 _CID_PANTILT_RESET =
V4L2 _CID_PRIVATE_BASE+9 = 0x08000009
LOGITECH.XML maps these controls WEIRD like this:
In other words, the controls will be at:
V4L2 _CID_PAN_RELATIVE = 0x0A046D01
V4L2 _CID_TILT_RELATIVE = 0x0A046D02
V4L2 _CID_PANTILT_RESET = 0x0A046D03
SYMPTOMS:
With the uvcvideo kernel module set to trace controls (rmmod uvcvideo; modprobe uvcvideo trace=0x004)...
MOTION will generate trace messages like (shown with dmesg):
uvcvideo: Control 0x08000009 not found.
Which is weird because this is the right id for pan/tilt-reset.
SOLUTION:
By changing the control values in logitech.xml like this:
<constant type="integer">
<id>V4L2_CID_PAN_RELATIVE</id>
<value>0x08000007</value>
</constant>
<constant type="integer">
<id>V4L2_CID_TILT_RELATIVE</id>
<value>0x08000008</value>
</constant>
<constant type="integer">
<id>V4L2_CID_PANTILT_RESET</id>
<value>0x08000009</value>
</constant>
Tracking came to life an now works like expected in motion and luvcview.
NOTES:
1. Do note there are more weird values in logitech.xml for "focus", "led1 mode", "led1 frequency", "disable video processing" and "raw bits per pixel".
I left these untouched since I use uvcdynctrl to change them and uvcdynctrl knows where to find them by using the logitech.xml itself (I think).
2. Could the following support question be about the same cause?:
http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2008x01x05x042506
CONCLUSION:
As could be expected, it was not a problem with MOTION but with dynctrl and it's logitech.xml.
Thanks for your effort and I hope this helps others as well.
--
TjOnline - 03 Feb 2008
Answer
Thanks a lot , you did a great job
About notes :
1-. Ok , i don't know much about dynctrl i had not time to take a look yet. Maybe if you have time you can create a new topic in Twiki to explain how it works , i'm sure many users will contribute and many users will find a solution to its problems with uvcvideo.
UvcvideoDynctrl
2-. Absolutely , i've already edit to point answer to this post.
--
AngelCarpintero - 04 Feb 2008
Great work
TjOnline
--
KennethLavrsen - 02 Mar 2008