Displaying video to the monitor over PCIe to VGA card


I have a custom carrier board which is developed for Jetson TX-1. My requirement is two different VGA output on two monitors.

I have a free PCIe interfaces on our custom carrier board. We have connected a PCIe to VGA converter to connect other monitor. I am using VL-MPEe-V5 from Versalogic which is based on Silicon Motion SM750 chipset.

Jetpack version for my Jetson TX-1: # R32 (release), REVISION: 3.1, GCID: 18186506, BOARD: t210ref, EABI: aarch64, DATE: Tue Dec 10 06:58:34 UTC 2019

I am using sm750fb driver from kernel source /kernel-4.9/drivers/staging/sm750fb/ . I am using this driver as a module. The driver is create a node in the /dev/fb1 .

We have a use case where we are not using the in-built Tegra display controllers. Instead, we are using an external VGA display card over PCIe bus. This PCI to VGA card’s driver is creating one framebuffer node i.e fb1.

Our video input source is connected to MIPI CSI bus as /dev/video0

We would like to display the above video input to the monitor connected to the PCIe to VGA card using gstreamer. The video source give’s us raw videos; we want to display this video directly to the monitor.

Please help us to display the input video to the monitor.

Look forward for your kind support.

Asif Ikbal

This kind of display is not supported in default release. We don’t have much experience about it. Would see if some other users have the experience and can suggest next.

By default we support rendering frames to HDMI devices through X11 and DRM.

Dear DaneLLL,

Thank you for your response.

Our use case based on gstreamer is as follows:

/dev/video0(MIPI CSI) => fbdevsink => fb1 => versalogic driver => VGA display monitor

The pipeline would be: $ gst-launch-1.0 v4l2src device=/dev/video0 ! fbdevsink device=/dev/fb1

Before trying our final use case as above, I have made a test case which creates below pipeline sequence:

videotestsrc => fbdevsink => fb1 => versalogic driver => VGA display monitor

The pipeline is: $ gst-launch-1.0 videotestsrc ! fbdevsink device=/dev/fb1

We have tested the below pipeline with our monitor connected over HDMI and it display the input video from /dev/vedio0 in the monitor.

$ gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! fbdevsink device=/dev/fb0

Before running the pipeline I have stop the gdm by using $ sudo systemctl stop gdm and accessing our system using ssh.

Now we are working on the PCIe to VGA card for correctly creating the /dev/fb1 node. Once the fb1 is created we will use the same pipeline with fb1.

Please confirm me the above pipeline will work for the /dev/fb1 device on our system?

Look forward for your kind support.

Asif Ikbal

We don’t have much experience about using fbdevsink. This would need other users to share experience.

Beside using gstreamer, are you able to allocate a CPU buffer and send it over PCIe to the VGA card? Not sure if the device supports some APIs which can do this. Like the psuedo code:

void *ptr;
ptr = malloc(320*240*2); // size of 320x240 YUV422

If this is supported, one possible solution is to integrate the APIs into a jetson_multimedia_api sample.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.