Re: [linux-uvc-devel] HD Camera (4e45:5501) support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

On Thu, Feb 28, 2019 at 07:45:57PM +0000, Kieran Bingham wrote:
> Hi Amila,
> 
> I believe this topic might get more attention on the linux-media mailing
> list (which I've added to Cc), but I have some comments below too:
> 
> On 27/02/2019 16:41, Amila Manoj wrote:
> > Hello,
> > 
> > I'm trying to get this camera working with Ubuntu 18 (4.15.0-20-generic
> > x86_64 GNU/Linux):
> > 
> > http://www.nse-global.com/index.php?ac=article&at=read&did=445
> > 
> > This camera is not listed under supported devices in
> > http://www.ideasonboard.org/uvc/#devices
> > 
> > Device initialization fails and it doesn't get listed under /dev/video*
> > 
> > In lsusb, the device is listed with just the vendor and product id's.
> > 
> > 
> > "lsusb" output:
> > 
> > Bus 002 Device 007: ID 4e45:5501  
> > Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
> > Bus 001 Device 005: ID 8087:0a2b Intel Corp. 
> > Bus 001 Device 004: ID 1e3d:2093 Chipsbank Microelectronics Co., Ltd CBM209x Flash Drive (OEM)
> > Bus 001 Device 003: ID 04f2:0833 Chicony Electronics Co., Ltd 
> > Bus 001 Device 009: ID 17ef:6019 Lenovo 
> > Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
> > 
> > 
> > "dmesg" output (with trace enabled):
> > 
> > [Feb27 15:37] usb 2-1: new SuperSpeed USB device number 7 using xhci_hcd
> > [  +0.024687] usb 2-1: LPM exit latency is zeroed, disabling LPM.
> > [  +0.000632] usb 2-1: New USB device found, idVendor=4e45, idProduct=5501
> > [  +0.000005] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
> > [  +0.000003] usb 2-1: Product: NSE-CAM
> > [  +0.000003] usb 2-1: Manufacturer: NSE
> > [  +0.001181] uvcvideo: Probing generic UVC device 1
> > [  +0.000009] uvcvideo: Found format YUV 4:2:2 (UYVY).
> > [  +0.000003] uvcvideo: - 1920x1080 (30.0 fps)
> > [  +0.000009] uvcvideo: Found a Status endpoint (addr 82).
> > [  +0.000003] uvcvideo: Found UVC 1.10 device NSE-CAM (4e45:5501)
> > [  +0.000009] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/2 to device 1 entity 2
> > [  +0.000003] uvcvideo: Adding mapping 'Brightness' to control 00000000-0000-0000-0000-000000000101/2.
> > [  +0.000005] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/3 to device 1 entity 2
> > [  +0.000003] uvcvideo: Adding mapping 'Contrast' to control 00000000-0000-0000-0000-000000000101/3.
> > [  +0.000003] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/6 to device 1 entity 2
> > [  +0.000003] uvcvideo: Adding mapping 'Hue' to control 00000000-0000-0000-0000-000000000101/6.
> > [  +0.000003] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/7 to device 1 entity 2
> > [  +0.000003] uvcvideo: Adding mapping 'Saturation' to control 00000000-0000-0000-0000-000000000101/7.
> > [  +0.000004] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/8 to device 1 entity 2
> > [  +0.000003] uvcvideo: Adding mapping 'Sharpness' to control 00000000-0000-0000-0000-000000000101/8.
> > [  +0.000003] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/10 to device 1 entity 2
> > [  +0.000004] uvcvideo: Adding mapping 'White Balance Temperature' to control 00000000-0000-0000-0000-000000000101/10.
> > [  +0.000003] uvcvideo: Added control 00000000-0000-0000-0000-000000000101/11 to device 1 entity 2
> > [  +0.000003] uvcvideo: Adding mapping 'White Balance Temperature, Auto' to control 00000000-0000-0000-0000-000000000101/11.
> > [  +0.000003] uvcvideo: Scanning UVC chain: OT 4 <- XU 3 <- PU 2 <- IT 1
> > [  +0.000010] uvcvideo: Found a valid video chain (1 -> 4).
> > [  +0.709208] usb 1-2: new low-speed USB device number 9 using xhci_hcd
> > [  +0.151295] usb 1-2: New USB device found, idVendor=17ef, idProduct=6019
> > [  +0.000005] usb 1-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
> > [  +0.000003] usb 1-2: Product: Lenovo Optical USB Mouse
> > [  +4.165317] input: Lenovo Optical USB Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:17EF:6019.0006/input/input16
> > [  +0.059888] hid-generic 0003:17EF:6019.0006: input,hidraw0: USB HID v1.11 Mouse [Lenovo Optical USB Mouse] on usb-0000:00:14.0-2/input0
> > [  +5.055435] uvcvideo: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround.
> > [  +5.119896] uvcvideo: Failed to query (129) UVC probe control : -110 (exp. 34).
> 
> Hrm ... that ^ 'looks' like a bug we fixed a while back I think ...

The camera times out when the driver tries to get the current value of
the UVC probe control. I would suspect a bug in the camera firmware that
makes it crash when it received the previous GET_DEF(PROBE) request.

GET_DEF(PROBE) can be skipped entirely by setting the
UVC_QUIRK_PROBE_DEF quirk. Amila, could you please try that ? The
easiest way to do so is to disconnect the camera, set the quirk with

echo 0x100 > /sys/module/uvcvideo/parameters/quirks

(running as root, or with sudo) and reconnect the camera.

> Have you tried other UVC cameras on this system?
> Are you able to try a later kernel version just to be sure?
> 
> 
> > [  +0.000007] uvcvideo: Failed to initialize the device (-5).
> > [ +25.599651] usbhid 2-1:1.2: can't add hid device: -110
> > [  +0.000031] usbhid: probe of 2-1:1.2 failed with error -110
> > 
> > 
> > "lsusb -d 4e45:5501 -v" output:
> > 
> > Bus 002 Device 006: ID 4e45:5501  
> > Device Descriptor:
> >   bLength                18
> >   bDescriptorType         1
> >   bcdUSB               3.00
> >   bDeviceClass          239 Miscellaneous Device
> >   bDeviceSubClass         2 ?
> >   bDeviceProtocol         1 Interface Association
> >   bMaxPacketSize0         9
> >   idVendor           0x4e45 
> >   idProduct          0x5501 
> >   bcdDevice            1.03
> >   iManufacturer           1 (error)
> >   iProduct                2 (error)
> 
> These (error)s might be a bit of a concern...
> 
> >   iSerial                 0 
> >   bNumConfigurations      1
> >   Configuration Descriptor:
> >     bLength                 9
> >     bDescriptorType         2
> >     wTotalLength          249
> >     bNumInterfaces          3
> >     bConfigurationValue     1
> >     iConfiguration          3 (error)
> >     bmAttributes         0x80
> >       (Bus Powered)
> >     MaxPower              100mA
> >     Interface Association:
> >       bLength                 8
> >       bDescriptorType        11
> >       bFirstInterface         0
> >       bInterfaceCount         2
> >       bFunctionClass         14 Video
> >       bFunctionSubClass       3 Video Interface Collection
> >       bFunctionProtocol       0 
> >       iFunction               0 
> >     Interface Descriptor:
> >       bLength                 9
> >       bDescriptorType         4
> >       bInterfaceNumber        0
> >       bAlternateSetting       0
> >       bNumEndpoints           1
> >       bInterfaceClass        14 Video
> >       bInterfaceSubClass      1 Video Control
> >       bInterfaceProtocol      0 
> >       iInterface              0 
> >       VideoControl Interface Descriptor:
> >         bLength                13
> >         bDescriptorType        36
> >         bDescriptorSubtype      1 (HEADER)
> >         bcdUVC               1.10
> >         wTotalLength           81
> >         dwClockFrequency       48.000000MHz
> >         bInCollection           1
> >         baInterfaceNr( 0)       1
> >       VideoControl Interface Descriptor:
> >         bLength                18
> >         bDescriptorType        36
> >         bDescriptorSubtype      2 (INPUT_TERMINAL)
> >         bTerminalID             1
> >         wTerminalType      0x0201 Camera Sensor
> >         bAssocTerminal          0
> >         iTerminal               0 
> >         wObjectiveFocalLengthMin      0
> >         wObjectiveFocalLengthMax      0
> >         wOcularFocalLength            0
> >         bControlSize                  3
> >         bmControls           0x00000000
> >       VideoControl Interface Descriptor:
> >         bLength                13
> >         bDescriptorType        36
> >         bDescriptorSubtype      5 (PROCESSING_UNIT)
> >         bUnitID                 2
> >         bSourceID               1
> >         wMaxMultiplier      16384
> >         bControlSize            3
> >         bmControls     0x0000105f
> >           Brightness
> >           Contrast
> >           Hue
> >           Saturation
> >           Sharpness
> >           White Balance Temperature
> >           White Balance Temperature, Auto
> >         iProcessing             0 
> >         bmVideoStandards     0x 0
> >       VideoControl Interface Descriptor:
> >         bLength                28
> >         bDescriptorType        36
> >         bDescriptorSubtype      6 (EXTENSION_UNIT)
> >         bUnitID                 3
> >         guidExtensionCode         {ffffffff-ffff-ffff-ffff-ffffffffffff}
> 
> Hrm ... Laurent - is that suspicious? or ok?

An extension unit with no controls and a GUID set to all 1s. Sloppy
firmware, really :-) It shouldn't cause any issue, but it shows the
level of quality to expect from the device.

Ideally these issues should be reported to the device manufacturer, but
that's pretty hard to do in practice.

> >         bNumControl             0
> >         bNrPins                 1
> >         baSourceID( 0)          2
> >         bControlSize            3
> >         bmControls( 0)       0x00
> >         bmControls( 1)       0x00
> >         bmControls( 2)       0x00
> >         iExtension              0 
> >       VideoControl Interface Descriptor:
> >         bLength                 9
> >         bDescriptorType        36
> >         bDescriptorSubtype      3 (OUTPUT_TERMINAL)
> >         bTerminalID             4
> >         wTerminalType      0x0101 USB Streaming
> >         bAssocTerminal          0
> >         bSourceID               3
> >         iTerminal               0 
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x82  EP 2 IN
> >         bmAttributes            3
> >           Transfer Type            Interrupt
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0040  1x 64 bytes
> >         bInterval               1
> >         bMaxBurst               0
> >     Interface Descriptor:
> >       bLength                 9
> >       bDescriptorType         4
> >       bInterfaceNumber        1
> >       bAlternateSetting       0
> >       bNumEndpoints           1
> >       bInterfaceClass        14 Video
> >       bInterfaceSubClass      2 Video Streaming
> >       bInterfaceProtocol      0 
> >       iInterface              0 
> >       VideoStreaming Interface Descriptor:
> >         bLength                            14
> >         bDescriptorType                    36
> >         bDescriptorSubtype                  1 (INPUT_HEADER)
> >         bNumFormats                         1
> >         wTotalLength                       71
> >         bEndPointAddress                  131
> >         bmInfo                              0
> >         bTerminalLink                       4
> >         bStillCaptureMethod                 1
> >         bTriggerSupport                     0
> >         bTriggerUsage                       0
> >         bControlSize                        1
> >         bmaControls( 0)                    27
> >       VideoStreaming Interface Descriptor:
> >         bLength                            27
> >         bDescriptorType                    36
> >         bDescriptorSubtype                  4 (FORMAT_UNCOMPRESSED)
> >         bFormatIndex                        1
> >         bNumFrameDescriptors                1
> >         guidFormat                            {55595659-0000-1000-8000-00aa00389b71}
> >         bBitsPerPixel                      16
> >         bDefaultFrameIndex                  1
> >         bAspectRatioX                       0
> >         bAspectRatioY                       0
> >         bmInterlaceFlags                 0x00
> >           Interlaced stream or variable: No
> >           Fields per frame: 2 fields
> >           Field 1 first: No
> >           Field pattern: Field 1 only
> >           bCopyProtect                      0
> >       VideoStreaming Interface Descriptor:
> >         bLength                            30
> >         bDescriptorType                    36
> >         bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
> >         bFrameIndex                         1
> >         bmCapabilities                   0x03
> >           Still image supported
> >           Fixed frame-rate
> >         wWidth                           1920
> >         wHeight                          1080
> >         dwMinBitRate                995328000
> >         dwMaxBitRate                995328000
> >         dwMaxVideoFrameBufferSize     4147200
> >         dwDefaultFrameInterval         333333
> >         bFrameIntervalType                  1
> >         dwFrameInterval( 0)            333333
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x83  EP 3 IN
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0400  1x 1024 bytes
> >         bInterval               0
> >         bMaxBurst              15
> >     Interface Descriptor:
> >       bLength                 9
> >       bDescriptorType         4
> >       bInterfaceNumber        2
> >       bAlternateSetting       0
> >       bNumEndpoints           1
> >       bInterfaceClass         3 Human Interface Device
> >       bInterfaceSubClass      0 No Subclass
> >       bInterfaceProtocol      0 None
> >       iInterface              0 
> >         HID Device Descriptor:
> >           bLength                 9
> >           bDescriptorType        33
> >           bcdHID               1.11
> >           bCountryCode            0 Not supported
> >           bNumDescriptors         1
> >           bDescriptorType        34 Report
> >           wDescriptorLength      29
> >           Warning: incomplete report descriptor
> >           Report Descriptor: (length is 7)
> >             Item(Main  ): (null), data=none
> >             Item(Main  ): (null), data=none
> >             Item(Main  ): (null), data=none
> >             Item(Main  ): (null), data=none
> >             Item(Main  ): (null), data=none
> >             Item(Main  ): (null), data=none
> >             Item(Main  ): (null), data=none
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x81  EP 1 IN
> >         bmAttributes            3
> >           Transfer Type            Interrupt
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0040  1x 64 bytes
> >         bInterval              10
> >         bMaxBurst               0
> > Device Status:     0x77e8
> >   (Bus Powered)
> >   U2 Enabled
> >   Debug Mode
> > 
> > 
> > I would appreciate any pointers to see if I can get this working.

-- 
Regards,

Laurent Pinchart



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux