Páginas

Mostrando entradas con la etiqueta Raspbian. Mostrar todas las entradas
Mostrando entradas con la etiqueta Raspbian. Mostrar todas las entradas

jueves, 6 de febrero de 2014

Conectándonos al RaspberryPi en red local

En esta nueva entrada voy a tratar de abarcar todo lo que necesitamos realizar para conectarnos a nuestro RaspPi de forma remota, primero, a través de nuestra red local; y lo completaremos con el modo de acceder sin problemas desde cualquier parte del mundo (que tenga acceso a Internet).
El modo fácil de comunicarnos con nuestro RaspPi es conectando 1) la salida HDMI (o de vídeo) a un televisor y 2) un teclado+ratón inalámbricos a través de uno de los puertos USB de los que dispone la RaspPi (v2). Éste ha sido el modo que he utilizado para instalar el sistema operativo Raspbian y una serie de paquetes que me permitirán conectarme de forma remota, pudiendo prescindir del monitor de televisión y del teclado+ratón inalámbricos. Estamos hablado de la versión 2 de la Raspberry Pi. Si fuéramos a utilizar la versión 1 de la RaspPi, debemos tener en cuenta que no disponemos de conector RJ-45 y solo dispone de un puerto USB.

Accediendo desde nuestra red local

La RaspPi trae de origen un conector RJ-45 para conectarnos a una red local mediante un cable Ethernet que enchufemos a nuestro router/switcher. Si éste va a ser el modo de acceder, nos podemos saltar el siguiente apartado e ir directamente a Accediendo mediante el comando ssh.
También tenemos la posibilidad de conectarnos a través de una línea serie (en Enlaces se explica el modo de implementarlo), accediendo directamente a la consola de comandos del sistema Raspbian, opción que vamos a descartar, al ser algo más complejo el montaje requerido y no aportar nada interesante.

Configuración de la red WiFi

También podemos acceder por WiFi, siempre y cuando conectemos un adaptador USB-WiFi a uno de los dos puertos USB con que viene dotado nuestra RaspPi (Modelo B). Habrá que elegir, de entre todas las visibles, la red WiFi a la que nos queramos y podamos conectar, red que probablemente estará protegida por contraseña, y que tendremos que introducir para ser aceptados como usuarios de este red local.
Pero ¿cómo podemos conectarnos a una red WiFi? El modo más sencillo sería entrado a través de la interfaz gráfica LXDE que trae por defecto Raspbian y pulsar sobre el icono WiFi Config. Seleccionaríamos la red e introduciríamos la correspondiente contraseña.
¿y si por el motivo que sea no tenemos modo de conectarnos a la red local? El modo que tendremos de  configurar el acceso a la red WiFi consistirá en editar los ficheros de configuración en donde se guardan los datos de la conexión, edición que podemos hacer desde otro PC.
Extraeremos la SDcard del RaspPi, la insertaremos en nuestro PC, nos iremos a la partición en donde se encuentre nuestro sistema operativo Raspbian y procederemos a editar los ficheros pertinentes.
Raspbian necesita dos ficheros para configurar el acceso a una red WiFi protegida por contraseña y encriptación WPA2/WPA (WiFi Protected Access), más segura que con la obsoleta WEP (Wired Equivalent Privacy):
/etc/network/interfaces
/etc/wpa_suplicant/wpa_suplicant.conf
Desde nuestro PC, y en modo root editaremos el fichero interfaces, o nos aseguraremos de que, al menos, contiene las siguientes líneas de código:
Podemos sustituir wpa-roam por wpa-conf si queremos que la conexión se realice por WiFi, a pesar de que estemos conectados por un cable Ethernet. Si lo que hemos puesto es wpa-roam, en el momento que conectemos un cable de red se desactivará la conexión WiFi, y si lo desenchufamos tratará de establecer una conexión por WiFi, buscando entre todas las redes que detecte en este momento y que estén habilitadas en el fichero wpa_suplicant.conf, fichero que vamos a editar, también en modo root:
Nos crearemos un bloque, similar al que en la imagen anterior hemos realzado en verde, y similar al resto de bloques que tengamos. Introduciremos el nombre de la red a la que queremos conectarnos y la contraseña válida para poder acceder. Comprobaremos que los demás parámetros son adecuados.
# Identificador de RED SSID
ssid="Identificador de Red"

# contraseña válida para la red a la que queremos acceder
psk="la contraseña asociada a esta red"

# tipo de protocolo: RSN (para WPA2) y WPA (para WPA1)
proto=WPA

# tipo de gestión de contraseñas:
#   - WPA-PSK (Pre-Shared) o
#   - WPA-EAP (Enterprise)
key_mgmt=WPA-PSK

# tipo de apareamiento: CCMP (WPA2) o TKIP (WPA1)
pairwise=TKIP

# opciones de autorización: OPEN (WPA1/WPA2)
# otras posibles opciones poco frecuentes: SHARED y LEAP
auth_alg=OPEN
Extraeremos la SDcard, y la insertaremos en la RaspPi. Al finalizar el arranque, y si lo hemos hecho correctamente, será capaz de conectarse, si está en cobertura, a la nueva red WiFi.

Accediendo mediante el comando ssh

Averiguaremos si está en red, y la IP que le ha sido asignada, y de este modo entraremos a través del comando ssh. Los detalles de estos pasos vienen explicados aquí, y que corresponde a una entrada previa de este blog. La posibilidad de utilizar el comando ssh puede ser determinado en fase de instalación del sistema Raspbian:
Activado el servidor ssh, podemos invocarlo desde el terminal de comandos que abrimos en otro PC tecleando lo siguiente:
en donde hemos indicado el usuario (pi) y la dirección IP (192.168.1.105) de la sesión que queremos abrir en la RaspPi. Pero ¿no sería más fácil si utilizásemos el nombre de la RaspPi en vez de una ristra de números? Pues eso es lo que vamos a realizar. Para tal fin, vamos a instalar en la RaspPi el servidor Avahi, y utilidades complementarias. Avahi permite a los programas publicar y descubrir servicios y servidores que se están ejecutando en una red local sin una configuración específica.
sudo apt-get install avahi-daemon
sudo apt-get install avahi-utils
una vez instalado, debemos ejecutar el siguiente comando:
sudo insserv avahi-daemon
de este modo, el servicio se activará a cada arranque que realicemos del RaspPi.
Con la instrucción avahi-browse -a -d local se nos mostrarán todos los dispositivos que publican sus servicios a través de ZeroConfig/Bonjour en el dominio .local.
A partir de ahora, y por mucho que cambie la IP de nuestro RaspPi, no tendremos que estar averiguando la IP que tenga en este momento. Nos dirigiremos con el nombre que tenga asignado seguido por .local. Así si el nombre continua siendo raspberrypi, en vez de la IP pondremos raspberrypi.local. Si tenemos activado un servidor Web, introduciremos en el navegador raspberrypi.local. Para acceder mediante una consola remota podremos hacerlo tecleando ssh pi@raspberrypi.local, si queremos hacer un ping, también será posible tecleando ping raspberry.local, y así con todos los servicios instalados en la RaspPi.

Cambiando el hostname

Si queremos cambiar el hostname, lo podemos hacer de dos maneras:
1) ejecutando sudo raspi-config en la consola de comandos, o bien
2) de forma manual, con el siguiente procedimiento:
sudo nano /etc/hosts
sudo nano /etc/hostname
sudo /etc/init.d/hostname.sh
sudo reboot
En los dos ficheros que editemos sustituiremos el nombre actual, raspberrypi, con el nombre por el que queramos sea reconocido nuestro RaspPi.
Para hacer que sean los cambios permanentes, actualizando el kernel con el nuevo nombre, ejecutamos sudo /etc/init.d/hostname.sh y rearrancamos el equipo con la sentencia sudo reboot.

Enlaces

- Raspian
- Raspberry Pi - Installing a RS232 Serial Port
- Raspberry Pi - RS232 Serial Interface Options (Revisit)
- Configuración de la red y acceso a Internet
- How to Setup Wi-Fi On Your Raspberry Pi via the Command Line
- What's the difference between `wpa-roam` and `wpa-conf` in the /etc/network/interfaces file?
- Setting up for WiFi Roaming with wpa
- WPA support in Debian
- Linux WPA/WPA2/IEEE 802.1X Supplicant
- RPi Advanced Setup
- Avahi
- ¿Que es avahi y para que sirve?
- Advertising Linux Services via Avahi/Bonjour
- avahi-daemon man
- Zero-Configuration Networking

martes, 26 de noviembre de 2013

El prometedor mundo Raspberry Pi

En mi manifiesto hablaba de mis aficiones, entre las que se encontraba Arduino, pero olvidaba comentar el maravilloso y prometedor mundo Raspberry Pi. En el momento en que creé el blog no contemplaba dentro de mis planes utilizar Raspberry Pi, pues el Linux empotrado que requería para mis desarrollos lo resolví adaptando un miniPC Android MK802 al entorno Linux, instalándole una de las distribuciones que probé y que me pareció era la más estable, pues requería pocos recursos. Estaba basada en una versión ligera de Ubuntu 12.04, que utilizaba el entorno gráfico de usuario LXDE. Aunque fue una buena experiencia, el dispositivo no daba para mucho, andaba justo de potencia y había que ir pensando en buscar otra solución. Y la solución llegó antes de lo esperado.

Las circunstancias, y el mal tiempo, hicieron que esta solución quedase descartada, eso sí, después de probar que la solución implementada, sistema de riego controlado mediante móvil, funcionase perfectamente. Un día de lluvia fue el causante que se mojase el hardware y el sistema dejase de funcionar.

El Raspberry Pi, de un vistazo

En el tamaño de una tarjeta de crédito se ha implementado este potente ordenador, que dispone de salida HDMI, dos puertos USB, un conector RJ-45 para conexión a red local por cable Ethernet, un conector para enchufarle una tarjeta de memoria SDcard, en donde instalaremos el sistema operativo, 512 Mbytes de RAM, conector RCA para vídeo y otro conector para salida de audio. Todo ello se alimenta con un alimentador de 5V/1.2A mediante el conector microUSB que dispone para tal fin, y solo para tal fin. Se le puede conectar una cámara de vídeo y posee otros conectores, de 26 y 10 pines, para poder comunicarse con el mundo exterior.
Decir también que existen dos versiones que hay que tener en cuenta, pues las diferencias, aunque mínimas, afectan  al desarrollo de las aplicaciones. La versión que dispongo es la rev2, la más reciente.
Los dos puertos pueden usarse para conectar un adaptador WiFi y otro para integrar un teclado y ratón inalámbricos. Eso es lo que he hecho.
En la siguiente ilustración se muestra las posibilidades que ofrece el sistema.

Mis primeros pasos con Raspberry Pi

Lo primero que hay que hacer es instalar un sistema operativo. Pero ¿cual instalamos? De todos los sabores de Linux para Raspberry Pi, me decanté por Raspbian, una portabilidad no oficial realizada a partir de Debian Wheezy. Parece ser que sí existe versión basada en Ubuntu (Building Ubuntu for the Raspberry Pi), que es la que utilizo en mis PCs, pero navegando por la red y viendo lo que había es lo que me ha decidido finalmente decantarme por Raspbian.
Me he ido a la página de descargas de Raspberri.org y ahí me recomiendan que me baje no uno sino un paquete de sistemas operativos y en fase de instalación decida qué sistemas instalar.
1) Me bajo la última versión, v1.3.2, de NOOBS (offline and network install), con un tamaño de 1,2 Gbytes. Existía la posibilidad de bajarme otro fichero más pequeño, NOOBS Lite (network install only), pero por si surgieran problemas de conexión a Internet me he decantado por el primero. Y también hubiera podido bajarme varios ficheros, cada uno con distinta versión de sistema operativo.
2) Lo descomprimo donde me apetezca. Por ejemplo, en donde lo he descargado.
3) Formateo a FAT32 una tarjeta SD, de más de 4 Gbytes de memoria. Para ello, y como mi entorno de trabajo es Linux Ubuntu 13.10, utilizo gparted.
4) Copio todo el contenido de la carpeta donde se ha descomprimido el fichero en la tarjeta SD.
5) Inserto la tarjeta SD en la ranura existente en Raspberry.
6) Conectaremos a la tarjeta Raspberry: a) el cable HDMI que, a su vez, conectaremos en el otro extremo al monitor de televisión, b) el adaptador WiFi en uno de los dos puertos USB, c) el cable de red al puerto RJ-45 LAN por un lado y por el otro a la red local (router o switch); y d) en el segundo puerto USB el teclado y ratón inalámbricos. He preferido conectar el cable de conexión a red local en previsión de problemas a la hora de reconocer el adaptador WiFi.
7) Finalmente alimento la tarjeta Raspberry Pi con un alimentador de 5V/1,2A y espero a que algo aparezca por la pantalla del televisor, lo que no tarda mucho en aparecer.
A primera vista, sorprende la calidad y nitidez de la imagen mostrada, y que de acuerdo al televisor, se está proyectando con una resolución de 1920x1080x60p, FullHD.

Selección de los sistemas operativos a instalar

Lo primero que nos aparece en pantalla es un panel con una lista de los sistemas operativos disponibles. Algunos se encuentran en la tarjeta SD y otros están disponibles si disponemos de conexión activa a Internet, distinguiéndolos mediante el icono correspondiente que aparece en la columna de la derecha.
También tenemos la posibilidad de elegir el idioma (pero olvidémonos del español, ya que no aparece) y la configuración del teclado. Otro dato importante que nos aparece es la memoria disponible en la tarjeta SD, y que a medida que vayamos seleccionando los sistemas operativos que queramos instalar se nos irá actualizando el tamaño de la memoria requerida, teniendo en cuenta que no debemos sobrepasar la memoria disponible. En mi caso, utilizando una SD de 8 Gbytes, solo pude curiosamente seleccionar dos sistemas operativos.
No existe opción de seleccionar la salida de vídeo compuesto, ya que siempre queda seleccionada para HDMI. Si pulsamos las teclas 1,2,3 o 4 podremos ir cambiando el modo de selección de pantalla. 1) HDMI, 2) HDMI VGA, 3) vídeo compuesto PAL y 4) vídeo compuesto NTSC.
En este proceso de instalación podemos invocar ayuda online, así como editar los parámetros de configuración de cada sistema operativo elegido.
Pulsando el icono de Install, se iniciará el proceso de instalación y simultáneamente nos irá presentando de forma amena el progreso del mismo, para terminar con un panel en donde se listan los sistemas operativos instalados, dándonos opción a elegir el sistema que se ejecutará. Si no hacemos nada, este elección es persistente entre arranques, por lo que al cabo de un tiempo se ejecutará el último sistema operativo que hayamos arrancado. Aunque siempre cabe la posibilidad de elegir otro, que pasará a ser el nuevo sistema a arrancar por defecto.
Y eso ha sido todo. Tengo una tarjeta Raspberry Pi v2 funcionando perfectamente y dispuesta a hacerle todo tipo de perrerías. En la siguiente entrada sobre Raspberry Pi hablaré del modo de comunicarme con el exterior a través del conector de 26 pines con interfaces especializados (SPI), I²C, I²S, UART o directamente con los pines del GPIO.

Enlaces

- Linux distributions that can run on an MK802 Mini PC
- Raspberry Pi
- Building Ubuntu for the Raspberry Pi
- Raspberry Pi Wiki
- Raspbian
- GitHub NOOBS