PCIe to VGA Converter support in Jetson Tx-1


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.

The kernel module for sm750fb show in below:

desktop:~$ lsmod
Module                  Size  Used by
fuse                  118987  2
xt_CHECKSUM             1976  1
iptable_mangle          2737  1
ipt_MASQUERADE          2634  3
nf_nat_masquerade_ipv4     3993  1 ipt_MASQUERADE
iptable_nat             3423  1
nf_nat_ipv4             8240  1 iptable_nat
nf_nat                 25596  2 nf_nat_masquerade_ipv4,nf_nat_ipv4
nf_conntrack_ipv4      14286  2
nf_defrag_ipv4          2129  1 nf_conntrack_ipv4
xt_conntrack            3979  1
nf_conntrack          131756  5 nf_conntrack_ipv4,nf_nat_masquerade_ipv4,xt_conntrack,nf_nat_ipv4,nf_nat
ipt_REJECT              2160  2
nf_reject_ipv4          4225  1 ipt_REJECT
xt_tcpudp               4740  6
ip6table_filter         3015  0
ip6_tables             21554  1 ip6table_filter
iptable_filter          3008  1
uvcvideo               95551  0
zram                   30081  4
overlay                54478  0
bcmdhd                984400  0
cfg80211              721592  1 bcmdhd
mcp251x                14355  0
spidev                 14699  0
can_dev                17212  1 mcp251x
sm750fb                41173  0
nvgpu                1726741  20
bluedroid_pm           16187  0
ip_tables              21475  3 iptable_mangle,iptable_filter,iptable_nat
x_tables               38080  10 ipt_REJECT,iptable_mangle,ip_tables,iptable_filter,xt_tcpudp,ipt_MASQUERADE,xt_CHECKSUM,ip6table_filter,xt_conntrack,ip6_tables

The PCIe to VGA converter is connected over mini PCIe connector. The device is visible in Jetson TX-1 PCIe.

02:00.0 VGA compatible controller: Silicon Motion, Inc. SM750 (rev a1) (prog-if 00 [VGA controller])
	Subsystem: Silicon Motion, Inc. SM750
	Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin A routed to IRQ 82
	Region 0: Memory at 14000000 (32-bit, prefetchable) [size=64M]
	Region 1: Memory at 18000000 (32-bit, non-prefetchable) [size=2M]
	[virtual] Expansion ROM at 18200000 [disabled] [size=64K]
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2- AuxCurrent=375mA PME(D0+,D1+,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
		Address: 0000000000000000  Data: 0000
	Capabilities: [70] Express (v2) Legacy Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0, Latency L0s <1us, L1 <8us
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <512ns, L1 <16us
			ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp-
		LnkCtl:	ASPM L0s Enabled; RCB 64 bytes Disabled- CommClk+
			ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR-, OBFF Not Supported
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
		LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [b0] MSI-X: Enable- Count=1 Masked-
		Vector table: BAR=5 offset=00000000
		PBA: BAR=5 offset=00000000
	Capabilities: [100 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP+ Rollover- Timeout- NonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
		AERCap:	First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
	Capabilities: [140 v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
			Status:	NegoPending- InProgress-
	Kernel driver in use: sm750fb
	Kernel modules: sm750fb

Dmesg log from the device during module load:

[    2.490628] sm750fb: module is from the staging directory, the quality is unknown, you have been warned.
[    2.504232] no options.
[    2.506822] sm750fb 0000:02:00.0: enabling device (0000 -> 0002)
[    2.506833] no specific g_option.
[    2.510331] mmio phyAddr = 18000000
[    2.510383] mmio virtual addr = ffffff8014200000
[    2.510390] video memory phyAddr = 14000000, size = 16777216 bytes
[    2.510393] video memory vaddr = ffffff8017000000
[    2.555245] CAN device driver interface
[    2.586396] mcp251x spi3.0 can0: MCP2515 successfully initialized.
[    2.649311] use simul primary mode
[    2.649316] crtc->cursor.mmio = ffffff80142800f0
[    2.649323] ret = 5,fb_find_mode failed,with driver prepared modes
[    2.655626] success! use specified mode:800x600-16@60 in kernel prepared default modedb
[    2.655630] Member of info->var is :
[    2.655633] fix->smem_start = 14000000
[    2.655635] fix->smem_len = 1000000
[    2.655637] fix->mmio_start = 18000000
[    2.655639] fix->mmio_len = 200000

Now problem is, monitor connected over the PCIe to VGA adapter is not detected in Jetson TX-1.

gst-launch-1.0 -v v4l2src device=/dev/video0 ! video/x-raw,format=YUY2 ! nvvidconv ! 'video/x-raw(memory:NVMM), width=1920, height=1080, format=I420' ! nvoverlaysink display-id=0

I am using above gstreamer pipeline to render usb camera video stream on the monitor. Our Jetson TX-1 is also connected with a monitor through HDMI. The pipeline worked fine with in the HDMI monitor but when I changed the display-id=1 in the pipeline the other monitor is not rendering the usb camera video.

How can I detect the other monitor on Jetson TX-1?

Please help me to solve this problem.

Asif Ikbal


It is not possible to use application that is based on NV driver to render things to your fb1.

This VGA-PCIe card is totally not related to nvidia driver. Makes it easier to understand, “nvoverlaysink” only works with NVIDIA display driver, this application is only for tegra dc (display controller) and your fb1 setup process does not use any of our driver. Overlaysink doesn’t even know the existence of this monitor.

I guess you can only searching some upstream application/framework that could support this.

Dear WayneWWW,

Thank you for your response.

Your reply helped me to understand the use case of nvoverlaysink and tegra display controllers.

I will check for plugins to sink to fb1.

Asif Ikbal

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