Discussion:
[linux-uvc-devel] linux 3.16.0 regression: black camera image with guvcview
Jörg-Volker Peetz
2014-08-06 16:01:13 UTC
Permalink
With the stock linux kernel 3.16.0 the camera of a HP Pavilion dv7 laptop shows
only a black image with guvcview although the video LED is turned on.
There is no hint in dmesg. Also the output of guvcview shows no conspicuousness.
Among others it says:

video device: /dev/video0
vid:0bda
pid:5801
driver:uvcvideo
device doesn't seem to support uvc H264 (0)
Init. 2SF022 (location: usb-0000:00:12.2-3)

With kernel version 3.15.8 the camera works.

Any ideas?
--
Regards,
Jörg-Volker.
Laurent Pinchart
2014-08-06 16:40:28 UTC
Permalink
Hi Jörg-Volker,
Post by Jörg-Volker Peetz
With the stock linux kernel 3.16.0 the camera of a HP Pavilion dv7 laptop
shows only a black image with guvcview although the video LED is turned on.
There is no hint in dmesg. Also the output of guvcview shows no
video device: /dev/video0
vid:0bda
pid:5801
driver:uvcvideo
device doesn't seem to support uvc H264 (0)
Init. 2SF022 (location: usb-0000:00:12.2-3)
With kernel version 3.15.8 the camera works.
There's only two commits between v3.15.8 and v3.16 for the uvcvideo driver.

commit 3b35fc81e7ec552147a4fd843d0da0bbbe4ef253
Author: Olivier Langlois <***@trillion01.com>
Date: Fri Mar 28 02:42:38 2014 -0300

[media] uvcvideo: Fix clock param realtime setting

timestamps in v4l2 buffers returned to userspace are updated in
uvc_video_clock_update() which uses timestamps fetched from
uvc_video_clock_decode() by calling unconditionally ktime_get_ts().

Hence setting the module clock param to realtime has no effect before
this patch.

This has been tested with ffmpeg:

ffmpeg -y -f v4l2 -input_format yuyv422 -video_size 640x480 -framerate 30
-i /dev/video0 \
-f alsa -acodec pcm_s16le -ar 16000 -ac 1 -i default \
-c:v libx264 -preset ultrafast \
-c:a libfdk_aac \
out.mkv

and inspecting the v4l2 input starting timestamp.

Cc: Stable <***@vger.kernel.org>
Signed-off-by: Olivier Langlois <***@trillion01.com>
Signed-off-by: Laurent Pinchart <***@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <***@samsung.com>

commit f8918ba071bbd7e3b9a3f6400d4bcfd893bc5dc9
Author: Anton Leontiev <***@t-25.ru>
Date: Tue Mar 25 01:40:57 2014 -0300

[media] uvcvideo: Fix marking buffer erroneous in case of FID toggling

Set error bit for incomplete buffers when end of buffer is detected by
FID toggling (for example when last transaction with EOF is lost).
This prevents passing incomplete buffers to the userspace.

Signed-off-by: Anton Leontiev <***@t-25.ru>
Signed-off-by: Laurent Pinchart <***@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <***@samsung.com>


I doubt that the first one is to blame. The second one looks fine to me as
well, but I might just fail to see an obvious problem. Could you try reverting
them on top of v3.16 ? If that helps please tell me which commit was to blame.
If it doesn't help, could you try to git-bisect the kernel to find out which
commit broke your camera ?
--
Regards,

Laurent Pinchart
Jörg-Volker Peetz
2014-08-07 07:16:58 UTC
Permalink
Hi Laurent,
Post by Laurent Pinchart
Hi Jörg-Volker,
Post by Jörg-Volker Peetz
With the stock linux kernel 3.16.0 the camera of a HP Pavilion dv7 laptop
shows only a black image with guvcview although the video LED is turned on.
There is no hint in dmesg. Also the output of guvcview shows no
video device: /dev/video0
vid:0bda
pid:5801
driver:uvcvideo
device doesn't seem to support uvc H264 (0)
Init. 2SF022 (location: usb-0000:00:12.2-3)
With kernel version 3.15.8 the camera works.
There's only two commits between v3.15.8 and v3.16 for the uvcvideo driver.
commit 3b35fc81e7ec552147a4fd843d0da0bbbe4ef253
Date: Fri Mar 28 02:42:38 2014 -0300
[media] uvcvideo: Fix clock param realtime setting
timestamps in v4l2 buffers returned to userspace are updated in
uvc_video_clock_update() which uses timestamps fetched from
uvc_video_clock_decode() by calling unconditionally ktime_get_ts().
Hence setting the module clock param to realtime has no effect before
this patch.
ffmpeg -y -f v4l2 -input_format yuyv422 -video_size 640x480 -framerate 30
-i /dev/video0 \
-f alsa -acodec pcm_s16le -ar 16000 -ac 1 -i default \
-c:v libx264 -preset ultrafast \
-c:a libfdk_aac \
out.mkv
and inspecting the v4l2 input starting timestamp.
commit f8918ba071bbd7e3b9a3f6400d4bcfd893bc5dc9
Date: Tue Mar 25 01:40:57 2014 -0300
[media] uvcvideo: Fix marking buffer erroneous in case of FID toggling
Set error bit for incomplete buffers when end of buffer is detected by
FID toggling (for example when last transaction with EOF is lost).
This prevents passing incomplete buffers to the userspace.
I doubt that the first one is to blame. The second one looks fine to me as
well, but I might just fail to see an obvious problem. Could you try reverting
them on top of v3.16 ? If that helps please tell me which commit was to blame.
If it doesn't help, could you try to git-bisect the kernel to find out which
commit broke your camera ?
indeed, using drivers/media/usb/uvc/uvc_video.c from 3.15.8 with 3.16 (the only
file changed in this directory) doesn't solve my problem. When I find the time,
I'll have to try to find the culprit by git-bisecting the kernel.
Thank you for caring.
--
Regards,
Jörg-Volker.
Loading...