CX3 UVC camera no function after connect with PC HighSpeed USB Port

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
AnWa_3863696
Level 2
Level 2
First like given

Hi,

I have checked the following discussion below for similar issue. But this does not solve my problem.

https://community.cypress.com/thread/34622?start=0&tstart=0.

In PC device manager, the device error code is 10.

pastedImage_0.png

I try to use EZ USB Suite and give default configuration, after download the build image into CX3 RDK,

pastedImage_1.png

PC device manager still show me this error.

What should I do in order to let PC can recognize this UVC camera on CX3 RDK?

Attached file is the project I used to test this issue.

Thanks

Angus

0 Likes
1 Solution

Hi Angus,

Sorry for the inconvenience. Looks like the error codes comes when the host could not get correct configuration descriptor from CX3.

For example, if CX3 states the length of configuraiton descfriptor as 100(bytes) but only sends 90 bytes back, the command get_descriptor will fail.

You could refer to the work-around in previous community thread to fix it.

Update due to the mistake before.

#ifdef CX3_UVC_1_0_SUPPORT

#ifdef STILL_CAPTURE_ENABLE

0x50, 0x01,

#else

0x39, 0x01,                         /* Length of this descriptor and all sub descriptors */

#endif

#else

#ifdef STILL_CAPTURE_ENABLE

0x51, 0x01,

#else

0x3A, 0x01,                         /* Length of this descriptor and all sub descriptors */

#endif

#endif

The total length filed should be equal to or bigger than(in some OS it could work) the real length of configuration descriptor.

For example, if CX3 states the configuration descriptor is 90 bytes, then the host will require 90 bytes in next control tranfer. However, once the descriptor is 100 bytes, then host could not undetstand the information of this device with receiving only 90 bytes. Enuermation will fail.

View solution in original post

0 Likes
3 Replies
AnWa_3863696
Level 2
Level 2
First like given

Find same issue report here

CX3 configuration utility source code

It's a shame, a tool bug need so long time to fix it.

Angus

0 Likes

Hi Angus,

Sorry for the inconvenience. Looks like the error codes comes when the host could not get correct configuration descriptor from CX3.

For example, if CX3 states the length of configuraiton descfriptor as 100(bytes) but only sends 90 bytes back, the command get_descriptor will fail.

You could refer to the work-around in previous community thread to fix it.

Update due to the mistake before.

#ifdef CX3_UVC_1_0_SUPPORT

#ifdef STILL_CAPTURE_ENABLE

0x50, 0x01,

#else

0x39, 0x01,                         /* Length of this descriptor and all sub descriptors */

#endif

#else

#ifdef STILL_CAPTURE_ENABLE

0x51, 0x01,

#else

0x3A, 0x01,                         /* Length of this descriptor and all sub descriptors */

#endif

#endif

The total length filed should be equal to or bigger than(in some OS it could work) the real length of configuration descriptor.

For example, if CX3 states the configuration descriptor is 90 bytes, then the host will require 90 bytes in next control tranfer. However, once the descriptor is 100 bytes, then host could not undetstand the information of this device with receiving only 90 bytes. Enuermation will fail.

0 Likes
lock attach
Attachments are accessible only for community members.

Hi Angus,

Have you solved this problem based on previous reply? I also have checked your project to find that no VS format and VS frame descriptors.

For example the information below.

    /* Class specific VS format descriptor */

    0x1B,                               /* Descriptor size */

    ES_UVC_CS_INTRFC_DESCR,             /* Class-specific VS interface Type */

    0x04,                               /* Subtype : VS_FORMAT_UNCOMPRESSED  */

    0x01,                               /* Format desciptor index */

    0x01,                               /* Number of Frame Descriptors that follow this descriptor: 2 */

    /* GUID, globally unique identifier used to identify streaming-encoding format: YUY2  */

    0x59, 0x55, 0x59, 0x32,             /*MEDIASUBTYPE_YUY2 GUID: 32595559-0000-0010-8000-00AA00389B71 */

    0x00, 0x00, 0x10, 0x00,

    0x80, 0x00, 0x00, 0xAA,

    0x00, 0x38, 0x9B, 0x71,

    0x10,                               /* Number of bits per pixel: 16*/

    0x01,                               /* Optimum Frame Index for this stream: 1 (640x480) */

    0x00,                               /* X dimension of the picture aspect ratio; Non-interlaced */

    0x00,                               /* Y dimension of the pictuer aspect ratio: Non-interlaced */

    0x00,                               /* Interlace Flags: Progressive scanning, no interlace */

    0x00,                               /* duplication of the video stream restriction: 0 - no restriction */

    /* Class specific Uncompressed VS frame descriptor 1 - 640x480@60fps*/

    0x1E,                               /* Descriptor size */

    ES_UVC_CS_INTRFC_DESCR,             /* Descriptor type*/

    0x05,                               /* Subtype: Uncompressed frame interface*/

    0x01,                               /* Frame Descriptor Index: 1 */

    0x00,                               /* No Still image capture method supported */

    0x80, 0x02,                         /* Width in pixel:  640 */

    0xE0, 0x01,                         /* Height in pixel: 480 */

    0x00, 0x00, 0x94, 0x11,             /* Min bit rate (bits/s): 640 x 480 x 2 x 60 x 8 = 294912000 */

    0x00, 0x00, 0x94, 0x11,             /* Max bit rate (bits/s): Fixed rate so same as Min  */

    0x00, 0x60, 0x09, 0x00,             /* Maximum video or still frame size in bytes(Deprecated): 640 x 480 x 2*/

    0x15, 0x16, 0x05, 0x00,             /* Default frame interval (in 100ns units): (1/60)x10^7 */

    0x01,                               /* Frame interval type : No of discrete intervals */

    0x15, 0x16, 0x05, 0x00,             /* Frame interval 3: Same as Default frame interval */

In general, they should exist between input header descriptor and endpoint descriptor.

I also try to build a demo project with random configuration parameters to find the USB2.0 configuration is correct. See attachment for more information.

Could you please check if you are using latest version of SDK. I am using not the latest version but 1.3.3 on my side.

0 Likes