Controllare da remoto una Raspberry Pi

Di - 9 October 2013 - in
Post image for Controllare da remoto una Raspberry Pi

Per molte applicazioni pratiche non è utile, ed è spesso scomodo, che la Raspberry Pi abbia collegati un monitor, una tastiera ed un mouse per essere utilizzata. Spesso, infatti, basta che sia collegata in rete in modo da controllarla da altri PC attraverso un terminale a caratteri (ma, come vedremo, anche le applicazioni grafiche saranno utilizzabili)

Vediamo come impostare tutto il necessario per il controllo remoto. La guida si riferisce ad una Raspberry Pi con installato Raspbian. Per altri sistemi, in linea di massima, le cose sono uguali. Possono però cambiare i comandi di installazione e la posizione dei file di configurazione. La Raspberry Pi dovrà essere collegata alla stessa rete locale del PC dalla quale la si controlla, possibilmente via cavetto Ethernet (non spiego qui la configurazione delle chiavette WiFi, ma a parte quella il resto non cambia di molto). Gran parte della procedura è fattibile su un qualunque PC Debian, anche non una Raspberry Pi.

Durante la procedura, dovranno essere collegati alla Raspberry una tastiera USB e un monitor HDMI o una TV con ingresso RCA, che a fine procedura non serviranno piú.

Configurazione iniziale

Se siete al primo avvio, ad un certo punto vi troverete in un menu di configurazione a sfondo blu. Se non siete al primo avvio e avete davanti un terminale, fate login e digitate poi il comando

raspi-config

Se invece non siete al primo avvio e avete davanti l’interfaccia grafica, digitate Ctrl-Alt-F1, fate login e date il medesimo comando.

Con le frecce raggiungete la terza voce, “Enable Boot to Desktop/Scratch”, premete invio, e premete di nuovo invio sulla prima voce. Questo disabiliterà l’avvio automatico dell’interfaccia grafica, che non servirà piú, e che potrà comunque essere sempre richiamata col comando startx.

Tornati al menu originale, date invio sull’ottava voce, “Advanced Options”, e nel menu che compare selezionate la quarta voce, “SSH”, dando l’OK per “Enable”. In questo modo attiverete il server SSH, che è il server per accettare connessioni da terminali remoti.

Fatto questo, premete Esc per tornare al terminale.

mDNS

A questo punto, installiamo un programma non fondamentale ma assai comodo: il demone mDNS.

Vediamo prima di cosa si tratta. I PC di una rete, e a maggior ragione quelli di una rete LAN, sono raggiungibili attraverso un indirizzo numerico chiamato indirizzo IP. Nella rete LAN l’indirizzo è di tipo locale (inizia con 192.168 o con 10.0) e i router commerciali in genere lo assegnano ad ogni computer della rete all’accensione del computer stesso, senza necessariamente assegnare ogni volta lo stesso indirizzo allo stesso PC.

Dato che dovremo controllare la nostra Raspberry Pi da remoto, ci servirà ogni volta di sapere il suo indirizzo IP, e ciò è decisamente poco pratico. Per aggirare questo problema, si possono assegnare dei nomi a ogni PC, con un server detto DNS che tiene traccia dell’associazione nome-inidirizzo, ma in genere i router commerciali non hanno questa funzionalità. Ci viene quindi in aiuto mDNS, che è un sistema, detto grossolanamente, grazie al quale un PC, nel nostro caso la Raspberry Pi, annuncia in rete il proprio nome, senza bisogno di un server che ne tenga traccia. Gli altri PC in rete sapranno individuare le macchine che annunciano un nome, e sapranno trovarle se richiesto.

Il nome assegnato alla macchina sarà il suo hostname (quello di default della Raspberry Pi è, molto fantasiosamente, “raspberrypi”) seguito dall’estensione “.local”

La noia è che esistono due tecnologie di questo genere, una Apple (mDNS, appunto) molto supportata da tutti e praticamente standard de facto ed una Microsoft (SSDP), e Windows non supporta la prima. Se quindi dovete collegarvi poi alla Raspberry Pi da Windows, sarà necessario installare i Bonjour Print Services di Apple sul PC Windows in questione.

Il comando per installare il demone mDNS è

sudo apt-get install avahi-daemon

Fatto questo, dando l’OK quando richiesto, digitate exit e staccate tranquillamente tastiera e monitor: non serviranno piú.

Collegarsi da remoto

È il momento di collegarsi alla Raspberry Pi da un altro PC. La procedura differisce leggermente a seconda del sistema operativo dal quale ci collegheremo.

Windows

Windows non supporta drettamente SSH, ma esiste un’utility molto pratica, chiamata PuTTY, che permette di accedere a terminali remoti attraverso diversi protocolli, tra cui appunto quello che ci è utile. Si può scaricare a questo indirizzo (il file da scaricare è putty.exe), e non va installato: basta salvarlo da qualche parte ed eseguirlo. Per accedere alla Raspberry Pi, grazie ad mDNS, basterà scrivere nella maschera del programma “raspberrypi.local” (senza virgolette) come Host Name e 22 come porta, selezionando poi SSH come protocollo. Verrà chiesto, dopo l’ok, il nome utente (che è “pi”) e la password.

Linux

Su Linux basta assicurarsi che ssh sia installato, dal gestore pacchetti. Se non lo è, va installato.

Per il collegamento, a questo punto, sarà sufficiente aprire un terminale sul quale digitare:

ssh pi@raspberrypi.local

per ottenere direttamente il terminale remoto una volta inserita la password.

Mac OS X

Su OS X il programma per ssh è generalmente già installato. Come su Linux, basta aprire un terminale, digitando però un comando leggermente diverso:

ssh -l pi raspberrypi.local

e, una volta inserita la password, il terminale sarà quello della Raspberry Pi.

La grafica

Quanto spiegato finora permette soltanto di accedere alla Raspberry Pi con un terminale a caratteri. Cosa fare per utilizzare le applicazioni grafiche?

Prima di tutto bisogna sapere qual’è il comando che lancia l’applicazione che vogliamo utilizzare, e questo va scoperto ad esempio dalla guida. In genere, è il nome del programma stesso.

Scoperto il comando, se proviamo a darlo sul nostro terminale remoto, questo non funzionerà.

Raspbian, però, utilizza un sistema grafico che si chiama X, molto diffuso tra le varie distribuzioni Linux, che funziona anche via rete attraverso l’SSH. È però necessario che sul computer dal quale ci si collega sia installato lo stesso sistema, o un sistema compatibile. Anche qui le cose differiscono a seconda del sistema da cui ci si collega.

Windows

Windows non integra in alcun modo un sistema compatibile con X. Esiste però un progetto Open Source, Xming, che fornisce un’implementazione molto ben funzionante di X per Windows. Si può scaricare dal sito ufficiale. Una volta installato Xming, andrà avviato prima di aprire su PuTTY.

In PuTTY, oltre a specificare l’indirizzo dell’host come detto sopra, si deve andare nella voce Connection > SSH > X11 del menu a sinistra, e selezionare “Enable X11 forwarding”, specificando 0 come “X display location”.

Linux

Per quanto riguarda Linux, invece, le cose sono ovviamente molto semplici. Per collegarci alla Raspberry Pi, invece del comando SSH semplice, diamo lo stesso comando con l’opzione -X (maiuscola):

ssh -X pi@raspberrypi.local

Mac OS X

Su Mac OS X è necessario installare X11.app, che dovrebbe essere tra i programmi inclusi nel disco di installazione del sistema. Se non lo riuscite ad installare da lí, è disponibile su questo sito. Installato X11, il comando di connessione è analogo a quello per Linux:

ssh -X -l pi raspberrypi.local

Tutti e tre i sistemi, una volta connessi

Fatto il login, diamo il comando (la & è importante):

startx &

premendo poi di nuovo invio per riottenere il terminale. Questo serve ad avviare il server grafico.

In questo modo, lanciando un comando che avvia un programma grafico (ad esempio leafpad, che avvia l’editor di testi) ci si aprirà la finestra del programma in questione, come fosse una finestra locale.

Cambiare hostname

Come abbiamo detto, l’hostname della Raspberry Pi è raspberrypi, e il suo indirizzo mDNS è quindi raspberrypi.local.

Questa cosa può essere molto poco pratica se si è in possesso di diverse Raspberry, e diventa utile dare ad ognuna il suo nome. Inoltre, si può voler dare un nome personalizzato per semplice sfizio.

Il nome della macchina può essere cambiato con il comando hostname seguito dal nuovo nome. Se ad esempio vogliamo chiamare la Raspberry Pi col nome Raven (è il nome della Raspberry Pi su cui ho fatto i test per questo articolo) basterà digitare:

sudo hostname Raven

Tale modifica è però provvisoria. Per renderla permanente va scritta anche in /etc/hostname, per poi eseguire lo script hostname.sh che la imposta dove di dovere:

sudo echo Raven > /etc/hostname
sudo /etc/init.d/hostname.sh start

Abbiamo finito. Ora la Raspberry Pi sarà raggiungibile dall’hostname che abbiamo impostato, scritto in minuscolo, seguito da .local. Dunque, in questo caso, raven.local

Niente male no?

Buon divertimento con la vostra Raspberry Pi, e a presto per qualche applicazione pratica!

Leave a Reply

Lorenzo Breda Articolo scritto da

Studente di Informatica a Roma, si occupa di programmazione web sopratutto lato server, e di accessibilità del web. Utilizza e ama Debian GNU/Linux, e si interessa di fisica, fumetto, trekking e fotografia (gli ultimi due possibilmente abbinati). Collabora con Googlab da aprile 2012.

Contatta l'autore

Previous post:

Next post: