- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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 |
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
>> 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.