[HowTo]Install VirtualGL and TurboVNC to Jetson TK1
I installed VirtualGL and TurboVNC in my Jetson TK1. I can execute CUDA samples in my Jetson TK1 without HDMI cable and watch rendered image from windows8 using TurboVNC Viewer or Android tablet using bVNC. VirtualGL take rendering image from OpenGL application and TurboVNC send compressed image of whole desktop to client. TurboVNC also recive user inputs from VNC clients and send them to applications in server. [img]http://demotomohiro.github.io/hardware/jetson_tk1/pic/TurboVNCFromAndroid.JPG[/img] [img]http://demotomohiro.github.io/hardware/jetson_tk1/pic/TurboVNCFromWin8.png[/img] TurboVNC: [url]http://www.turbovnc.org/[/url] The VirtualGL Project: [url]http://www.virtualgl.org/[/url] VirtualGL and TurboVNC Tips: [url]https://devtalk.nvidia.com/default/topic/828974/jetson-tk1/-howto-install-virtualgl-and-turbovnc-to-jetson-tk1/post/4685962/#4685962[/url] VirtualGL and TurboVNC for 64-bit Linux For Tegra R24.1/R24.2: [url]https://devtalk.nvidia.com/default/topic/828974/jetson-tk1/-howto-install-virtualgl-and-turbovnc-to-jetson-tk1/post/4939863/#4939863[/url] Compiled binary of VirtualGL and TurboVNC for ARM CPU are not provided, so I build them from source code. [b]How to install[/b] [code]wget http://demotomohiro.github.io/hardware/jetson_tk1/pkg/libjpeg-turbo_1.4.0_armhf.deb wget http://demotomohiro.github.io/hardware/jetson_tk1/pkg/virtualgl_2.4_armhf.deb wget http://demotomohiro.github.io/hardware/jetson_tk1/pkg/turbovnc_1.2.3_armhf.deb sudo dpkg -i libjpeg-turbo_1.4.0_armhf.deb sudo dpkg -i virtualgl_2.4_armhf.deb sudo dpkg -i turbovnc_1.2.3_armhf.deb sudo vi /etc/X11/xorg.conf[/code] Add the following line to the "Screen" section in xorg.conf to run Xorg without the external display. [code]Section "Screen" Identifier "Screen0" … Option "AllowEmptyInitialConfiguration" Option "UseEdid" "False" ... EndSection[/code] [code]sudo vi /etc/ld.so.conf.d/libjpeg-turbo.conf[/code] Add the following line [code]/opt/libjpeg-turbo/lib32[/code] [code]sudo ldconfig #Configure VirtualGL #http://svn.code.sf.net/p/virtualgl/code/tags/2.4/doc/index.html#hd006 sudo /opt/VirtualGL/bin/vglserver_config sudo usermod -a -G vglusers ubuntu sudo usermod -a -G vglusers root[/code] [code]#Star TurboVNC /opt/TurboVNC/bin/vncserver #Stop TurboVNC /opt/TurboVNC/bin/vncserver -kill :1[/code] [code]#I installed xfce4 vi .vnc/xstartup.turbovnc[/code] Set following text [code]#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS startxfce4 &[/code] Let's run CUDA sample from vnc client [code]#login from vnc client cd NVIDIA_CUDA-6.5_Samples/bin/armv7l/linux/release/gnueabihf/ /opt/VirtualGL/bin/vglrun ./oceanFFT[/code]
I installed VirtualGL and TurboVNC in my Jetson TK1.
I can execute CUDA samples in my Jetson TK1 without HDMI cable and watch rendered image from windows8 using TurboVNC Viewer or Android tablet using bVNC.
VirtualGL take rendering image from OpenGL application and TurboVNC send compressed image of whole desktop to client.
TurboVNC also recive user inputs from VNC clients and send them to applications in server.

Image

Image

TurboVNC:
http://www.turbovnc.org/
The VirtualGL Project:
http://www.virtualgl.org/

VirtualGL and TurboVNC Tips:
https://devtalk.nvidia.com/default/topic/828974/jetson-tk1/-howto-install-virtualgl-and-turbovnc-to-jetson-tk1/post/4685962/#4685962
VirtualGL and TurboVNC for 64-bit Linux For Tegra R24.1/R24.2:
https://devtalk.nvidia.com/default/topic/828974/jetson-tk1/-howto-install-virtualgl-and-turbovnc-to-jetson-tk1/post/4939863/#4939863

Compiled binary of VirtualGL and TurboVNC for ARM CPU are not provided, so I build them from source code.
How to install
wget http://demotomohiro.github.io/hardware/jetson_tk1/pkg/libjpeg-turbo_1.4.0_armhf.deb
wget http://demotomohiro.github.io/hardware/jetson_tk1/pkg/virtualgl_2.4_armhf.deb
wget http://demotomohiro.github.io/hardware/jetson_tk1/pkg/turbovnc_1.2.3_armhf.deb
sudo dpkg -i libjpeg-turbo_1.4.0_armhf.deb
sudo dpkg -i virtualgl_2.4_armhf.deb
sudo dpkg -i turbovnc_1.2.3_armhf.deb
sudo vi /etc/X11/xorg.conf

Add the following line to the "Screen" section in xorg.conf to run Xorg without the external display.
Section "Screen"
Identifier "Screen0"

Option "AllowEmptyInitialConfiguration"
Option "UseEdid" "False"
...
EndSection

sudo vi /etc/ld.so.conf.d/libjpeg-turbo.conf

Add the following line
/opt/libjpeg-turbo/lib32


sudo ldconfig
#Configure VirtualGL
#http://svn.code.sf.net/p/virtualgl/code/tags/2.4/doc/index.html#hd006
sudo /opt/VirtualGL/bin/vglserver_config
sudo usermod -a -G vglusers ubuntu
sudo usermod -a -G vglusers root

#Star TurboVNC
/opt/TurboVNC/bin/vncserver
#Stop TurboVNC
/opt/TurboVNC/bin/vncserver -kill :1

#I installed xfce4
vi .vnc/xstartup.turbovnc

Set following text
#!/bin/sh

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &

Let's run CUDA sample from vnc client
#login from vnc client
cd NVIDIA_CUDA-6.5_Samples/bin/armv7l/linux/release/gnueabihf/
/opt/VirtualGL/bin/vglrun ./oceanFFT

#1
Posted 04/29/2015 10:35 AM   
How to build libjpeg-turbo, VirtualGL and TurboVNC from source code: [code]#install tools to build libjpeg-turbo, VirtualGL and TurboVNC. sudo apt-get install cmake-curses-gui sudo apt-get install autoconf sudo apt-get install libtool sudo apt-get install g++ sudo apt-get install subversion #install required libraries. sudo apt-get install libjpeg-turbo8 sudo apt-get install libjpeg-turbo8-dev sudo apt-get install libgl1-mesa-dev sudo apt-get install libglu1-mesa-dev sudo apt-get install libxv-dev sudo apt-get install libpam0g-dev sudo apt-get install libxt-dev sudo apt-get install libxcursor-dev sudo apt-get install libxaw7-dev #download source code of libjpeg-turbo svn co svn://svn.code.sf.net/p/libjpeg-turbo/code/tags/1.4.0 libjpeg-turbo mkdir libjpeg-turbo-build cd libjpeg-turbo autoreconf -fiv cd ../libjpeg-turbo-build sh ../libjpeg-turbo/configure DEBARCH=armhf make make deb sudo dpkg -i libjpeg-turbo_1.4.0_armhf.deb #download source code of VirtualGL svn co svn://svn.code.sf.net/p/virtualgl/code/tags/2.4 vgl mkdir vgl-build cd vgl-build cmake -G "Unix Makefiles" -DTJPEG_LIBRARY="-L/opt/libjpeg-turbo/lib32/ -lturbojpeg" ../vgl #List and configure CMake options ccmake ../vgl #build VirtualGL make vi pkgscripts/makedpkg #Change "DEBARCH=armv7l" to "DEBARCH=armhf" vi pkgscripts/deb-control #Change "Architecture: armv7l" to "Architecture: armhf" make deb sudo dpkg -i virtualgl_2.4_armhf.deb cd .. #download source code of TurboVNC svn co svn://svn.code.sf.net/p/turbovnc/code/tags/1.2.3 vnc mkdir vnc-build cd vnc-build cmake -G "Unix Makefiles" -DTJPEG_LIBRARY="-L/opt/libjpeg-turbo/lib32/ -lturbojpeg" ../vnc #List and configure CMake options ccmake ../vnc make vi pkgscripts/makedpkg #Change "DEBARCH=armv7l" to "DEBARCH=armhf" vi pkgscripts/deb-control #Change "Architecture: armv7l" to "Architecture: armhf" make deb sudo dpkg -i turbovnc_1.2.3_armhf.deb sudo vi /etc/X11/xorg.conf [/code] Add the following line to the "Screen" section in xorg.conf to run Xorg without the external display. [code]Section "Screen" Identifier "Screen0" … Option "AllowEmptyInitialConfiguration" Option "UseEdid" "False" ... EndSection[/code] [code]sudo vi /etc/ld.so.conf.d/libjpeg-turbo.conf[/code] Add the following line [code]/opt/libjpeg-turbo/lib32[/code] [code]sudo ldconfig #Configure VirtualGL #http://svn.code.sf.net/p/virtualgl/code/tags/2.4/doc/index.html#hd006 sudo /opt/VirtualGL/bin/vglserver_config sudo usermod -a -G vglusers ubuntu sudo usermod -a -G vglusers root[/code] [code]#Star TurboVNC /opt/TurboVNC/bin/vncserver #Stop TurboVNC /opt/TurboVNC/bin/vncserver -kill :1[/code] [code]#I installed xfce4 vi .vnc/xstartup.turbovnc[/code] Set following text [code]#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS startxfce4 &[/code] Let's run CUDA sample from vnc client [code]#login from vnc client cd NVIDIA_CUDA-6.5_Samples/bin/armv7l/linux/release/gnueabihf/ /opt/VirtualGL/bin/vglrun ./oceanFFT[/code]
How to build libjpeg-turbo, VirtualGL and TurboVNC from source code:

#install tools to build libjpeg-turbo, VirtualGL and TurboVNC.
sudo apt-get install cmake-curses-gui
sudo apt-get install autoconf
sudo apt-get install libtool
sudo apt-get install g++
sudo apt-get install subversion
#install required libraries.
sudo apt-get install libjpeg-turbo8
sudo apt-get install libjpeg-turbo8-dev
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libxv-dev
sudo apt-get install libpam0g-dev
sudo apt-get install libxt-dev
sudo apt-get install libxcursor-dev
sudo apt-get install libxaw7-dev

#download source code of libjpeg-turbo
svn co svn://svn.code.sf.net/p/libjpeg-turbo/code/tags/1.4.0 libjpeg-turbo
mkdir libjpeg-turbo-build
cd libjpeg-turbo
autoreconf -fiv
cd ../libjpeg-turbo-build
sh ../libjpeg-turbo/configure DEBARCH=armhf
make
make deb
sudo dpkg -i libjpeg-turbo_1.4.0_armhf.deb

#download source code of VirtualGL
svn co svn://svn.code.sf.net/p/virtualgl/code/tags/2.4 vgl
mkdir vgl-build
cd vgl-build
cmake -G "Unix Makefiles" -DTJPEG_LIBRARY="-L/opt/libjpeg-turbo/lib32/ -lturbojpeg" ../vgl
#List and configure CMake options
ccmake ../vgl
#build VirtualGL
make
vi pkgscripts/makedpkg
#Change "DEBARCH=armv7l" to "DEBARCH=armhf"
vi pkgscripts/deb-control
#Change "Architecture: armv7l" to "Architecture: armhf"
make deb
sudo dpkg -i virtualgl_2.4_armhf.deb

cd ..
#download source code of TurboVNC
svn co svn://svn.code.sf.net/p/turbovnc/code/tags/1.2.3 vnc
mkdir vnc-build
cd vnc-build
cmake -G "Unix Makefiles" -DTJPEG_LIBRARY="-L/opt/libjpeg-turbo/lib32/ -lturbojpeg" ../vnc
#List and configure CMake options
ccmake ../vnc
make
vi pkgscripts/makedpkg
#Change "DEBARCH=armv7l" to "DEBARCH=armhf"
vi pkgscripts/deb-control
#Change "Architecture: armv7l" to "Architecture: armhf"
make deb
sudo dpkg -i turbovnc_1.2.3_armhf.deb
sudo vi /etc/X11/xorg.conf


Add the following line to the "Screen" section in xorg.conf to run Xorg without the external display.
Section "Screen"
Identifier "Screen0"

Option "AllowEmptyInitialConfiguration"
Option "UseEdid" "False"
...
EndSection


sudo vi /etc/ld.so.conf.d/libjpeg-turbo.conf

Add the following line
/opt/libjpeg-turbo/lib32


sudo ldconfig
#Configure VirtualGL
#http://svn.code.sf.net/p/virtualgl/code/tags/2.4/doc/index.html#hd006
sudo /opt/VirtualGL/bin/vglserver_config
sudo usermod -a -G vglusers ubuntu
sudo usermod -a -G vglusers root

#Star TurboVNC
/opt/TurboVNC/bin/vncserver
#Stop TurboVNC
/opt/TurboVNC/bin/vncserver -kill :1

#I installed xfce4
vi .vnc/xstartup.turbovnc

Set following text
#!/bin/sh

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &

Let's run CUDA sample from vnc client
#login from vnc client
cd NVIDIA_CUDA-6.5_Samples/bin/armv7l/linux/release/gnueabihf/
/opt/VirtualGL/bin/vglrun ./oceanFFT

#2
Posted 04/29/2015 10:37 AM   
Awesome! Thanks for it!
Awesome! Thanks for it!
#3
Posted 05/01/2015 09:42 AM   
Thanks, I'll post it onto the eLinux Wiki :-)
Thanks, I'll post it onto the eLinux Wiki :-)

Official Jetson TK1 homepage:
https://developer.nvidia.com/embedded-computing
Official Jetson TK1 Wiki: https://developer.nvidia.com/jetson-wiki
Official Jetson TK1 Blog: http://bit.ly/1kt2wfx

#4
Posted 05/01/2015 10:30 PM   
What sort of performance are you getting through it? eg: is there about 1 second of delay between the Jetson and what you see remotely, and just showing 1 FPS of changes remotely, or is it better or worse than that?
What sort of performance are you getting through it? eg: is there about 1 second of delay between the Jetson and what you see remotely, and just showing 1 FPS of changes remotely, or is it better or worse than that?

Official Jetson TK1 homepage:
https://developer.nvidia.com/embedded-computing
Official Jetson TK1 Wiki: https://developer.nvidia.com/jetson-wiki
Official Jetson TK1 Blog: http://bit.ly/1kt2wfx

#5
Posted 05/01/2015 10:49 PM   
I'm using VNC client in same local network to Jetson TK1. I'm not still testing it through WAN. When I use TurboVNC Viewer in windows8 to connect TurboVNC server in Jetson TK1 and run oceanFFT(512x512), I can see smooth animation. I can rotate camera with almost no delay. When I maximaize window of oceanFFT(1240x900), it runs less smooth(looks like about 10FPS) and I see few delay(100~200ms).
I'm using VNC client in same local network to Jetson TK1.
I'm not still testing it through WAN.

When I use TurboVNC Viewer in windows8 to connect TurboVNC server in Jetson TK1 and run oceanFFT(512x512), I can see smooth animation.
I can rotate camera with almost no delay.
When I maximaize window of oceanFFT(1240x900), it runs less smooth(looks like about 10FPS) and I see few delay(100~200ms).

#6
Posted 05/02/2015 02:21 AM   
I have followed all the steps and I get to control the Jetson TK1 from my Laptop (Ubuntu 14.04 or Windows 8.1), I can only see images from games samples brownser and "no graphics" CUDA samples like "maxMul" but with CUDA samples like "particles" or "ocean FFT" I can't get see anything in my remote desktop. I am sure I am to connect to my Jetson TK1 (I cheked). My Jetson TK! is LAN connected to the router and my Laptop via WIFI access. Any suggestion ? Thanks.
I have followed all the steps and I get to control the Jetson TK1 from my Laptop (Ubuntu 14.04 or Windows 8.1), I can only see images from games samples brownser and "no graphics" CUDA samples like "maxMul" but with CUDA samples like "particles" or "ocean FFT" I can't get see anything in my remote desktop. I am sure I am to connect to my Jetson TK1 (I cheked).

My Jetson TK! is LAN connected to the router and my Laptop via WIFI access.

Any suggestion ?

Thanks.

#7
Posted 05/06/2015 01:20 PM   
Did you executed program with vglrun like this? [code] /opt/VirtualGL/bin/vglrun ./oceanFFT [/code] When you run OpenGL programs from remote desktop, you need to run program with vglrun.
Did you executed program with vglrun like this?
/opt/VirtualGL/bin/vglrun ./oceanFFT


When you run OpenGL programs from remote desktop, you need to run program with vglrun.

#8
Posted 05/07/2015 03:38 PM   
Does VirtualGL still use the GPU for graphics and compositing but redirect the final framebuffer to memory instead of HDMI? Does TurboVNC simply compress that framebuffer? Or is this all ARM based graphics? Would the GPU be completely free for compute then?
Does VirtualGL still use the GPU for graphics and compositing but redirect the final framebuffer to memory instead of HDMI? Does TurboVNC simply compress that framebuffer? Or is this all ARM based graphics? Would the GPU be completely free for compute then?

#9
Posted 05/07/2015 05:49 PM   
This page explains how VirtualGL works. [url]http://www.virtualgl.org/About/Background[/url] TurboVNC compress screen image using libjpeg-turbo. [url]http://www.libjpeg-turbo.org/[/url] libjpeg-turbo uses NEON SIMD instructions in ARM system. I tried some OpenGL programs from TurboVNC client. oceanFFT in CUDA samples runs smoothly from TurboVNC client. smokeParticles runs in about 5fps. It runs in almost same fps when jetson tk1 is connected to HDMI display. glxgears runs in about 1000fps when Jetson tk1 is connected HDMI display. But it runs in about 130fps from TurboVNC client. When I maximized glxgears window, fps drop down to 15fps. I can run samples in NVIDIAGameWorks/OpenGLSampels in Jetson tk1. But When I try to run them from TurboVNC client, they output "Failed to initialize GLFW" and quit. glxinfo from TurboVNC client says: OpenGL version string: 4.4.0 NVIDIA 21.3 OpenGL shading language version string: 4.40 NVIDIA via Cg compiler I think OpenGL programs are executed using GPU. But when fps is more then 120 or screen size is large, copying frame buffer and compressing it become bottleneck and cannot run as fast as when Jetson is connected to HDMI display. If TurboVNC or VirtualGL could use the hardware encoder in GPU to compress frame buffer, they might runs faster in large screen.
This page explains how VirtualGL works.
http://www.virtualgl.org/About/Background


TurboVNC compress screen image using libjpeg-turbo.
http://www.libjpeg-turbo.org/
libjpeg-turbo uses NEON SIMD instructions in ARM system.

I tried some OpenGL programs from TurboVNC client.
oceanFFT in CUDA samples runs smoothly from TurboVNC client.
smokeParticles runs in about 5fps.
It runs in almost same fps when jetson tk1 is connected to HDMI display.

glxgears runs in about 1000fps when Jetson tk1 is connected HDMI display.
But it runs in about 130fps from TurboVNC client.
When I maximized glxgears window, fps drop down to 15fps.

I can run samples in NVIDIAGameWorks/OpenGLSampels in Jetson tk1.
But When I try to run them from TurboVNC client, they output "Failed to initialize GLFW" and quit.

glxinfo from TurboVNC client says:
OpenGL version string: 4.4.0 NVIDIA 21.3
OpenGL shading language version string: 4.40 NVIDIA via Cg compiler

I think OpenGL programs are executed using GPU.
But when fps is more then 120 or screen size is large, copying frame buffer and compressing it become bottleneck and cannot run as fast as when Jetson is connected to HDMI display.
If TurboVNC or VirtualGL could use the hardware encoder in GPU to compress frame buffer, they might runs faster in large screen.

#10
Posted 05/10/2015 04:00 PM   
Has anyone (besides demotomohiro) been able to follow the instructions above and verify that it works? I haven't had time to test it properly myself, but if someone verifies it works then I'll post it on the Wiki.
Has anyone (besides demotomohiro) been able to follow the instructions above and verify that it works? I haven't had time to test it properly myself, but if someone verifies it works then I'll post it on the Wiki.

Official Jetson TK1 homepage:
https://developer.nvidia.com/embedded-computing
Official Jetson TK1 Wiki: https://developer.nvidia.com/jetson-wiki
Official Jetson TK1 Blog: http://bit.ly/1kt2wfx

#11
Posted 05/28/2015 05:01 AM   
Ok, so this looks like it uses the TK1s GPU for compositing and the final framebuffer is compressed via TurboJPEG with NEON SIMD optimizations and transmitted over the network. Does this means that if you use the GPU gdb you'd freeze the graphics (or crash the device)? It would be convienent to get a software GL implementation optimizated with NEON then tranmitted with TurboVNC as well so that the GPU was completely idle (from the graphics standpoint). This way it could be remotely debugged with no issues. Is my assessment correct?
Ok, so this looks like it uses the TK1s GPU for compositing and the final framebuffer is compressed via TurboJPEG with NEON SIMD optimizations and transmitted over the network. Does this means that if you use the GPU gdb you'd freeze the graphics (or crash the device)? It would be convienent to get a software GL implementation optimizated with NEON then tranmitted with TurboVNC as well so that the GPU was completely idle (from the graphics standpoint). This way it could be remotely debugged with no issues. Is my assessment correct?

#12
Posted 05/28/2015 04:42 PM   
I've tested it using demotomohiro's binaries, and it works very well:) There can be a slight delay sometimes, but the performance is very good overall. A couple of things though - I didn't have a screen section in my xorg.conf, so I edited it to look like this: [code] Section "Screen" Identifier "Screen0" Device "Tegra0" Monitor "DSI-0" Option "AllowEmptyInitialConfiguration" Option "UseEdid" "False" EndSection [/code] I also had to [code] chmod +x ~/.vnc/xstartup.turbovnc [/code] and to get the tab key working [code] vi ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml [/code] under the <property name="custom" type="empty"> section find the line <property name="<Super>Tab" type="string" value="switch_window_key"/> and change it to <property name="<Super>Tab" type="empty"/> from [url]http://ubuntuforums.org/archive/index.php/t-1771058.html[/url] tested using windows 8.1 with the jetson connected to the network using a linksys ae1000 and the grinch 21.3.4 Thanks demotomohiro !
I've tested it using demotomohiro's binaries, and it works very well:) There can be a slight delay sometimes, but the performance is very good overall.

A couple of things though - I didn't have a screen section in my xorg.conf, so I edited it to look like this:


Section "Screen"
Identifier "Screen0"
Device "Tegra0"
Monitor "DSI-0"
Option "AllowEmptyInitialConfiguration"
Option "UseEdid" "False"
EndSection


I also had to

chmod +x ~/.vnc/xstartup.turbovnc


and to get the tab key working

vi ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml



under the <property name="custom" type="empty"> section

find the line

<property name="<Super>Tab" type="string" value="switch_window_key"/>

and change it to

<property name="<Super>Tab" type="empty"/>

from http://ubuntuforums.org/archive/index.php/t-1771058.html

tested using windows 8.1 with the jetson connected to the network using a linksys ae1000 and the grinch 21.3.4

Thanks demotomohiro !

#13
Posted 07/10/2015 10:32 AM   
I have built updated VirtualGL, TurboVNC and libjpeg-turbo. OpenGLSamples in NVIDIAGameWorks did'nt run on old TurboVNC with VirtualGL, but they works on new version. Tab key works without editing any config files on new one. [url]https://github.com/TurboVNC/turbovnc/blob/2.0.x/ChangeLog.txt[/url] [url]https://github.com/VirtualGL/virtualgl/blob/2.4.x/ChangeLog.txt[/url] [url]https://github.com/libjpeg-turbo/libjpeg-turbo/blob/1.4.x/ChangeLog.txt[/url] [b]How to install[/b](tested on l4t R21.4) [code]wget http://demotomohiro.github.io/hardware/jetson_tk1/pkg/libjpeg-turbo_1.4.2_armhf.deb wget http://demotomohiro.github.io/hardware/jetson_tk1/pkg/virtualgl_2.4.1_armhf.deb wget http://demotomohiro.github.io/hardware/jetson_tk1/pkg/turbovnc_2.0.1_armhf.deb sudo dpkg -i libjpeg-turbo_1.4.2_armhf.deb sudo dpkg -i virtualgl_2.4.1_armhf.deb sudo dpkg -i turbovnc_2.0.1_armhf.deb sudo vi /etc/ld.so.conf.d/libjpeg-turbo.conf[/code] #Add the following line [code]/opt/libjpeg-turbo/lib32[/code] [code]sudo ldconfig #Configure VirtualGL #https://cdn.rawgit.com/VirtualGL/virtualgl/2.4.1/doc/index.html#hd006 sudo /opt/VirtualGL/bin/vglserver_config sudo usermod -a -G vglusers ubuntu #Star TurboVNC /opt/TurboVNC/bin/vncserver #Stop TurboVNC /opt/TurboVNC/bin/vncserver -kill :1 #install xfce4 sudo apt-get install xfce4 xfce4-goodies gnome-icon-theme-full vi .vnc/xstartup.turbovnc[/code] Set following text [code]#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS startxfce4 &[/code] Run CUDA sample from vnc client #login from vnc client [code]cd NVIDIA_CUDA-6.5_Samples/bin/armv7l/linux/release/gnueabihf/ /opt/VirtualGL/bin/vglrun ./oceanFFT[/code]
I have built updated VirtualGL, TurboVNC and libjpeg-turbo.
OpenGLSamples in NVIDIAGameWorks did'nt run on old TurboVNC with VirtualGL, but they works on new version.
Tab key works without editing any config files on new one.

https://github.com/TurboVNC/turbovnc/blob/2.0.x/ChangeLog.txt
https://github.com/VirtualGL/virtualgl/blob/2.4.x/ChangeLog.txt
https://github.com/libjpeg-turbo/libjpeg-turbo/blob/1.4.x/ChangeLog.txt

How to install(tested on l4t R21.4)
wget http://demotomohiro.github.io/hardware/jetson_tk1/pkg/libjpeg-turbo_1.4.2_armhf.deb

wget http://demotomohiro.github.io/hardware/jetson_tk1/pkg/virtualgl_2.4.1_armhf.deb

wget http://demotomohiro.github.io/hardware/jetson_tk1/pkg/turbovnc_2.0.1_armhf.deb


sudo dpkg -i libjpeg-turbo_1.4.2_armhf.deb
sudo dpkg -i virtualgl_2.4.1_armhf.deb
sudo dpkg -i turbovnc_2.0.1_armhf.deb

sudo vi /etc/ld.so.conf.d/libjpeg-turbo.conf

#Add the following line
/opt/libjpeg-turbo/lib32


sudo ldconfig
#Configure VirtualGL
#https://cdn.rawgit.com/VirtualGL/virtualgl/2.4.1/doc/index.html#hd006
sudo /opt/VirtualGL/bin/vglserver_config
sudo usermod -a -G vglusers ubuntu

#Star TurboVNC
/opt/TurboVNC/bin/vncserver
#Stop TurboVNC
/opt/TurboVNC/bin/vncserver -kill :1

#install xfce4
sudo apt-get install xfce4 xfce4-goodies gnome-icon-theme-full
vi .vnc/xstartup.turbovnc

Set following text
#!/bin/sh

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &


Run CUDA sample from vnc client
#login from vnc client
cd NVIDIA_CUDA-6.5_Samples/bin/armv7l/linux/release/gnueabihf/
/opt/VirtualGL/bin/vglrun ./oceanFFT

#14
Posted 10/04/2015 10:46 AM   
How to build new libjpeg-turbo, VirtualGL and TurboVNC from source code: [code]#install tools to build libjpeg-turbo, VirtualGL and TurboVNC. sudo apt-get install git sudo apt-get install autoconf sudo apt-get install libtool sudo apt-get install cmake-curses-gui sudo apt-get install g++ sudo apt-get install libglu1-mesa-dev sudo apt-get install libpam0g-dev #download source code of libjpeg-turbo git clone https://github.com/libjpeg-turbo/libjpeg-turbo.git -b 1.4.x mkdir libjpeg-turbo-build cd libjpeg-turbo autoreconf -fiv cd ../libjpeg-turbo-build #configure and build sh ../libjpeg-turbo/configure make vi pkgscripts/makedpkg.tmpl #Change "DEBARCH=armv7l" to "DEBARCH=armhf" make deb #install sudo dpkg -i libjpeg-turbo_1.4.2_armhf.deb #download source code of VirtualGL git clone https://github.com/VirtualGL/virtualgl.git -b 2.4.x mkdir virtualgl-build cd virtualgl-build cmake -G "Unix Makefiles" -DTJPEG_LIBRARY="-L/opt/libjpeg-turbo/lib32/ -lturbojpeg" ../virtualgl #List and configure CMake options ccmake ../virtualgl make vi pkgscripts/makedpkg #Change "DEBARCH=armv7l" to "DEBARCH=armhf" vi pkgscripts/deb-control #Change "Architecture: armv7l" to "Architecture: armhf" make deb sudo dpkg -i virtualgl_2.4.1_armhf.deb #download source code of TurboVNC git clone https://github.com/TurboVNC/turbovnc.git -b 2.0.x mkdir turbovnc-build cd turbovnc-build cmake -G "Unix Makefiles" -DTVNC_BUILDJAVA=0 -DTJPEG_LIBRARY="-L/opt/libjpeg-turbo/lib32/ -lturbojpeg" ../turbovnc make vi pkgscripts/makedpkg #Change "DEBARCH=armv7l" to "DEBARCH=armhf" vi pkgscripts/deb-control #Change "Architecture: armv7l" to "Architecture: armhf" make deb sudo dpkg -i turbovnc_2.0.1_armhf.deb sudo vi /etc/ld.so.conf.d/libjpeg-turbo.conf #Add the following line /opt/libjpeg-turbo/lib32 sudo ldconfig #Configure VirtualGL #https://cdn.rawgit.com/VirtualGL/virtualgl/2.4.1/doc/index.html#hd006 sudo /opt/VirtualGL/bin/vglserver_config sudo usermod -a -G vglusers ubuntu #Star TurboVNC /opt/TurboVNC/bin/vncserver #Stop TurboVNC /opt/TurboVNC/bin/vncserver -kill :1 #install xfce4 sudo apt-get install xfce4 xfce4-goodies gnome-icon-theme-full vi .vnc/xstartup.turbovnc[/code] Set following text [code]#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS startxfce4 &[/code]
How to build new libjpeg-turbo, VirtualGL and TurboVNC from source code:
#install tools to build libjpeg-turbo, VirtualGL and TurboVNC.
sudo apt-get install git
sudo apt-get install autoconf
sudo apt-get install libtool
sudo apt-get install cmake-curses-gui
sudo apt-get install g++
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libpam0g-dev

#download source code of libjpeg-turbo
git clone https://github.com/libjpeg-turbo/libjpeg-turbo.git -b 1.4.x
mkdir libjpeg-turbo-build
cd libjpeg-turbo
autoreconf -fiv
cd ../libjpeg-turbo-build
#configure and build
sh ../libjpeg-turbo/configure
make
vi pkgscripts/makedpkg.tmpl
#Change "DEBARCH=armv7l" to "DEBARCH=armhf"
make deb
#install
sudo dpkg -i libjpeg-turbo_1.4.2_armhf.deb

#download source code of VirtualGL
git clone https://github.com/VirtualGL/virtualgl.git -b 2.4.x
mkdir virtualgl-build
cd virtualgl-build
cmake -G "Unix Makefiles" -DTJPEG_LIBRARY="-L/opt/libjpeg-turbo/lib32/ -lturbojpeg" ../virtualgl
#List and configure CMake options
ccmake ../virtualgl
make
vi pkgscripts/makedpkg
#Change "DEBARCH=armv7l" to "DEBARCH=armhf"
vi pkgscripts/deb-control
#Change "Architecture: armv7l" to "Architecture: armhf"
make deb
sudo dpkg -i virtualgl_2.4.1_armhf.deb

#download source code of TurboVNC
git clone https://github.com/TurboVNC/turbovnc.git -b 2.0.x
mkdir turbovnc-build
cd turbovnc-build
cmake -G "Unix Makefiles" -DTVNC_BUILDJAVA=0 -DTJPEG_LIBRARY="-L/opt/libjpeg-turbo/lib32/ -lturbojpeg" ../turbovnc
make
vi pkgscripts/makedpkg
#Change "DEBARCH=armv7l" to "DEBARCH=armhf"
vi pkgscripts/deb-control
#Change "Architecture: armv7l" to "Architecture: armhf"
make deb
sudo dpkg -i turbovnc_2.0.1_armhf.deb

sudo vi /etc/ld.so.conf.d/libjpeg-turbo.conf
#Add the following line
/opt/libjpeg-turbo/lib32

sudo ldconfig
#Configure VirtualGL
#https://cdn.rawgit.com/VirtualGL/virtualgl/2.4.1/doc/index.html#hd006
sudo /opt/VirtualGL/bin/vglserver_config
sudo usermod -a -G vglusers ubuntu

#Star TurboVNC
/opt/TurboVNC/bin/vncserver
#Stop TurboVNC
/opt/TurboVNC/bin/vncserver -kill :1

#install xfce4
sudo apt-get install xfce4 xfce4-goodies gnome-icon-theme-full
vi .vnc/xstartup.turbovnc

Set following text
#!/bin/sh

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &

#15
Posted 10/04/2015 10:48 AM   
Scroll To Top

Add Reply