Custom Video out solution in jetson tk1


Currently i am developing an computer vision based application using jetson tk1, which reads video from usb camera and does some image processing task and finally outputs the computational frames as video output. But the output video is displayed in jetson tk1 desktop.since i was doing real time application,i need to send my computed frame to an external display???

I need a solution to display my frame on live in any short of interfaces like HDMI,LVDS,Ethernet…
I couldn’t get any proper solution to achieve this.i was trying this over a period of months still couldn’t achieve kindly help me to make this out.

i found that jetson tk1 has an lvds output but even i couldn’t get proper document how to make it for my above solution with respect to H/W and S/w, As i am very much new to Ubuntu,driver programming…so it would be great if you provide me complete details regarding this??

There are some virtual X11 servers which probably do what you want. Look at VirtualGL and TurboVNC if you want to display on a remote machine. Setting up LVDS will be extremely difficult, you’d need something like an adaptor for LVDS to HDMI or eDP.

Thanks for your reply,

I already tried configuring this, but this is not our ultimate solution.

We need our system to send only video frame buffers to Display so that it doesn’t display whole desktop like remote/secondary desktop.

we have a plan for camera solution so that it should display only a video on displays ??

Some background in how Linux spawns the GUI and consoles will probably help here. So here’s a detour on the way to the question…

As Linux boots it eventually runs a program which understands the terminal selection key bindings…those being the alt-F1 through alt-F7 keys by default. Detecting one of those key bindings (as well as having an assigned default equivalent to one of those bindings when first starting) triggers spawn of a terminal program, or TTY. It just happens that usually F1 through F6 run independent console mode login TTY software, while another runs GUI login software…the TTY is simply told that when that binding is found and if no program is currently running that it should run some particular program. Bash shell is one, X11+GUI login managers are another…these are common. You could replace something like a bash login with a tcsh shell login instead…this is just a preference selected from login details if a console mode login is requested. You could even replace a tty with something like a graphical wall clock and the wall clock would run instead without any shell.

X11 is purely a graphical support program and does not have any concept of logins, login managers, or desktops. X11 takes a single program as an argument as to what X11 will run. If no such program is selected, you get a gray desktop and an ugly default mouse pointer. It’s fully functional, but there are not really any features…no menus, no ability to run different things at the same time. Your getty program for something like alt-F7 just happens to be X11 called with arguments from your xorg.conf configuration to decide what login manager to use. Your login manager then respawns the argument to X11 to instead name a desktop program running sudo with a particular user’s credentials (the login manager overwrites itself with a desktop which supports windowing). A login manager could in fact be skipped and X11 could be called directly with the desktop environment as the argument…in which case the person using the desktop is just whoever the X11 process was run by…perhaps it will be an autologin as root in that case.

Should you alter the getty settings to run X11 with your program as the argument then the display will be purely your program without any desktop…it’s purely what you’ve implemented. You do need to take care to run this custom program as the correct user or you may unintentionally give root access when it wasn’t intended.

So there is nothing special about the Jetson in this case. All of the general Linux documentation for Ubuntu on how to configure X11 or to spawn alternate programs rather than a login manager or desktop applies to Jetsons. You use getty to modify the base program to start when hitting alt-F1 through alt-F7, and the base program determines what pops up. You could even remove spawning of anything on alt-F2 through alt-F7, and replace alt-F1 with X11 and your custom argument…in which case there would be no direct keyboard access except through your program.

FYI, there may even be alternates to X11, e.g., the old SVGAlib. New things may be brewing via Vulkan and Wayland (see and wikipedia). Keep in mind that if you want to use hardware accelerated GPU, then you need the API the driver binds to…currently the nVidia driver is tied to a particular X11 ABI, so you probably want that particular X11 server, but anything else is purely up to you. You can skip or modify window managers and login managers with no side effect for hardware accelerated access to any X11 server using the nVidia driver.

Thanks for you valuable reply,yet to implement… but i hope this will resolve my issues.