viernes, 21 de octubre de 2016

Raspberry Pi with Pixel, control remoto con RealVNC. Primeros pasos con Raspbian (X) parte4.


Si disponéis de la última versión de Raspbian con el escritorio Pixel, ya sabréis que una de las nuevas incorporaciones es el software RealVNC para conexión remota. Hasta ahora Raspbian no incluía ningún paquete para ello y normalmente recurríamos a TightVnc, tal y como muestro en otro post anterior

http://frambuesa-pi.blogspot.com.es/2015/10/raspberry-pi-primeros-pasos-con_21.html

sin embargo los chicos de Raspbian han decidido "facilitarnos" las cosas, incluyendo RealVnc por defecto en Raspbian. Pues bien de entrada os aviso que yo he flasheado la nueva versión (descargada de la web oficial) en una tarjeta, y RealVnc no funciona, o funciona de manera parcial (esto ya se ha solucionado en la actual versión disponible en la web de oficial de raspberrypi.org). 
Pero de todas formas he decidido crear este tutorial para que no perdáis las mismas horas que he perdido yo en el caso de que os encontréis con problemas. 
Yo tengo una Rapsberry Pi 3, con este modelo después de actualizar los paquetes de RealVNC me ha funcionado correctamente pero con el modelo de RaspberryPi B+, he tenido que crear de forma manual un fichero de arranque del VNC que genera un escritorio virtual al que me puedo conectar con RealVNC. 
Más abajo están todas las explicaciones para conectaros con una RaspberryPi B+ o una RaspberryPi 3.
Si no habéis leído el post anterior de actualización de versión, os recomiendo leerlo antes de continuar, en el apartado de Raspbian Primeros Pasos



1. Paquetes RealVnc


Para empezar, sabed que tenemos instalados dos paquetes, el RealVncViewer que sirve para que nos conectemos desde nuestra Raspberry a  otro pc (este otro pc debe disponer de un servidor de Vnc instalado), y el RealVncServer que sirve para que desde otro pc nos conectemos a nuestra Raspberry. Generalmente este último es el que nos interesa, yo personalmente tengo la RaspberryPi encendida sin pantalla ni teclado ni ratón y me conecto a ella con otro pc.

Para empezar os recomiendo actualizar o desinstalar los dos paquetes y volverlos a instalar para obtener la última versión, yo los he tenido que volcer a instalar, con los siguientes comandos (sino no hay manera de que funcione), primero los desinstalamos


sudo apt-get purge realvnc-vnc-viewer

sudo apt-get purge realvnc-vnc-server

y luego los instalamos

sudo apt-get install -y realvnc-vnc-viewer

sudo apt-get install -y realvnc-vnc-server

como he dicho si no vais a usar la Raspberry para conectaros a otro Pc no es necesario volver a instalar el viewer (así que podéis pasar por alto la tercera orden)

Una vez actualizado/instalado pasamos a la configuración y puesta en marcha, para ello lo mejor es establecer uns IP fija para nuestra RaspberryPi. Sino sabéis como mirad estos dos post para poner la IP fija para la conexión por cable y por WiFi

http://frambuesa-pi.blogspot.com.es/2015/12/raspberrypi-conexion-internet-con-cable.html

http://frambuesa-pi.blogspot.com.es/2015/12/raspberrypi-conexion-internet-con-wifi.html

2. Configuración de RealVNC

Según la web podemos activar el servidor de RealVnc desde la pantalla de Configuración de RaspberryPi en, haced click en el botón del menú Inicio-Preferencias-Configuración de RaspberryPi. Aparecerá esta pantalla, haced click en la pestaña Interfaces



Aquí  podéis ver la opción VNC desactivada, si activáis VNC desde aquí el servidor de RealVnc se pondrá en marcha siempre que se encienda la Raspberry. A partir de aquí en la Raspberry Pi B+ sólo me ha permitido la conexión al escritorio de forma remota si la RaspberryPi tenia conectado un monitor. En cambio con la RaspberryPi 3 me permite a conexión sin ningún tipo de problema si tenéis este modelo ya podéis pasar al punto 2.2.

Para la RaspberryPi B+ como no me funciona y necesito es tener la RaspberryPi encendida (y conectada a la red) sin monitor ni teclado ni ratón, y poder conectarme a su escritorio, he optado por crear un escritorio virtual que se arranca de forma automática al encender la RaspberryPi, tal y como hacíamos con TightVnc. Así que podéis volver a dejar desactivada la opción VNC, y leed atentamente el punto 2.1.

2.1 Arrancar de forma automática el servidor RealVNC en la RaspberryPi B+

En primer lugar  recordad que tenéis que en este caso hay que dejar desactivada la opción VNC de la pestaña Interfaces.
En segundo lugar en la pantalla de Configuración de RaspberryPi haremos click en la pestaña Sistema y nos aseguraremos que en la opción iniciar en: tenemos seleccionada la opción Escritorio y en ingreso automático como usuario pi también debe estar marcado, como muestra la imagen. Podéis hacer click en Aceptar (tal vez os pida reiniciar el dispositivo)



Para que el servidor VNC se ejecute de forma automática cada vez que encendemos la Raspberry Pi en modo de escritorio, crearemos un fichero que ejecute el programa cada vez que se inicie en modo de escritorio. Desde la Raspberry Pi abrimos una pantalla de terminal y nos posicionaremos en la carpeta .config, pare ello en la ternimal pondremos la orden

cd /home/pi

presionaremos Intro y luego pondremos la orden

cd .config

presionaremos Intro, ya estamos en la carpeta .config tal y como muestra la imagen



ahora crearemos la carpeta autostart dentro del directorio .config, con la orden

mkdir autostart

presionamos Intro y seguidamente accederemos a la carpeta con la orden siguiente

cd autostart

presionaremos Intro y ya estamos localizados en la nueva carpeta tal y como se muestra en la imagen siguiente



ahora abriremos el editor de texto nano para crear un fichero con las órdenes necesarias, usaremos la orden

sudo nano vncserver.desktop



presionaremos Intro y se abrirá la pantalla del editor nano 


 

en esta pantalla introduciremos las líneas de código siguiente (atención hay que respetar los espacios)

[Desktop Entry]
Type=Application
Name=VNC
Exec=vncserver :1 -geometry 1024x768
StartupNotify=False

quedará parecido a la imagen siguiente



para guardar presionaremos las teclas CTRL+O y presionaremos Intro en el teclado y luego presionaremos CTRL+X para salir del editor nano. Ahora si reiniciamos la Raspberry Pi automáticamente se iniciará el servidor VNC y nos podremos conectar desde otra máquina aunque no tengamos ningún monitor o Tv conectado. Recordad que el servidor VNC se ejecuta al arrancar el modo escritorio, si la Raspberry Pi arranca en modo consola no se inicia (tal y como he explicado antes). La ordern -geometry 1024x768 es la resolución a la que quiero abrir el escritorio remoto, lo podéis cambiar por otro, por ejemplo 800x600 o 1280x1024 etc...


2.2 Instalar en RealVncViewer en un ordenador o portátil

Para conectarnos a la Raspberry ahora solo tenemos que instalar en otra máquina (en mi caso un portátil con Windows) el RealVnc Viewer (no os voy a explicar aquí como se hace). Una vez instalado ejecutad el programa aparece una pantalla como la de la imagen



tenéis que introducir la dirección IP del servidor VNC al que nos queremos conectar, que será la IP de nuestra Raspberry Pi y después pondremos ":1", debería quedar más o menos como muetra la imagen superior (en el punto 1 de este post os he dejado dos enlaces para establecer la IP fija de la Raspberry)

Presionaremos el botón Conectarse, para conectarnos y seguidamente tendremos que introducir el usuario y password, si habéis seguido los pasos es el usuario pi y la contraseña que tengáis, si no habéis cambiado la contraseña por defecto sera, raspberry



haremos click en el botón OK y si no nos hemos equivocado con la IP y el password veremos una pantalla más o menos como esta




ya estamos conectados a nuestra Raspberry Pi en modo de escritorio remoto. La primera vez que os conectáis es posible ver un mensaje de error en el escritorio de la RaspberryPi como el que se muestra a continuación



no os preocupéis solo tenéis que aceptar y listo.


2.3 Cambiar la resolución de Rapberry Pi.

Si habéis omitido el paso 2.1 y la conexión con RealVNC a vuestra Raspberry Pi funciona correctamente es posible que al conectar veáis el escritorio a una resolución muy pequeña. Pues buen tenemos una solución fácil para cambiarla. Abrid una ventana de terminal y escribid el siguiente comando

sudo nano /boot/config.txt

se abrirá el fichero de configuración y lo modificaremos ligeramente, buscad las lineas que hacen referencia a hdmi

#hdmi_force_hotplug=1
#hdmi_group=1
#hdmi_mode=1

estas líneas tienen delante el simbolo # (significan que están comentadas, o sea, que se omiten al arrancar) cambiadlas por

hdmi_force_hotplug=1
hdmi_ignore_edid=0xa5000080
hdmi_group=2
hdmi_mode=16

ahora presionad CTRL+O y Intro en el teclado para guardar los cambios en el archivo y luego CTRL+X y Intro para cerrarlo. Ahora reiniciad la Raspberry Pi y volved a conectar con RealVNC, la resolución actual será de 1024x768.

Sin embargo podéis consultar todas las posibles configuraciones en el siguiente enlace

https://www.raspberrypi.org/documentation/configuration/config-txt.md

y en este otro tenéis el link de RealVNC para RaspberryPi

https://www.realvnc.com/docs/raspberry-pi.html#raspberry-pi-connect