UVC YUV442 stream from ov5460 not displayed on Dragonboard 410C

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

cross mob
NaSw_3993946
Level 1
Level 1

Hello,

Following the firmware example for the OV5640 provided with the Cypress EZ USB Suite I have been able to produce working firmware for my camera board. When connected to a smart phone (have tried Google Pixel, Galaxy A5 and Galaxy S8) I get a steady stream of 640 X 480 @ 30fps.

When I connect the camera module to a Dragonboard 410C which is running Android, I use the same application but I get no stream.

By changing the DMA buffer to 8FC0 (+12 header, +4 Footer) and DMA Count to 3 I have been successful in getting some complete images but it is very inconsistent.

I also found that it helped stability of the stream to remove the while loop from the 'Produce event' in the DMA Callback function, however, the stream is still far from serviceable.

I am happy to provide extra information about setup if required.

Any idea what is going on?

*EDIT* - I have successfully streamed to the same Dragonboard using the same firmware when Ubuntu Core 18 (ish!) was installed on the device.

0 Likes
4 Replies
KandlaguntaR_36
Moderator
Moderator
Moderator
25 solutions authored 10 solutions authored 5 solutions authored

Hello,

Can you please load the UVCinmem_bulk example firmware to CX3 and check the video in Dragonboard 410C and other android mobiles?

This example does not need a sensor. It shows the hard coded frames in the firmware.

Please enable the debug prints; capture the logs and share here.

Firmware path: C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\uvc_examples\cyfxuvcinmem_bulk

Thanks for getting back. I had a bit of trouble getting the UART comms to occur but I got there in the end.

Below are the debug logs, although, I feel that the 'UVC video streamer error. Code 69.' error may be getting in the way of what you are actually looking for. For clarity I do not see an image on any of the devices when running this example.

Samsung A5

UVC video streamer error. Code 69.

UVC RQT: 1 81 0 1 100

UVC RQT: 1 82 0 1 100

UVC RQT: 1 81 2 0 200

UVC RQT: 1 83 0 1 100

UVC RQT: 1 82 2 0 200

UVC RQT: 1 81 0 1 100

UVC RQT: 1 83 2 0 200

UVC RQT: 1 82 0 1 100

UVC RQT: 1 87 2 0 200

UVC RQT: 1 83 0 1 100

UVC RQT: 1 81 2 0 300

UVC RQT: 1 1 0 1 100

UVC RQT: 1 82 2 0 300

UVC RQT: 1 81 0 1 100

UVC RQT: 1 83 2 0 300

UVC RQT: 1 1 0 1 200

UVC RQT: 1 87 2 0 300

UVC RQT: 1 81 2 0 700

UVC RQT: 1 82 2 0 700

UVC RQT: 1 83 2 0 700

UVC RQT: 1 87 2 0 700

UVC RQT: 1 81 2 0 800

UVC RQT: 1 82 2 0 800

UVC RQT: 1 83 2 0 800

UVC RQT: 1 87 2 0 800

UVC RQT: 1 81 2 0 900

UVC RQT: 1 82 2 0 900

UVC RQT: 1 83 2 0 900

UVC RQT: 1 87 2 0 900

UVC RQT: 1 81 2 0 A00

UVC RQT: 1 82 2 0 A00

UVC RQT: 1 83 2 0 A00

UVC RQT: 1 87 2 0 A00

UVC RQT: 1 81 2 0 B00

UVC RQT: 1 87 2 0 B00

Samsung S8

UVC video streamer error. Code 69.

UVC RQT: 1 81 0 1 100

UVC RQT: 1 81 2 0 200

UVC RQT: 1 82 0 1 100

UVC RQT: 1 82 2 0 200

UVC RQT: 1 83 0 1 100

UVC RQT: 1 83 2 0 200

UVC RQT: 1 81 0 1 100

UVC RQT: 1 87 2 0 200

UVC RQT: 1 82 0 1 100

UVC RQT: 1 81 2 0 300

UVC RQT: 1 83 0 1 100

UVC RQT: 1 82 2 0 300

UVC RQT: 1 1 0 1 100

UVC RQT: 1 81 0 1 100

UVC RQT: 1 83 2 0 300

UVC RQT: 1 1 0 1 200

UVC RQT: 1 87 2 0 300

UVC RQT: 1 81 2 0 700

UVC RQT: 1 82 2 0 700

UVC RQT: 1 83 2 0 700

UVC RQT: 1 87 2 0 700

UVC RQT: 1 81 2 0 800

UVC RQT: 1 82 2 0 800

UVC RQT: 1 83 2 0 800

UVC RQT: 1 87 2 0 800

UVC RQT: 1 81 2 0 900

UVC RQT: 1 82 2 0 900

UVC RQT: 1 83 2 0 900

UVC RQT: 1 87 2 0 900

UVC RQT: 1 81 2 0 A00

UVC RQT: 1 82 2 0 A00

UVC RQT: 1 83 2 0 A00

UVC RQT: 1 87 2 0 A00

UVC RQT: 1 81 2 0 B00

UVC RQT: 1 87 2 0 B00

DragonBoard 410c

UVC video streamer error. Code 69.

UVC RQT: 1 81 0 1 100

UVC RQT: 1 82 0 1 100

UVC RQT: 1 83 0 1 100

UVC RQT: 1 81 0 1 100

UVC RQT: 1 82 0 1 100

UVC RQT: 1 83 0 1 100

UVC RQT: 1 1 0 1 100

UVC RQT: 1 81 0 1 100

UVC RQT: 1 1 0 1 200

UVC RQT: 1 81 2 0 200

UVC RQT: 1 82 2 0 200

UVC RQT: 1 83 2 0 200

UVC RQT: 1 87 2 0 200

UVC RQT: 1 81 2 0 300

UVC RQT: 1 82 2 0 300

UVC RQT: 1 83 2 0 300

UVC RQT: 1 87 2 0 300

UVC RQT: 1 81 2 0 700

UVC RQT: 1 82 2 0 700

UVC RQT: 1 83 2 0 700

UVC RQT: 1 87 2 0 700

UVC RQT: 1 81 2 0 800

UVC RQT: 1 82 2 0 800

UVC RQT: 1 83 2 0 800

UVC RQT: 1 87 2 0 800

UVC RQT: 1 81 2 0 900

UVC RQT: 1 82 2 0 900

UVC RQT: 1 83 2 0 900

UVC RQT: 1 87 2 0 900

UVC RQT: 1 81 2 0 A00

UVC RQT: 1 82 2 0 A00

UVC RQT: 1 83 2 0 A00

UVC RQT: 1 87 2 0 A00

UVC RQT: 1 81 2 0 B00

UVC RQT: 1 87 2 0 B00

0 Likes

Decided to do a bit more debugging.

Found that the following USB events are generated;

Samsung Galaxy S8

USB Event = Type: B Data: 0

USB Event = Type: 2 Data: 0 Suspend

USB Event = Type: 0 Data: 0 Connect

USB Event = Type: 4 Data: 0 Reset

USB Event = Type: 6 Data: 1 Speed (change)

USB Event = Type: 4 Data: 0 Reset

USB Event = Type: 6 Data: 1 Speed (change)

USB Event = Type: 3 Data: 0 Resume

USB Event = Type: 3 Data: 0 Resume

USB Event = Type: 5 Data: 1 Set configuration

USB Event = Type: 3 Data: 0 Resume

USB Event = Type: 3 Data: 0

USB Event = Type: 3 Data: 0

USB Event = Type: 3 Data: 0

USB Event = Type: 3 Data: 0

USB Event = Type: 3 Data: 0

USB Event = Type: 3 Data: 0

USB Event = Type: 3 Data: 0

USB Event = Type: 3 Data: 0

USB Event = Type: 3 Data: 0

USB Event = Type: 3 Data: 0

USB Event = Type: 3 Data: 0

USB Event = Type: 3 Data: 0

USB Event = Type: 3 Data: 0

USB Event = Type: 7 Data: 100 Set Interface

DragonBoard 410C

USB Event = Type: B Data: 0

USB Event = Type: 2 Data: 0 Suspend

USB Event = Type: 0 Data: 0 Connect

USB Event = Type: 4 Data: 0 Reset

USB Event = Type: 6 Data: 1 Speed (change)

USB Event = Type: 4 Data: 0 Reset

USB Event = Type: 6 Data: 1 Speed (change)

USB Event = Type: 5 Data: 1 Set configuration

USB Event = Type: 7 Data: 100 Set Interface

The resume and suspend events APPEAR to be unhandled by the application, however, is it possible that these are handled by the library and the lack of 'resume' events on the dragonboard is having an affect?

Thanks

0 Likes

>> The resume and suspend events APPEAR to be unhandled by the application, however, is it possible that these are handled by the library and the lack of 'resume' events on the dragonboard is having an affect?

Yes, it seems that lack of resume events on dragonboard is causing the issue.

0 Likes