[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4FF9CA30.9050105@redhat.com>
Date: Sun, 08 Jul 2012 19:58:08 +0200
From: Hans de Goede <hdegoede@...hat.com>
To: martin-eric.racine@....fi
CC: Jean-François Moine <moinejf@...e.fr>,
677533@...s.debian.org, linux-media@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: video: USB webcam fails since kernel 3.2
Hi,
On 07/08/2012 03:01 PM, Martin-Éric Racine wrote:
> 2012/6/17 Martin-Éric Racine <martin-eric.racine@....fi>:
>> pe, 2012-06-15 kello 23:41 -0500, Jonathan Nieder kirjoitti:
>>> Martin-Éric Racine wrote:
>>>> usb 1-7: new high-speed USB device number 3 using ehci_hcd
>>> [...]
>>>> usb 1-7: New USB device found, idVendor=0ac8, idProduct=0321
>>>> usb 1-7: New USB device strings: Mfr=1, Product=2, SerialNumber=0
>>>> usb 1-7: Product: USB2.0 Web Camera
>>>> usb 1-7: Manufacturer: Vimicro Corp.
>>> [...]
>>>> Linux media interface: v0.10
>>>> Linux video capture interface: v2.00
>>>> gspca_main: v2.14.0 registered
>>>> gspca_main: vc032x-2.14.0 probing 0ac8:0321
>>>> usbcore: registered new interface driver vc032x
>>>
>>> The device of interest is discovered.
>>>
>>>> gspca_main: ISOC data error: [36] len=0, status=-71
>>>> gspca_main: ISOC data error: [65] len=0, status=-71
>>> [...]
>>>> gspca_main: ISOC data error: [48] len=0, status=-71
>>>> video_source:sr[3246]: segfault at 0 ip (null) sp ab36de1c error 14 in cheese[8048000+21000]
>>>> gspca_main: ISOC data error: [17] len=0, status=-71
>>>
>>> (The above data error spew starts around t=121 seconds and continues
>>> at a rate of about 15 messages per second. The segfault is around
>>> t=154.)
>>
>>> The vc032x code hasn't changed since 3.4.1, so please report your
>>> symptoms to Jean-François Moine <moinejf@...e.fr>, cc-ing
>>> linux-media@...r.kernel.org, linux-kernel@...r.kernel.org, and either
>>> me or this bug log so we can track it. Be sure to mention:
>>>
>>> - steps to reproduce, expected result, actual result, and how the
>>> difference indicates a bug (should be simple enough in this case)
>>
>> 1. Ensure that user 'myself' is a member of the 'video' group.
>> 2. Launch the webcam application Cheese from the GNOME desktop.
>>
>> Expected result: Cheese displays whatever this laptop's camera sees.
>>
>> Actual result: Cheese crashes while attempting to access the camera.
>>
>>> - how reproducible the bug is (100%?)
>>
>> 100%
>>
>>> - which kernel versions you have tested and result with each (what is
>>> the newest kernel version that worked?)
>>
>> It probably was 3.1.0 or some earlier 3.2 release (the upcoming Debian
>> will release with 3.2.x; 3.4 was only used here for testing purposes),
>> but I wouldn't know for sure since I don't use my webcam too often.
>
> I finally found time to perform further testing, using kernel packages
> from snapshots.debian.org, and the last one that positively worked (at
> least using GNOME's webcam application Cheese) was:
>
> linux-image-3.1.0-1-686-pae 3.1.8-2
> Linux 3.1 for modern PCs
>
> This loaded the following video modules:
>
> gspca_vc032x
> gspca_main
> videodev
> media
>
> Tests using 3.2.1-1 or more recent crashed as described before. This
> at least gives us a time frame for when the regression started.
Hmm, this is then likely caused by the new isoc bandwidth negotiation code
in 3.2, unfortunately the vc032x driver is one of the few gspca drivers
for which I don't have a cam to test with. Can you try to build your own
kernel from source?
Boot into your own kernel, and verify the regression is still there,
then edit drivers/media/video/gspca/gspca.c and go to the which_bandwidth
function, and at the beginning of this function add the following line:
return 2000 * 2000 * 120;
Then rebuild and re-install the kernel and try again.
If that helps, remove the added
return 2000 * 2000 * 120;
line, and also remove the following lines from which_bandwidth:
/* if the image is compressed, estimate its mean size */
if (!gspca_dev->cam.needs_full_bandwidth &&
bandwidth < gspca_dev->cam.cam_mode[i].width *
gspca_dev->cam.cam_mode[i].height)
bandwidth = bandwidth * 3 / 8; /* 0.375 */
And try again if things still work this way.
Once you've tested this I can try to write a fix for this.
Regards,
Hans
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists