Hacking Parrot Bebop 2

Il bebop di Parrot è una piattaforma molto interessante per a sperimentare con i quadricotteri. Si tratta di un drone che lascia ampio spazio al modding, a patto di tenere in conto qualche caduta si può facilmente personalizzare praticamente qualsiasi cosa.

Questo articolo vuole essere il punto di partenza ideale per chi vuole capire i meccanismi di funzionamento di un Parrot Bebop 2. Puoi leggerlo per intero per avere un quadro generale dell’argomento o puoi scorrere direttamente al paragrafo di tuo interesse quando cerchi qualcosa in particolare. In entrambi i casi potrebbe essere una buona idea tenerlo tra i preferiti.


Bebop filesystem

Il Parrot Bebop 2 è controllato da ARDrone3, un sistema operativo su base Unix (Android nello specifico) adattato all’uso sul velivolo. Le funzionalità del sistema operativo possono essere controllate direttamente modificando i file di configurazione così come attraverso l’SDK Open Source messa a disposizione da Parrot.

Il file system del Bebop è accessibile via telnet e via FPT, vedremo come nei prossimi paragrafi. Di seguito alcuni file e cartelle interessanti ai fini dell’hacking:

  • data/ftp – la cartella è accessibile via FTP, contiene solo una cartella (internal_000) contenente principalmente dati e log relativi ai voli
  • data/dragon.config – il file gestisce i parametri di volo con FreeFlight
  • etc/init.d – una cartella con tutti gli script di startup per la configurazione del sistema e della sensoristica di bordo
  • www – una documentazione riguardo il funzionamento di ARDrone3, il file non è accessibile direttamente via browser perché il device non ha un server web attivo.

 

SkyController filesystem

Con il controller la situazione è un poco più complessa. Anch’esso è basato su una versione obsoleta di Android ed esegue FreeFlight per il controllo del mezzo. Non c’è accesso telnet ed FTP al sistema, quindi è praticamente una BlackBox priva di documentazione tecnica. Naturalmente c’è un workaround, altrimenti questo paragrafo sarebbe inutile: il sistema è accessibile via ADB come qualunque dispositivo Android.

Con la versione 1 abbiamo più liberta di movimento, grazie alle porte HDMI/USB si può prendere il controllo del sistema con monitor e mouse. Lo SkyController 2 invece non ha nessuna porta HDMI, si può accedere solo ad uno streaming video in tempo reale con VLC e un’adattatore usb/ethernet, puntando all’IP del controller.

 

Console access

Lo strumento principe per modificare i file di configurazione del Bebop 2 è la console. Puoi avere accesso ad un terminale unix via telnet. Connetti un PC/MAC alla rete wifi generata dal bebop e utilizza questo comando:

Adesso sarai in grado di eseguire i classici comandi UNIX sul sistema operativo del drone. Ad esempio puoi iniziare a dare un’occhiata al filesystem con questo comando:

Ti ricordo che il filesystem è montato in modalità di sola lettura, questo significa che non puoi modificare nulla. Per iniziare il modding basta questo comando:

Ovviamente da qui in avanti serve la massima accortezza. Hai accesso al sistema in tutte le sue parti e di conseguenza una modifica sbagliata potrebbe portare al brick, ovvero potrebbe rendere inutilizzabile il device.

FTP access

Un altro modo per accedere ai file del sistema è il protocollo FTP. Basta puntare un client come FileZilla all’IP del bebop per esplorare il contenuto della cartella /data/ftp. Se ti piace invece smanettare con la riga di comando basta questo comando:

L’accesso FTP è comunque molto ristretto, puoi ovviare all’inconveniente modificando il file /etc/inetd.conf aggiungendo questa riga:

Ora dal prossimo reboot connettendosi alla porta 71 invece che alla canonica 22 avrai un accesso completo in lettura e scrittura.

 

 

Debug mode

Quando si modificano alcuni parametri o si avviano determinati script è meglio avere in console un resoconto più accurato di quanto avviene nel sistema. La modalità Debub viene utilizzata dagli sviluppatori Parrot per questo motivo, si attiva con questo comando:

Le configurazioni di questa modalità sono contenute nel file

 

Una funzione parecchio interessante del debug mode è la blackbox, che prevede la registrazione di tutti i dati provenienti dai sensori in un file salvato nel path /data/ftp/internal_000/blackbox.

 

USB Networking

E’ possibile accedere al sistema anche tramite la porta USB. Basta attivare l’USB Networking con il seguente comando:

Il Bebop sarà sempre accessibile all’IP 192.168.43.1. Questa modalità è anche attivabile con una breve pressione del tasto di accensione dopo aver connesso la porta USB del PC/MAC a quella del drone.

 

 

GPS managemant

La configurazione del GPS è contenuta nel file di configurazione/etc/gps_config.txt . Se sei interessato a monitorare in real time l’output del GPS basta lanciare il comando:

 

Sensors managemant

Per un test generale di tutti i sensori a bordo del Bebop2 c’è uno script apposito:

Con la giusta opzione puoi gestire l’output di uno specifico sensore e modificare il modo in cui i dati letti vengono esposti. Tutte le opzioni disponibili sono documentate nell’help dello script.

 

 

PUD Files

Quanto accade durante ogni sessione di volo viene registrato in files disponibili al path /data/ftp/internal_000/Bebop_Drone/academy . I file sono dei log in formato json, semplici da leggere ma completi di ogni dettaglio.

Con questi file puoi fare praticamente di tutto, qualche idea:

 

BLDC Test
All’interno della cartella /usr/bin trovi anche il file BLDC_Test_Bench che ti consente di effettuare una serie di test per la verifica del corretto funzionamento dei motori.

  • Slow motion – in questa modalità due motori ruotano in senso orario mentre altri due in senso antiorario. Se tutto funziona come dovrebbe, almeno sul piano teorico, in questa modalità il drone non deve effettuare nessuna rotazione/traslazione.
  • Calling Elvis – in questa seconda modalitò puoi far . . . Cantare i motori del tuo drone. Non ci credi? Prova questo comando e goditi il grande Elvis:

Oltre questi due casi particolari ci sono altri test diponibili con la suite BLDC. Per averne un’elenco dettagliato basta lanciare il relativo help con il seguente comando:

 

UART
Se l’hacking al tuo Bebop2 dovrebbe andare davvero male, un cavo UART può salvarti dal brick. Si tratta di un cavo che sfrutta 3 pin diretti sulla scheda madre (RX,TX,GND) del drone per un’accesso seriale al sistema.

 


 

Adesso hai tutti gli strumenti per hackerare un Bebop 2 e fargli fare praticamente qualsiasi cosa. Se hai qualche progetto in corso condividilo . . . nell’ottica dell’open source è sempre interessante prendere idee e spunti dal lavoro altrui.

 

Questo articolo è stato pensato per essere aggiornato regolarmente, quindi con il tempo troverai correzioni, migliorie e aggiornamenti.