media: uvcvideo: Force UVC version to 1.0a for 0408:4035

Message ID 20230115205210.20077-1-laurent.pinchart@ideasonboard.com (mailing list archive)
State New
Delegated to: Laurent Pinchart
Headers
Series media: uvcvideo: Force UVC version to 1.0a for 0408:4035 |

Commit Message

Laurent Pinchart Jan. 15, 2023, 8:52 p.m. UTC
  The Quanta ACER HD User Facing camera reports a UVC 1.50 version, but
implements UVC 1.0a as shown by the UVC probe control being 26 bytes
long. Force the UVC version for that device.

Reported-by: Giuliano Lotta <giuliano.lotta@gmail.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---

Giuliano, I believe you've successfully tested this patch. If so, could
you reply with a Tested-by tag ? Just copying the following in your
reply will do:

Tested-by: Giuliano Lotta <giuliano.lotta@gmail.com>

 drivers/media/usb/uvc/uvc_driver.c | 11 +++++++++++
 1 file changed, 11 insertions(+)


base-commit: fd957081cff04668f390c6f290bdcc7fc009a0f1
  

Comments

Ricardo Ribalda Jan. 16, 2023, 1:05 p.m. UTC | #1
Hi Laurent

On Sun, 15 Jan 2023 at 21:52, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> The Quanta ACER HD User Facing camera reports a UVC 1.50 version, but
> implements UVC 1.0a as shown by the UVC probe control being 26 bytes
> long. Force the UVC version for that device.

Don't we also want to include 4035:4033 ?

I am curious about the PowerLine Control (does it have one?) will it
behave like 1.1 or 1.5

Would it be possible to get the output with uvc_debug enabled?

Regards!


>
> Reported-by: Giuliano Lotta <giuliano.lotta@gmail.com>
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
>
> Giuliano, I believe you've successfully tested this patch. If so, could
> you reply with a Tested-by tag ? Just copying the following in your
> reply will do:
>
> Tested-by: Giuliano Lotta <giuliano.lotta@gmail.com>
>
>  drivers/media/usb/uvc/uvc_driver.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> index 1a186abeb4fa..742eeaff333e 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -2429,6 +2429,17 @@ static const struct usb_device_id uvc_ids[] = {
>           .bInterfaceSubClass   = 1,
>           .bInterfaceProtocol   = UVC_PC_PROTOCOL_15,
>           .driver_info          = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
> +       /* Quanta ACER HD User Facing */
> +       { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
> +                               | USB_DEVICE_ID_MATCH_INT_INFO,
> +         .idVendor             = 0x0408,
> +         .idProduct            = 0x4035,
> +         .bInterfaceClass      = USB_CLASS_VIDEO,
> +         .bInterfaceSubClass   = 1,
> +         .bInterfaceProtocol   = UVC_PC_PROTOCOL_15,
> +         .driver_info          = (kernel_ulong_t)&(const struct uvc_device_info){
> +               .uvc_version = 0x010a,
> +         } },
>         /* LogiLink Wireless Webcam */
>         { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
>                                 | USB_DEVICE_ID_MATCH_INT_INFO,
>
> base-commit: fd957081cff04668f390c6f290bdcc7fc009a0f1
> --
> Regards,
>
> Laurent Pinchart
>


--
Ricardo Ribalda
  
Laurent Pinchart Jan. 16, 2023, 2:12 p.m. UTC | #2
Hi Ricardo,

On Mon, Jan 16, 2023 at 02:05:28PM +0100, Ricardo Ribalda wrote:
> On Sun, 15 Jan 2023 at 21:52, Laurent Pinchart wrote:
> >
> > The Quanta ACER HD User Facing camera reports a UVC 1.50 version, but
> > implements UVC 1.0a as shown by the UVC probe control being 26 bytes
> > long. Force the UVC version for that device.
> 
> Don't we also want to include 4035:4033 ?

I've asked for the lsusb output for that device, I'll send a separate
patch when I get it.

> I am curious about the PowerLine Control (does it have one?) will it
> behave like 1.1 or 1.5

Good question. Hardcoding the version to 1.0a will not cause an error,
but may prevent the auto mode from being supported.

An alternative would be to automatically fall back to the UVC 1.0a video
probe and commit control when the size returned by GET_CUR differs from
the value expected from UVC 1.5. That would be a generic fix that won't
require quirks. What do you think ?

> Would it be possible to get the output with uvc_debug enabled?

I'll let you tell Giuliano how to provide that :-)

> > Reported-by: Giuliano Lotta <giuliano.lotta@gmail.com>
> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > ---
> >
> > Giuliano, I believe you've successfully tested this patch. If so, could
> > you reply with a Tested-by tag ? Just copying the following in your
> > reply will do:
> >
> > Tested-by: Giuliano Lotta <giuliano.lotta@gmail.com>
> >
> >  drivers/media/usb/uvc/uvc_driver.c | 11 +++++++++++
> >  1 file changed, 11 insertions(+)
> >
> > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> > index 1a186abeb4fa..742eeaff333e 100644
> > --- a/drivers/media/usb/uvc/uvc_driver.c
> > +++ b/drivers/media/usb/uvc/uvc_driver.c
> > @@ -2429,6 +2429,17 @@ static const struct usb_device_id uvc_ids[] = {
> >           .bInterfaceSubClass   = 1,
> >           .bInterfaceProtocol   = UVC_PC_PROTOCOL_15,
> >           .driver_info          = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
> > +       /* Quanta ACER HD User Facing */
> > +       { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
> > +                               | USB_DEVICE_ID_MATCH_INT_INFO,
> > +         .idVendor             = 0x0408,
> > +         .idProduct            = 0x4035,
> > +         .bInterfaceClass      = USB_CLASS_VIDEO,
> > +         .bInterfaceSubClass   = 1,
> > +         .bInterfaceProtocol   = UVC_PC_PROTOCOL_15,
> > +         .driver_info          = (kernel_ulong_t)&(const struct uvc_device_info){
> > +               .uvc_version = 0x010a,
> > +         } },
> >         /* LogiLink Wireless Webcam */
> >         { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
> >                                 | USB_DEVICE_ID_MATCH_INT_INFO,
> >
> > base-commit: fd957081cff04668f390c6f290bdcc7fc009a0f1
  
Ricardo Ribalda Jan. 16, 2023, 2:19 p.m. UTC | #3
HI Laurent

On Mon, 16 Jan 2023 at 15:12, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> Hi Ricardo,
>
> On Mon, Jan 16, 2023 at 02:05:28PM +0100, Ricardo Ribalda wrote:
> > On Sun, 15 Jan 2023 at 21:52, Laurent Pinchart wrote:
> > >
> > > The Quanta ACER HD User Facing camera reports a UVC 1.50 version, but
> > > implements UVC 1.0a as shown by the UVC probe control being 26 bytes
> > > long. Force the UVC version for that device.
> >
> > Don't we also want to include 4035:4033 ?
>
> I've asked for the lsusb output for that device, I'll send a separate
> patch when I get it.
>
> > I am curious about the PowerLine Control (does it have one?) will it
> > behave like 1.1 or 1.5
>
> Good question. Hardcoding the version to 1.0a will not cause an error,
> but may prevent the auto mode from being supported.
>
> An alternative would be to automatically fall back to the UVC 1.0a video
> probe and commit control when the size returned by GET_CUR differs from
> the value expected from UVC 1.5. That would be a generic fix that won't
> require quirks. What do you think ?

That sounds good to me, but we should print a warning. At least to
make the users aware that here be dragons.

>
> > Would it be possible to get the output with uvc_debug enabled?
>
> I'll let you tell Giuliano how to provide that :-)

sure, you just do:

sudo rmmod uvcvideo; sudo modprobe uvcvideo  trace=0xffffffff

and then when you run dmesg, there will be much more uvc output

>
> > > Reported-by: Giuliano Lotta <giuliano.lotta@gmail.com>
> > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > ---
> > >
> > > Giuliano, I believe you've successfully tested this patch. If so, could
> > > you reply with a Tested-by tag ? Just copying the following in your
> > > reply will do:
> > >
> > > Tested-by: Giuliano Lotta <giuliano.lotta@gmail.com>
> > >
> > >  drivers/media/usb/uvc/uvc_driver.c | 11 +++++++++++
> > >  1 file changed, 11 insertions(+)
> > >
> > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> > > index 1a186abeb4fa..742eeaff333e 100644
> > > --- a/drivers/media/usb/uvc/uvc_driver.c
> > > +++ b/drivers/media/usb/uvc/uvc_driver.c
> > > @@ -2429,6 +2429,17 @@ static const struct usb_device_id uvc_ids[] = {
> > >           .bInterfaceSubClass   = 1,
> > >           .bInterfaceProtocol   = UVC_PC_PROTOCOL_15,
> > >           .driver_info          = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
> > > +       /* Quanta ACER HD User Facing */
> > > +       { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
> > > +                               | USB_DEVICE_ID_MATCH_INT_INFO,
> > > +         .idVendor             = 0x0408,
> > > +         .idProduct            = 0x4035,
> > > +         .bInterfaceClass      = USB_CLASS_VIDEO,
> > > +         .bInterfaceSubClass   = 1,
> > > +         .bInterfaceProtocol   = UVC_PC_PROTOCOL_15,
> > > +         .driver_info          = (kernel_ulong_t)&(const struct uvc_device_info){
> > > +               .uvc_version = 0x010a,
> > > +         } },
> > >         /* LogiLink Wireless Webcam */
> > >         { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
> > >                                 | USB_DEVICE_ID_MATCH_INT_INFO,
> > >
> > > base-commit: fd957081cff04668f390c6f290bdcc7fc009a0f1
>
> --
> Regards,
>
> Laurent Pinchart
  
Ricardo Ribalda Jan. 16, 2023, 2:21 p.m. UTC | #4
Hi Kolbjørn

On Mon, 16 Jan 2023 at 15:16, Kolbjørn Jetne <kolbjorn@kodemaker.no> wrote:
>
> I have no idea about the reason for being involved in this conversation...
My bad

I tried finding the email of this user:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2000947/comments/22

and I thought it was you. Sorry about that!

>
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> Kolbjørn Jetne
> Daglig leder
> +47 957 45 096
>
> KODEMAKER
> www.kodemaker.no
>
>
> man. 16. jan. 2023 kl. 15:12 skrev Laurent Pinchart <laurent.pinchart@ideasonboard.com>:
>>
>> Hi Ricardo,
>>
>> On Mon, Jan 16, 2023 at 02:05:28PM +0100, Ricardo Ribalda wrote:
>> > On Sun, 15 Jan 2023 at 21:52, Laurent Pinchart wrote:
>> > >
>> > > The Quanta ACER HD User Facing camera reports a UVC 1.50 version, but
>> > > implements UVC 1.0a as shown by the UVC probe control being 26 bytes
>> > > long. Force the UVC version for that device.
>> >
>> > Don't we also want to include 4035:4033 ?
>>
>> I've asked for the lsusb output for that device, I'll send a separate
>> patch when I get it.
>>
>> > I am curious about the PowerLine Control (does it have one?) will it
>> > behave like 1.1 or 1.5
>>
>> Good question. Hardcoding the version to 1.0a will not cause an error,
>> but may prevent the auto mode from being supported.
>>
>> An alternative would be to automatically fall back to the UVC 1.0a video
>> probe and commit control when the size returned by GET_CUR differs from
>> the value expected from UVC 1.5. That would be a generic fix that won't
>> require quirks. What do you think ?
>>
>> > Would it be possible to get the output with uvc_debug enabled?
>>
>> I'll let you tell Giuliano how to provide that :-)
>>
>> > > Reported-by: Giuliano Lotta <giuliano.lotta@gmail.com>
>> > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>> > > ---
>> > >
>> > > Giuliano, I believe you've successfully tested this patch. If so, could
>> > > you reply with a Tested-by tag ? Just copying the following in your
>> > > reply will do:
>> > >
>> > > Tested-by: Giuliano Lotta <giuliano.lotta@gmail.com>
>> > >
>> > >  drivers/media/usb/uvc/uvc_driver.c | 11 +++++++++++
>> > >  1 file changed, 11 insertions(+)
>> > >
>> > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
>> > > index 1a186abeb4fa..742eeaff333e 100644
>> > > --- a/drivers/media/usb/uvc/uvc_driver.c
>> > > +++ b/drivers/media/usb/uvc/uvc_driver.c
>> > > @@ -2429,6 +2429,17 @@ static const struct usb_device_id uvc_ids[] = {
>> > >           .bInterfaceSubClass   = 1,
>> > >           .bInterfaceProtocol   = UVC_PC_PROTOCOL_15,
>> > >           .driver_info          = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
>> > > +       /* Quanta ACER HD User Facing */
>> > > +       { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
>> > > +                               | USB_DEVICE_ID_MATCH_INT_INFO,
>> > > +         .idVendor             = 0x0408,
>> > > +         .idProduct            = 0x4035,
>> > > +         .bInterfaceClass      = USB_CLASS_VIDEO,
>> > > +         .bInterfaceSubClass   = 1,
>> > > +         .bInterfaceProtocol   = UVC_PC_PROTOCOL_15,
>> > > +         .driver_info          = (kernel_ulong_t)&(const struct uvc_device_info){
>> > > +               .uvc_version = 0x010a,
>> > > +         } },
>> > >         /* LogiLink Wireless Webcam */
>> > >         { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
>> > >                                 | USB_DEVICE_ID_MATCH_INT_INFO,
>> > >
>> > > base-commit: fd957081cff04668f390c6f290bdcc7fc009a0f1
>>
>> --
>> Regards,
>>
>> Laurent Pinchart
  
Ricardo Ribalda Jan. 16, 2023, 3:11 p.m. UTC | #5
Hi Giuliano

On Mon, 16 Jan 2023 at 15:31, Giuliano Lotta <giuliano.lotta@gmail.com> wrote:
>
> Hi Ricardo,
> I have a  4035:4035 (not the 4035:4033 );
> if it may help , I  could manage to have the debug info from this camera.
>
> BUT to get uvc_debug enabled, which
> -specific #define adn/or variable
> -specific  c/h  file
>
> should we set ?

no need to change any code. Just do:

sudo rmmod uvcvideo; sudo modprobe uvcvideo  trace=0xffffffff

then get some frames

yavta --capture=3 /dev/video0


then run dmesg

Thanks!

>
> BR
> Giuliano
>
> Il giorno lun 16 gen 2023 alle ore 14:05 Ricardo Ribalda <ribalda@chromium.org> ha scritto:
> >
> > Hi Laurent
> >
> > On Sun, 15 Jan 2023 at 21:52, Laurent Pinchart
> > <laurent.pinchart@ideasonboard.com> wrote:
> > >
> > > The Quanta ACER HD User Facing camera reports a UVC 1.50 version, but
> > > implements UVC 1.0a as shown by the UVC probe control being 26 bytes
> > > long. Force the UVC version for that device.
> >
> > Don't we also want to include 4035:4033 ?
> >
> > I am curious about the PowerLine Control (does it have one?) will it
> > behave like 1.1 or 1.5
> >
> > Would it be possible to get the output with uvc_debug enabled?
> >
> > Regards!
> >
> >
> > >
> > > Reported-by: Giuliano Lotta <giuliano.lotta@gmail.com>
> > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > ---
> > >
> > > Giuliano, I believe you've successfully tested this patch. If so, could
> > > you reply with a Tested-by tag ? Just copying the following in your
> > > reply will do:
> > >
> > > Tested-by: Giuliano Lotta <giuliano.lotta@gmail.com>
> > >
> > >  drivers/media/usb/uvc/uvc_driver.c | 11 +++++++++++
> > >  1 file changed, 11 insertions(+)
> > >
> > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> > > index 1a186abeb4fa..742eeaff333e 100644
> > > --- a/drivers/media/usb/uvc/uvc_driver.c
> > > +++ b/drivers/media/usb/uvc/uvc_driver.c
> > > @@ -2429,6 +2429,17 @@ static const struct usb_device_id uvc_ids[] = {
> > >           .bInterfaceSubClass   = 1,
> > >           .bInterfaceProtocol   = UVC_PC_PROTOCOL_15,
> > >           .driver_info          = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
> > > +       /* Quanta ACER HD User Facing */
> > > +       { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
> > > +                               | USB_DEVICE_ID_MATCH_INT_INFO,
> > > +         .idVendor             = 0x0408,
> > > +         .idProduct            = 0x4035,
> > > +         .bInterfaceClass      = USB_CLASS_VIDEO,
> > > +         .bInterfaceSubClass   = 1,
> > > +         .bInterfaceProtocol   = UVC_PC_PROTOCOL_15,
> > > +         .driver_info          = (kernel_ulong_t)&(const struct uvc_device_info){
> > > +               .uvc_version = 0x010a,
> > > +         } },
> > >         /* LogiLink Wireless Webcam */
> > >         { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
> > >                                 | USB_DEVICE_ID_MATCH_INT_INFO,
> > >
> > > base-commit: fd957081cff04668f390c6f290bdcc7fc009a0f1
> > > --
> > > Regards,
> > >
> > > Laurent Pinchart
> > >
> >
> >
> > --
> > Ricardo Ribalda
  
Ricardo Ribalda March 4, 2024, 8:28 a.m. UTC | #6
Hi

Helping out Guiliano to send the tested-by, he also says that
0408:4033 should be added to this patch.

On Sun, 15 Jan 2023 at 21:52, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> The Quanta ACER HD User Facing camera reports a UVC 1.50 version, but
> implements UVC 1.0a as shown by the UVC probe control being 26 bytes
> long. Force the UVC version for that device.
>
> Reported-by: Giuliano Lotta <giuliano.lotta@gmail.com>
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Tested-by: Giuliano Lotta <giuliano.lotta@gmail.com>


> ---
>
> Giuliano, I believe you've successfully tested this patch. If so, could
> you reply with a Tested-by tag ? Just copying the following in your
> reply will do:
>
> Tested-by: Giuliano Lotta <giuliano.lotta@gmail.com>
>
>  drivers/media/usb/uvc/uvc_driver.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> index 1a186abeb4fa..742eeaff333e 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -2429,6 +2429,17 @@ static const struct usb_device_id uvc_ids[] = {
>           .bInterfaceSubClass   = 1,
>           .bInterfaceProtocol   = UVC_PC_PROTOCOL_15,
>           .driver_info          = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
> +       /* Quanta ACER HD User Facing */
> +       { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
> +                               | USB_DEVICE_ID_MATCH_INT_INFO,
> +         .idVendor             = 0x0408,
> +         .idProduct            = 0x4035,
> +         .bInterfaceClass      = USB_CLASS_VIDEO,
> +         .bInterfaceSubClass   = 1,
> +         .bInterfaceProtocol   = UVC_PC_PROTOCOL_15,
> +         .driver_info          = (kernel_ulong_t)&(const struct uvc_device_info){
> +               .uvc_version = 0x010a,
> +         } },
>         /* LogiLink Wireless Webcam */
>         { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
>                                 | USB_DEVICE_ID_MATCH_INT_INFO,
>
> base-commit: fd957081cff04668f390c6f290bdcc7fc009a0f1
> --
> Regards,
>
> Laurent Pinchart
>


--
Ricardo Ribalda
  

Patch

diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
index 1a186abeb4fa..742eeaff333e 100644
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -2429,6 +2429,17 @@  static const struct usb_device_id uvc_ids[] = {
 	  .bInterfaceSubClass	= 1,
 	  .bInterfaceProtocol	= UVC_PC_PROTOCOL_15,
 	  .driver_info		= (kernel_ulong_t)&uvc_ctrl_power_line_limited },
+	/* Quanta ACER HD User Facing */
+	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
+				| USB_DEVICE_ID_MATCH_INT_INFO,
+	  .idVendor		= 0x0408,
+	  .idProduct		= 0x4035,
+	  .bInterfaceClass	= USB_CLASS_VIDEO,
+	  .bInterfaceSubClass	= 1,
+	  .bInterfaceProtocol	= UVC_PC_PROTOCOL_15,
+	  .driver_info		= (kernel_ulong_t)&(const struct uvc_device_info){
+		.uvc_version = 0x010a,
+	  } },
 	/* LogiLink Wireless Webcam */
 	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
 				| USB_DEVICE_ID_MATCH_INT_INFO,