Non si contano i modelli di telecamere IP di decine di produttori diversi, più o meno conosciuti, oggi disponibili sul mercato. Alcune di esse, tuttavia, utilizzano protocolli proprietari, altre – pur essendo ad esempio compatibili ONVIF – dopo qualche tempo non ricevono più aggiornamenti e sono abbandonate dalle aziende che le hanno realizzate. OpenIPC è un progetto che mira a offrire un firmware aggiornato e sicuro per le videocamere basate su SoC ARM e MIPS.
Il firmware di OpenIPC va a sostituirsi a quello originale del produttore permettendo di aggiornare una telecamera IP non più supportata, che comincia a sentire il peso del tempo oppure che, semplicemente, risulta poco versatile da configurare e gestire.
Tutto il software alla base del progetto OpenIPC è rilasciato sotto licenza aperta MIT: ciò significa che gli utenti possono usarlo gratuitamente e per qualunque scopo, applicando eventualmente modifiche sul codice sorgente stesso.
OpenIPC: dare nuova vita alle telecamere IP con la sostituzione del firmware
Il progetto OpenIPC nasce per riconsegnare nelle mani di ciascun utente la libertà di personalizzare i dispositivi acquistati e personalizzarne il funzionamento senza restrizioni. Gli autori sottolineano che l’intero ecosistema è aperto, sottraendo gli utenti finali dalla logica del software proprietario che impedisce di comprendere nel dettaglio, se non effettuando pesanti di attività di reverse engineering, come funziona ciascuna telecamera IP e quali dati raccoglie davvero.
Installando il firmware OpenIPC, è possibile trarre vantaggio dall’archiviazione cloud IPEYE esterna, attivare lo streaming video su YouTube e Telegram, creare tunnel virtuali (VPN) per proteggere meglio i flussi audio-video, utilizzare proxy SOCKS5. Il protocollo SOCKS (Socket Secure) è un protocollo di rete che funge da intermediario tra un client e un server, consentendo al client di instradare il proprio traffico attraverso il server. È utile in termini di supporto per l’autenticazione, instradamento del traffico, sicurezza, accesso remoto e bypassing di restrizioni geografiche.
In seno a OpenIPC sono nati anche “progetti satellite” che aiutano gli utenti a gestire al meglio le telecamere montate su un drone, sui caschi da cantiere, sugli strumenti di rilevamento, nelle apparecchiature per la ricerca medica, per la pesca subacquea e così via.
In passato, il firmware OpenIPC era compatibile solamente con i SoC prodotti da HiSilicon. Oggi, tuttavia, il supporto risulta notevolmente esteso: basti pensare che il progetto consente di gestire telecamere basate su chip a marchio Ambarella, Anyka, Fullhan, Goke, GrainMedia, Ingenic, MStar, Novatek, SigmaStar, XiongMai e si prevede che la lista sia significativamente ampliata nel prossimo futuro.
Come installare OpenIPC sulle proprie telecamere
Ad oggi, purtroppo, non esistono ancora telecamere IP che montano il firmware OpenIPC per impostazione predefinita. A seconda delle telecamere IP che si posseggono, è possibile valutare l’eventuale aggiornamento del firmware applicando OpenIPC. L’installazione del firmware su una videocamera IP richiede diversi passaggi ma i possibili metodi sono essenzialmente due.
Metodi di installazione disponibili
- Utilizzo di Coupler. Il progetto Coupler rende disponibili immagini firmware che possono essere installate utilizzando i meccanismi di aggiornamento integrati nel software fornito da molte telecamere IP. In questo caso non si utilizzano trucchi o “vie traverse”: l’aggiornamento del firmware avviene dall’interfaccia del produttore della videocamera.
- Flashing con U-Boot. Questo metodo interrompe il normale processo di avvio del firmware del fornitore e indica invece di caricare il firmware OpenIPC scrivendolo nella memoria flash del dispositivo in sostituzione del firmware originale. L’approccio richiede l’apertura del case o involucro della telecamera per collegare un adattatore UART alla porta seriale/debug interna. Un adattatore FTDI USB TTL è acquistabile anche su Amazon Italia.
Installare il firmware OpenIPC con Coupler
Nella pagina GitHub dei rilasci, bisogna innanzi tutto cercare il firmware adatto alla telecamera IP che si desidera aggiornare. Gli sviluppatori suggeriscono di verificare l'”etichetta” che descrive il firmware in uso sul dispositivo ed estrarre la corrispondente System version. Ad esempio, supponendo che il firmware originale della telecamera sia V5.00.R02.000059A8.10010.040400.0020000
, il dato d’interesse è 000059A8
(si chiama Device ID). La stringa così ottenuta va cercata nell’elenco pubblicato sulla pagina GitHub.
La System version può essere estratta dall’interfaccia del software del produttore portandosi nelle impostazioni di configurazione quindi nella sezione Info, Version o similare. In alternativa, si può ricorrere al software ipctool oppure a IPCam_DMS per Windows.
Molti firmware in elenco (Find your image sensor) sono compatibili con diversi tipi di sensori di immagine (CCD) e devono essere configurati prima di poter effettivamente acquisire immagini o video. Per questo motivo, il Device ID trovato in precedenza riveste un ruolo essenziale.
Eseguire il flashing del firmware
Utilizzando il software specifico messo a disposizione dal produttore della telecamera, il già citato IPCam_DMS o il server Web integrato nella fotocamera (non tutti i modelli supportano gli aggiornamenti tramite browser), si può installare subito il firmware OpenIPC.
Dopo il flashing del nuovo firmware e il conseguente riavvio della telecamera, questa richiederà un indirizzo IP al server DHCP locale. A questo punto, è possibile gestire la videocamera tramite interfaccia Web digitando l’indirizzo IP locale del dispositivo seguito da :85 nella barra degli indirizzi del browser (ad esempio 192.168.1.200:85
supponendo che alla telecamera sia stato assegnato IP 192.168.1.200).
Collegandosi alla telecamera tramite terminale, ad esempio via SSH, si deve digitare firstboot
per eliminare la overlay partition. Si tratta di una parte della memoria di archiviazione del dispositivo che viene sovrapposta (da qui il suo nome) a un’altra parte della memoria, consentendo di apportare modifiche o aggiornamenti senza dover riscrivere l’intera memoria.
Se non fosse possibile configurare il sensore della telecamera tramite interfaccia Web, potrebbe essere necessario accedere via SSH quindi impartire il comando fw_printenv -n sensor
.
Aggiornare il firmware con U-Boot e un adattatore UART
Ciascun SoC utilizzato in ogni telecamera IP, integra la CPU nonché una serie di moduli necessari per il funzionamento del dispositivo. Per vari motivi (tra cui anche il limitato quantitativo di spazio di archiviazione disponibile sulla maggior parte delle videocamere), il progetto OpenIPC attualmente offre firmware separati per ciascun tipo di SoC.
Il primo passo consiste quindi nell’aprire il case della telecamera IP e identificare il SoC da essa utilizzato. Per superare questo scoglio, basta leggere la sigla stampata sul chip collegato al circuito stampato della telecamera oppure servirsi di un software come ipctool.
Per stabilire la connessione UART, è necessario trovare e collegare i pin GND, RX e TX della telecamera all’adattatore. Dopo essersi assicurati che l’adattatore UART funzioni con una tensione operativo di 3,3V, si può collegarlo con il PC quindi usare un emulatore di terminale (va bene anche il conosciutissimo PuTTY) per collegarsi con la telecamera. È necessario specificare, nelle impostazioni del software di connessione, la porta UART corretta (di solito COMx), scegliere Serial, impostare 115200 baud (ovvero bit per secondo) come velocità di trasferimento dati e selezionare None in corrispondenza di Flow control.
Per fare in modo che l’adattatore funzioni a 3,3V spesso è necessario agire su un semplice jumper. In alcuni casi potrebbe invece essere necessario saldare un filo, un resistore da zero Ohm o collegare due contatti con una semplicissima saldatura. Nel caso degli adattatori che supportano solo i 5V, è necessario un convertitore di livello logico aggiuntivo collegato tra l’adattatore e la porta UART della telecamera. Maggiori informazioni sulle modalità di connessione tra PC e telecamera tramite adattatore UART sono pubblicate sul Wiki di OpenIPC.
Accesso al bootloader della telecamera IP
Una volta stabilita la connessione UART con la videocamera, è necessario interrompere la sequenza di avvio per accedere alla console del bootloader. Di solito è necessario premere una sequenza di tasti sulla tastiera del PC in modo da frapporsi tra il caricamento del bootloader e quello del kernel Linux.
La combinazione di tasti da premere varia da produttore a produttore: nella maggior parte dei casi è CTRL+C
; meno spesso Invio
, ESC
o altre opzioni. Il suggerimento sulla combinazione di tasti da utilizzare è di solito contenuto nella schermata di boot della telecamera. Alcune telecamere non offrono invece alcun indizio: in questo caso è bene cercare online.
Non appena si ottiene l’accesso a una riga di comando, significa che si è preso possesso del bootloader della telecamera e si ha pieno controllo su di esso.
Impostazioni di rete e predisposizione di TFTP
Impartendo il comando help
, una volta ottenuto l’accesso alla riga di comando della telecamera, si può ottenere l’elenco dei comandi disponibili. Se, digitando tftp
, si ottiene risposta è già tutto pronto.
Basta collegarsi con la pagina contenente l’elenco dei SoC supportati da OpenIPC, scegliere il chip di proprio interesse quindi cliccare sull’icona Docs. Qui vanno inseriti diversi dati come il tipo e la dimensione del chip di memoria (lo si può rilevare dal registro del bootloader), l’indirizzo IP locale della telecamera, il corrispondente MAC address, l’indirizzo del server TFTP, la tipologia del firmware che si desidera caricare, indicare le interfacce (Ethernet e WiFi) utilizzate dalla videocamera e la presenza o meno di uno slot per le schede di memoria.
Lato telecamera, i comandi ipaddr
, netmask
, gatewayip
e serverip
permettono di impostare i parametri di rete corretti: i primi tre definiscono l’indirizzo IP, la subnet mask della telecamera e l’IP del gateway di rete per l’accesso alla rete locale (di solito è il router). Il quarto parametro corrisponde all’indirizzo IP del server TFTP.
Per scaricare il firmware e caricare OpenIPC, è infatti necessario configurare un server TFTP su un computer collegato alla stessa rete LAN utilizzata per la connessione della telecamera. Su una macchina Linux basta impartire i comandi che seguono per impostare il server TFTP:
sudo apt install tftpd-hpa
sudo sed -i '/^TFTP_OPTIONS/s/"$/ --create"/' /etc/default/tftpd-hpa
sudo systemctl restart tftpd-hpa.service
I comandi seguenti impostano i parametri di rete sulla telecamera IP. Al posto degli indirizzi IP specificati, vanno ovviamente indicati quelli corretti:
setenv ipaddr 192.168.1.200
setenv netmask 255.255.255.0
setenv gatewayip 192.168.1.1
setenv serverip 192.168.1.100
saveenv
Nell’esempio, alla telecamera IP è assegnato l’indirizzo IP privato 192.168.1.200 (verificare da router che non ci siano conflitti con altri dispositivi). Si indica inoltre che, in questo caso, il router gateway di rete ha IP 192.168.1.1. L’indirizzo IP della macchina sulla quale è in ascolto il server TFTP è invece 192.168.1.100.
Backup del firmware originale e installazione di OpenIPC
A questo punto, cliccando su Generate Installation Guide sul sito di OpenIPC, si ottengono i passaggi per creare il backup del firmware originale e installare il nuovo firmware.
È importante attenersi scrupolosamente alle indicazioni riportate. Qualcuno potrebbe ritenere superfluo creare una copia del firmware del produttore. In realtà, è un passaggio che non dovrebbero mai essere saltato. Il firmware originale, infatti, potrebbe essere necessario per ripristinare alcune impostazioni, per l’installazione di alcuni driver o per svolgere ulteriori verifiche.
Applicando tutti i passaggi in modo corretto, la telecamera IP dovrebbe avviarsi con il nuovo firmware. Dopo il primo avvio con il nuovo firmware è necessario pulire la cosiddetta overlay partition. Per sbarazzarsi del suo contenuto, basta digitare ciò che segue nella finestra del terminale e premere Invio:
firstboot
Come abbiamo visto nel caso del flashing con Coupler, anche in questo caso è possibile collegarsi con l’interfaccia Web della telecamera aggiornata con OpenIPC digitando il suo IP e :85
.