Collegare un Raspberry pi zero ad un pc tramite ssh sulla porta USB
Qualche giorno fa mi sono ritrovato a dover progettare un dispositivo headless (ovvero senza display e senza periferiche di input) basato su un Raspi (abbreviativo di Raspberry Pi) zero [vedi immagine sotto], che, come è noto, non possiede porte ethernet “fisiche”, ma solo 2 porte micro USB (di cui una solo per l’alimentazione), una micro HDMI, le due porte proprietarie per la Raspi cam e per il display ed i classici GPIO di tutti i Raspberry, nient’altro.
Come fare, quindi, per poter stabilire una connessione SSH (Secure SHell, ovvero un terminale remoto) con il mio pc Windows? Fortunatamente il Raspi zero possiede comunque una scheda di rete, integrata nel SoC, che permette di usare sulla porta USB disponibile una connessione di rete (anche ad internet, volendo).
Ecco i passi necessari per riuscire a stabilire una connessione SSH tra il Raspi zero ed un pc:
- Flashare l’ultima versione di raspbian (è il sistema operativo ufficiale supportato dal raspberry, è basato su Debian, una distro Linux)
- scaricate raspbian qui, troverete 2 versioni: una completa ed una senza l’interfaccia grafica, scegliete quella che volete. Dovrebbero essere 2 file: un archivio zip ed un file di una immagine del sistema operativo.
- scaricate Etcher (è il migliore burner di immagini che conosca), serve a formattare correttamente la scheda microsd del raspberry ed a caricarci il sistema operativo.
- con Etcher selezionate la vostra scheda sd ed il file zip di raspbian (non serve decomprimerlo), ed eseguite la scrittura (dovrebbe impiegarci circa 10 minuti).
- Estrarre e reinserire la scheda sd, dato che Etcher la smonta in automatico una volta terminata la formattazione.
- Adesso dovremo modificare alcuni file presenti nella cartella “boot” della scheda micro sd per convincere il Raspi zero ad usare la porta USB come una ethernet:
- selezionate il file cmdline.txt e dopo la parola rootwait aggiungete uno spazio e copiate la stringa ` modules-load=dwc2,g_ether ` esattamente così com’è (non ci deve essere lo spazio dopo la virgola). In questo file i separatori sono gli spazi bianchi, assicuratevi che sia tutto su una sola linea (disattivate il “word wrap” del blocco note)
- selezionate il file “config.txt”, dopo l’ultima riga andate a capo e copiate la stringa
dtoverlay=dwc2
(in questo file i separatori sono i caratteri “newline”) - Adesso dobbiamo abilitare l’SSH sul Raspi, dato che dalle ultime versioni, per motivi di sicurezza, è stato disabilitato di default. Per farlo andate sempre nella cartella di boot e create un file SENZA ESTENSIONE chiamato ssh. Questo file verrà cancellato al primo avvio del Raspi e serve a riabilitare la connessione SSH lato Raspi.
- Bene, lato raspberry abbiamo finito, adesso è il momento di metterlo in comunicazione con Windows:
- installate i servizi di stampa Bonjour (servono per la comunicazione ssh). Li trovate qui.
- Inserite la scheda sd e collegate il raspberry tramite la porta USB, date tempo al Raspi di avviarsi (circa 90 secondi), aprite putty (che trovate qui) e nella barra indirizzo digitate
pi@raspberrypi.local
assicurandovi di aver spuntato “ssh” sul radio button e avere selezionato la porta 22.
- Adesso possono succedere 2 cose:
- Vi si apre il terminale del Raspi con l’utente pi (se è la prima volta che avviate il raspberry e non avente modificato nient’altro la password è
raspberry
) - Putty vi restituisce una schermata di errore come questa
- Vi si apre il terminale del Raspi con l’utente pi (se è la prima volta che avviate il raspberry e non avente modificato nient’altro la password è
Nel caso di errore preparatevi perchè c’è parecchio da smanettare tra driver e windows che fa lo sgargiullo, procediamo con ordine.
-
Aprite la “gestione dispositivi” di windows
-
Verificate che non ci sia un dispositivo non riconosciuto, viene segnalato da un triangolo giallo di errore.
-
Se si verifica proviamo la prima strada:
- click destro sul dispositivo>
- aggiorna driver>
- cerca nel computer>
- scegli da un elenco di driver disponibili>
- sul lato sinistro selezionate microsoft>
- sul lato destro selezionate dispositivo RNDIS e cliccate ok
Se siete fortunati questo dovrebbe bastare a correggere i driver e far riconoscere il Raspi come dispositivo USB Ethernet/RNDIS Gadget.
Se neanche questo basta usiamo driver alternativi.
Scaricate questo pacchetto, decomprimetelo, poi ripetete la procedura precedente con alcune modifiche:
- gestione dispositivi>
- click destro sul dispositivo>
- aggiorna driver>
- cerca nel computer>
- selezionate la cartella che avete appena decompresso ed installate i driver.
Adesso dovremmo esserci.
NB: occhio che Windows (soprattutto il 10) è un birbantello e può essere necessario ripetere l’installazione dei driver.
Bene! adesso ripetete la procedura di log in con putty e dovremmo essere a cavallo!
Happy Hacking!
Federico Giardini