martes, 8 de diciembre de 2015

Instalar X11VNC en Beaglebone Black para obtener control remoto y visualizar aplicaciones.

Con x11vnc se puede visualizar directamente las aplicaciones en una pantalla o LCD, usando el programa VNC viewer se puede tener acceso remoto y poder ejecutar las aplicaciones de forma directa. El programa de Putty también permite tener un acceso remoto activando la opción de tunnel.

En este tutorial se explicará como instalar x11vnc; que se ejecute de forma automática cuando se prenda la Beaglebone Black y configurar Putty para usar con la opción de tunnel. Al final se describe algunos problemas que se pueden tener y como solucionarlos.

Instalar x11vnc

Requisitos:

sudo apt-get install xauth
sudo apt-get install x11-xserver-utils

sudo apt-get update
sudo apt-get install x11vnc
#poner una contraseña
x11vnc -storepasswd
#crear un ejecutable para correr cuando se inicie usando xinetd
sudo apt-get install xinetd
sudo nano /etc/xinetd.d/x11vnc
#Pegar lo siguiente

service x11vnc
{
  type = UNLISTED
  disable = no
  socket_type = stream
  protocol = tcp
  wait = no
  user = machinekit
  server = /usr/bin/x11vnc
  server_args = -inetd -o /home/machinekit/.x11vnc.log.%VNCDISPLAY -display :0 -forever -bg -rfbauth /home/machinekit/.vnc/passwd  -shared -enablehttpproxy -forever -nolookup -auth /home/machinekit/.Xauthority 
  port = 5902
}

#ctrl+o y ctrl+x
#damos derechos de ejecución
sudo chmod a+x /etc/xinetd.d/x11vnc
#Apagamos o reiniciamos, al iniciar ya se podrá obtener acceso con Vnc viewer o Putty tunnel
sudo shutdown -h now

Si se desea ejecutar x11vnc como root hay que cambiar algunas cosas.

#la contraseña se guarda en /root/.vnc/passwd
sudo x11vnc -storepasswd
#ejecutar lo siguiente para poder ver los archivos que se crearán 
#deacuerdo a la configuración
sudo x11vnc -bg -o %HOME/.x11vnc.log.%VNCDISPLAY -auth $HOME/.Xauthority -display :0  -forever -rfbport 5902

Se debe cambiar user = machinekit por user = root
La variable log se guardará en /root/.x11vnc.log.%VNCDISPLAY, usando lo siguiente "%HOME/.x11vnc.log.%VNCDISPLAY".
Lo último es poner la ruta de autorización para poder dar acceso al display designado, para eso se utiliza la siguiente ruta /root/.Xauthority o /var/run/lightdm/root/:0. La segunda cambiará deacuerdo al escritorio que se ocupe ya sea gnome, lxde, xfce, etc.

Por lo tanto el ejecutable quedará de la siguiente forma:

#Pegar lo siguiente

service x11vnc
{
  type = UNLISTED
  disable = no
  socket_type = stream
  protocol = tcp
  wait = no
  user = root
  server = /usr/bin/x11vnc
  server_args = -inetd -o /root/.x11vnc.log.%VNCDISPLAY -display :0 -forever -bg -rfbauth /root/.vnc/passwd  -shared -enablehttpproxy -forever -nolookup -auth /root/.Xauthority 
  port = 5902
}

#ctrl+o y ctrl+x


-o /home/machinekit/.x11vnc.log.%VNCDISPLAY -> le dice que guarde la información de log con los parámetros de host y puerto configurados.

En este caso se guarda así ".x11vnc.log.beaglebone:5902" en /home/machinekit

-display :0 -> indica que se exporte y se pueda tener acceso a visualizar en el display :0, si se realiza un "echo $DISPLAY" se obtendra el valor de :0

-rfbauth /home/machinekit/.vnc/passwd -> indica que se use la constraseña que se almacenó en esa ruta, al usar el comando "x11vnc -storepasswd".

-auth /home/machinekit/.Xauthority -> permite el acceso a conectarse usando Magic cookie que contiene información necesaria para realizar dicha acción.

Nota: Los parámetros más importantes son las rutas que indican donde estan loas archivos que se necesita, el puerto al que se quiere acceder, el display que se va a exportar con x11vnc y en caso de usar una contraseña indicar la ruta donde se guardo.

Referencia: http://unix.stackexchange.com/questions/206272/creating-x11vnc-server-initscript-not-successful-on-boot-manually-started-works 

VNC Viewer

colocar la IP::Puerto

ejemplo:








Poner la contraseña generada en los pasos anteriores y ya se tendra acceso remoto a la Beaglebone Black, ejecutando "echo $DISPLAY" se obtendrá el valor :0 que es el que se configuró.



Configurar Putty

Hay que configurar con el puerto que vamos a ocupar en la opción de tunnels y hacer click en Add.


Luego se configura X11.


Por último hay que asignar un nombre y la IP a la cual se quiere conectar, utilizar programa Advanced IP Scanner Configuración.


Cuando ya se conecte hay que exportar la variable DISPLAY.

export DISPLAY=:0
echo $DISPLAY
xhost


Para probar ejecutar cualquier programa, como ejemplo leafpad y deberá aparecer en la pantalla o LCD donde este conectada la Beaglebone Black. En este caso se uso Vnc Viewer para realizar la prueba.

leafpad


Linux

En linux se obtiene acceso instalando vncviewer o por ssh de la siguiente manera:

#ssh -L localport:host:hostport user@ssh_server
#ssh -L 5902:localhost:5902 <host>
ssh -L 5902:beaglebone:22 machinekit@192.168.10.192
#acceso remoto ssh -R 5900:localhost:5900 user@IP
ssh -R 5902:localhost:5902 machinekit@192.168.10.192

Con VNC Viewer

Para instalar en debian ejecutar lo siguiente:

sudo apt-get install xvnc4viewer
vncviewer
#en server colocar IP::Puerto
192.168.10.192::5902
#luego colocar la contraseña y se obtendrá la pantalla de vncviewer





Solucionar problemas.

Si aparece el siguiente mensaje -> unable to open display ":0"

Se debe estar seguro de que se tiene habilitada la salida HDMI en /boot/uEnv.txt y volver a correr:

export Display=:0
echo $DISPLAY
xhost

Si no funciona intentar habilitando  lo siguiente en /etc/ssh/sshd_config

X11Forwarding yes
X11DisplayOffset 10

Si no funciona intentar habilitando  lo siguiente en /etc/ssh/ssh_config

   ForwardX11 yes
   ForwardX11Trusted yes  
 

No hay comentarios.:

Publicar un comentario