2026-01-29 2:37 AM - last edited on 2026-01-29 2:45 AM by Andrew Neil
Hello ST Community,
I am working on STM32N6 with an IMX335 camera sensor, ThreadX + USBX, and trying to stream live camera video over USB Type-C (UVC) to an external screen / PC.
Current status:
- Camera + ISP + DCMIPP pipeline is working correctly
- Live video is already displayed on the STM32N6 board screen
- I want the same live video to be streamed via USB Video
Camera / ISP configuration:
- Sensor: IMX335
- Sensor output: RAW10
- ISP enabled and processing the RAW data
- Frame size currently: 800 × 480
- Pixel size in memory: 2 bytes per pixel
- DCMIPP is writing frames to memory using DMA
My main confusion is:
What is the exact output format from the ISP to memory?
Is it RAW, RGB, or YUV (YUY2 / NV12), and how do we confirm this from the HAL / ISP configuration?
USB UVC configuration
I am using USBX Device Video (UVC) generated from CubeMX.
CubeMX gives two main options for video streaming format:
UNCOMPRESSED
MJPEG
UNCOMPRESSED:
I understand this usually means YUY2 (YUV422) for UVC hosts.
MJPEG:
I tried enabling VENC JPEG in CubeMX to generate MJPEG support.
Main Issue (Blocking Problem)
When I select VENC JPEG (MJPEG) in CubeMX:
-No driver code is generated
-No VENC/JPEG related source files appear
- USB video class remains unchanged
-Tried on multiple CubeMX versions and multiple laptops
-Regenerating code does nothing
So effectively:
Selecting VENC JPEG has no effect on generated code
Questions
What is the correct ISP output format to use for USB UVC streaming on STM32N6?
RAW?
RGB565?
YUV422 (YUY2)?
For MJPEG over UVC:
Is the VENC JPEG supposed to automatically generate code?
Are there additional middleware, packs, or licenses required?
Is MJPEG encoding currently supported on STM32N6 + USBX?
If MJPEG is not supported yet:
Is UNCOMPRESSED YUY2 the recommended approach?
Are there any official ST examples for camera → ISP → USB UVC streaming?
Goal
Stream live camera video from STM32N6 to a PC / external screen via USB Type-C
Prefer MJPEG if supported, otherwise uncompressed YUY2
Understand the correct CubeMX + HAL + USBX configuration
Any clarification from ST engineers or users who have implemented UVC streaming on STM32N6 would be greatly appreciated.
Thank you!