2014-02-20 19:33:21

by Chris Rankin

[permalink] [raw]
Subject: PWC webcam and setpwc tool no longer working with 3.12.11 kernel



Hi,

I have an old Logitech webcam, with USB IDs 046d:08b3. When I try to use this camera now, I see this error in the dmesg log:

[ 2883.852464] pwc: isoc_init() submit_urb 0 failed with error -28


This error is apparently ENOSPC, which made me suspect that I was trying to use a mode that would require compression. However, when I tried using setpwc to configure the camera's options I received more errors:
$ setpwc -c 3
setpwc v1.3, (C) 2003-2006 by [email protected]
Error while doing ioctl VIDIOCPWCSCQUAL: Inappropriate ioctl for device


Has the kernel-to-userspace interface for PWC devices changed? Because how else could this IOCTL be "inappropriate"? Is there an alternative to setpwc, please?

Thanks,
Chris


2014-02-21 09:47:03

by Hans de Goede

[permalink] [raw]
Subject: Re: PWC webcam and setpwc tool no longer working with 3.12.11 kernel

Hi,

On 02/20/2014 08:30 PM, Chris Rankin wrote:
>
>
> Hi,
>
> I have an old Logitech webcam, with USB IDs 046d:08b3. When I try to use this camera now, I see this error in the dmesg log:
>
> [ 2883.852464] pwc: isoc_init() submit_urb 0 failed with error -28
>
>
> This error is apparently ENOSPC, which made me suspect that I was trying to use a mode that would require compression.

ENOSPC actually means that the data the cam is trying to send is too big for the available
bandwidth. So if anything you need to enable compression, but if compression is supported
then it will get enabled by default.

This is likely caused by the camera being plugged into a usb-bus which already is used
by other reserved-bandwidth devices such as mice, keyboard, usb soundcards, etc.

See which bus the cam is on in lsusb, and try plugging it into a different port until
it shows up on a different bus.

If possible USB-3 ports are preferred over USB-2 ports or connecting through an USB-2
hub. USB-2's USB-1 emulation has some issues, which means we cannot use full USB-1 bandwidth
there.

> However, when I tried using setpwc to configure the camera's options I received more errors:
> $ setpwc -c 3
> setpwc v1.3, (C) 2003-2006 by [email protected]
> Error while doing ioctl VIDIOCPWCSCQUAL: Inappropriate ioctl for device
>
>
> Has the kernel-to-userspace interface for PWC devices changed? Because how else could this IOCTL be "inappropriate"? Is there an alternative to setpwc, please?

Yes, the pwc driver was the only driver using its own custom ioctls instead of standard
v4l2 controls for many settings. The old ioctls have been deprecated for a while already
and have recently been removed.

You can control the camera with the v4l2-ctl app which is part of v4l-utils, or if you
want something graphical with qv4l2 which is also part of v4l-utils. More in general
any v4l controls app using the standard API-s should work, ie gtk-v4l or v4l2ucp should
work fine too.

Regards,

Hans

2014-02-21 14:52:22

by Chris Rankin

[permalink] [raw]
Subject: Re: PWC webcam and setpwc tool no longer working with 3.12.11 kernel

On Friday, 21 February 2014, 9:47, Hans de Goede <[email protected]> wrote:

> This is likely caused by the camera being plugged into a usb-bus which already is used
> by other reserved-bandwidth devices such as mice, keyboard, usb soundcards, etc.

> If possible USB-3 ports are preferred over USB-2 ports or connecting through an USB-2
> hub. USB-2's USB-1 emulation has some issues, which means we cannot use full USB-1 bandwidth
> there.

Hi,

Yes, it turns out that every device plugged into one of the USB2 ports on the back of this PC ends up on the same USB2 hub. Moving the PWC device to one of the USB3 ports instead allows it to work, although it seems like a shocking waste of a USB3 port - this being an old USB1 webcam!

And v4l2-ctl seem to recognise it as well:

$ v4l2-ctl --info
Driver Info (not using libv4l2):
??? Driver name?? : pwc
??? Card type???? : Logitech QuickCam Zoom
??? Bus info????? : usb-0000:05:00.0-2
??? Driver version: 3.12.11
??? Capabilities? : 0x85000001
??? ??? Video Capture
??? ??? Read/Write
??? ??? Streaming
??? ??? Device Capabilities
??? Device Caps?? : 0x05000001
??? ??? Video Capture
??? ??? Read/Write
??? ??? Streaming

Cheers,
Chris