Piero V.

Orange Pi Zero e boot USB

Di recente ho comprato una Orange Pi Zero, versione da 512MB di RAM e flash NOR saldata.

Il mio obiettivo è rendere domotico il basculante del garage, ovvero permetterne l’apertura tramite un bot Telegram. Negli anni ho visto persone far svolgere funzioni simili ad Arduino o a schede di sviluppo simili, però sono troppo poco potenti per gestire un bot Telegram, e comunque una Orange Pi Zero, con tanto di spese di spedizione, è più economica di un Arduno ufficiale.

La scelta della versione più potente è dovuta principalmente al fatto che dopo l’esperienza che ho avuto con la Raspberry, preferisco evitare le micro SD. Tuttavia ne serve comunque una per un unico boot. L’alternativa è avere un programmatore di flash NOR, che penso sia molto più difficile da avere già in casa.

Oltre alla scheda micro SD, sarà necessario procurarsi una versione con kernel mainline di Armbian. Potete scegliere indipendentemente Debian (disponibile scegliendo other options) o Ubuntu. Le versioni con il legacy kernel non vanno bene perché non rilevano la flash.

Una volta procurato il file 7z, bisogna estrarre il file .img e scriverlo direttamente sulla SD: sui sistemi Unix-like potete usare dd, oppure altri tool, per esempio nel caso di GNOME, l’utility dischi.

A questo punto ci sarà il boot di Armbian, vi chiederà di cambiare password di root e di creare un utente. Visto che questa configurazione non andrà mantenuta, potete evitare di fare il reboot, ma passare direttamente all’installazione dei tool per scrivere la memoria flash:

apt update
apt install mtd-utils

A questo punto è necessario procurarsi (un’immagine) U-boot: se volete, potete usare la mia generata 10 giorni fa direttamente dal repository ufficiale: u-boot-sunxi-with-spl.bin (codice sorgente, comprensivo di configurazione).

Altrimenti, se potete compilare la vostra immagine personalizzata. Basta scaricare il codice sorgente dal repository ufficiale e procedere con la configurazione:

make orangepi_zero_defconfig
make menuconfig # Per personalizzare
make -j4

Personalmente nella configurazione, da quanto ricordo, ho solo abilitato Boot media → SPI flash.

I tool per la compilazione dovrebbero già essere tutti presenti, al più mancano gli header di ncurses, necessari per il menuconfig.

In ogni caso una volta ottenuta un’immagine u-boot, va scritta, dando questi comandi da root (fonte):

flash_erase /dev/mtd0 0 128
flashcp u-boot-sunxi-with-spl.bin /dev/mtd0

Fatto anche questo passaggio, si può spegnere la Orange Pi e toglierle la micro SD per sempre.

Per preparare un media USB su cui tenere l’OS, basta ripetere lo stesso identico passaggio che si era fatto per scrivere la micro SD, ma questa volta scrivendo una chiavetta o un hard disk.

L’importante è, ancora una volta, usare Armbian con kernel mainline: queste immagini, infatti, sono già dotate dei vari script per eseguire il boot tramite u-boot. Provando a collegarsi all’interfaccia UART della schedina, si può infatti notare che di default l’u-boot della flash abilita le periferiche USB e cerca nelle varie partizioni se esistono degli script per eseguire il boot. Quindi per fortuna tutto funziona senza bisogno di cimentarsi in difficili configurazioni.

La cosa bella di Armbian è che, diversamente da Raspbian, mantiene i repository ufficiali della distribuzione su cui si basa, e mette i propri repository solo per il kernel e i firmware della scheda su cui gira.

Quindi, io ho deciso di bloccare il kernel e i vari pacchetti correlati (basta eseguire armbian-config da root, o con sudo), dopodiché ho eseguito l’upgrade da Jessie a Stretch senza trovare alcun intoppo.

3 commenti