Chi ha letto il mio articolo Klipper: da Raspberry Pi ad Orange Pi avrà letto di quanto fossi entusiasta del mio nuovo Orange Pi Zero 2W, pur avendo dovuto superare qualche difficoltà in fase di installazione. Tuttavia un cambio del mio progetto di stampante 3D mi ha fatto velocemente orientare verso lidi più tradizionali, ovvero un vecchio Raspberry Pi 2B.
Si tratta del display. Ero infatti inizialmente deciso a voler installare sulla mia Enderwire il display della Ender 3 che si collega direttamente alla MCU, o almeno solo provvisoriamente. Ma poi, dando uno sguardo a vari altri progetti, mi è venuta voglia di installare qualcosa di un po’ più “moderno”, sfruttando l’ottimo Klipper Screen.
Ora, le possibilità sono varie: si parte dal display con connessione HDMI, che però necessita comunque di USB o altro tipo di connessione per alimentare lo schermo e gestire il touchscreen. Gli schermi con interfaccia SPI, invece, sono complessi da configurare e collegare ed una volta fatto tutto ci si ritrova comunque con le connessioni GPIO praticamente inutilizzabili. Gli schermi ESP32 comunicano tramite WiFi e sono dispositivi che funzionano anche standalone, ma non mi piace come soluzione perché possono risultare poco reattivi a causa di eventuali lag della connessione. Infine la porta DSI è la soluzione ideale, in quanto con un singolo cavo si collega tutto, schermo, alimentazione e touchscreen, ma qual è il problema? il problema è che Orange Pi Zero 2W anche se dispone di una porta 24 pin identica alla DSI in realtà si tratta di una semplice porta funzionale che permette l’aggiunta di una scheda di espansione che supporta 2 USB, un microfono, un’uscita audio ed un ricevitore IR: a mio avviso completamente inutile.
Il problema è che nemmeno Raspberry Pi Zero 2W dispone della DSI, la porta 24 pin in quel caso è una CSI che serve al collegamento di una RasPi Cam ma non del display.
A questo punto la soluzione migliore per insallare Klipper, nel mio caso, rimane un vecchio Raspberry Pi 2B che mi ritrovo in casa e che dispone, quindi, sia della porta DSI che della CSI e mi consente quindi l’installazione sia del display touch che della camera. Ho fatto un po’ di test per overcloccare al massimo la scheda, ci ho installato, con la semplicità caratteristica di Raspberry Pi, Klipper, Moonraker e Klipper Screen e procedo alla costruzione della mia versione di Enderwire.
Un vecchio Raspberry Pi Zero, voglia di provare Klipper e mi metto al lavoro. La migrazione è semplice ma c’è da studiare, Klipper è molto versatile, ma anche complicato.
Dopo averlo sperimentato per poche settimane mi chiedo subito come abbia potuto fare a meno di Klipper fino ad ora e così penso ad un upgrade, il vecchio Zero funziona ma è sicuramente anzianotto, e così decido di provare l’Orange Pi Zero 2W, prezzo simile a quello del Raspberry Pi Zero 2W ma ha una CPU più veloce (1.6Ghz contro 1Ghz) ed è disponibile anche in versione 1.5GB… un po’ di RAM in più non guasta.
Una volta arrivato il pacchetto mi rendo conto che non è come Raspberry Pi, dove scarichi il software proprietario, scegli il S.O. e crei la SD, inserendo anche i dati del WiFi per usarlo completamente in modalità headless… c’è invece da smanettarci un po’.
Le prime difficoltà arrivano con l’immagine, quelle che si scaricano anche dal sito ufficiale non funzionano sulla mia versione, mi renderò poi conto che bisogna compilare il firmware e non è un’operazione così semplice e veloce. Invece si trovano online delle immagini già pronte, caratterizzate dalla presenza dell’indicazione nel nome file della quantità di RAM per cui sono compilate… è quella l’immagine giusta. Purtroppo non c’è Mainsail bello e pronto, ma non è un problema, installo Ubuntu Server… e per l’occorrenza scelgo di provare il nuovo Booksworm, che è compatibile con Klipper, Moonraker e Mainsail, il nome dell’immagine per chi se lo chiedesse è Orangepizero2w_1.0.0_debian_bookworm_server_linux6.1.31_1.5gb.img.
Le guide che trovo online però indicano che non è possibile un’installazione headless, al primo avvio Orange Pi va collegato a monitor e tastiera, un po’ mi pento di non aver preso Raspberry Pi. Tuttavia l’informazione trovata online forse era datata, infatti un modo per installare il tutto headless lo trovo! Come già su Raspberry, anche le ultime versioni delle immagini per Orange Pi hanno due file customizzabili prima di inserire per la prima volta l’SD sul micro PC. Si tratta di orangepi_first_run.txt.template ed orangepiEnv.txt! 😀
Accediamo quindi alla root della SD inserendola su un PC o Mac qualsiasi (quello che abbiamo utilizzato per crearla), rinominiamo orangepi_first_run.txt.template in orangepi_first_run.txt ed apriamo il file per modificarlo. Le opzioni sono abbastanza autoesplicative, in particolare andiamo a cambiare / rimuovere il commento alle seguenti opzioni per permettere l’accesso automatico alla rete al primo avvio:
FR_net_change_defaults=1
FR_net_ethernet_enabled=0
FR_net_wifi_enabled=1
# Inserisci qui l'SSID e la password della tua rete WiFi
FR_net_wifi_ssid='MySSID'
FR_net_wifi_key='MyWiFiKEY'
# Se in Italia, modificare
FR_net_wifi_countrycode='IT'
# Se vuoi usare un IP statico (consigliato per installazione headless)
FR_net_use_static=1
FR_net_static_ip='192.168.1.100'
FR_net_static_mask='255.255.255.0'
FR_net_static_gateway='192.168.1.1'
FR_net_static_dns='8.8.8.8 8.8.4.4' #2 entries max, seperated by a space.
In questo modo possiamo avviare l’installazione in modalità headless, perché quando Orange Pi avrà completato le impostazioni iniziali potremo accedere al terminale tramite un client SSH (Putty ad esempio).
Espelliamo quindi la SD, inseriamola in Orange Pi ed attendiamo qualche minuto prima di la connessione SSH. Se avremo indicato un indirizzo IP statico, come suggerito, potremo collegarci direttamente a quest’ultimo. In caso contrario dovremo scoprire prima quale indirizzo IP è stato assegnato da DHCP al nostro Pi attraverso l’interfaccia web del router. I dati di accesso predefiniti sono username: orangepi, password: orangepi.
A questo punto la prima cosa da fare sarà creare una nuova utenza con il comando: sudo adduser username, dopodiché assegneremo la nuova utenza al gruppo sudoers attraverso il comando: sudo usermod -aG sudo username. Possiamo quindi scollegarci dall’utenza predefinita e ricollegarci con la nostra nuova utenza.
Disattiviamo il login automatico dell’utente orangepi, modificando il file override.conf: sudo nano /lib/systemd/system/[email protected]/override.conf rimuoviamo la parte –autologin orangepi e riavviamo.
Ora potremo cancellare l’utenza predefinita con il comando sudo deluser --remove-all-files orangepi e se vi fosse restituito un un processo in funzione lanciato dall’utente orangepi, procediamo a killarlo con kill -9 PID dove PID è il process ID indicato nel messaggio di errore.
Come da buona norma, effettuiamo un aggiornamento completo del sistema e riavviamo: sudo apt update && sudo apt dist-upgrade -y && sudo apt autoremove -y && sudo apt clean && sudo reboot.
Al riavvio potremo effettuare la prima configurazione del sistema attraverso l’apposita utility, accessibile con il comando sudo orangepi-config.
Procediamo quindi con le seguenti scelte:
System > Avahi > Enable system announce in the network;
Personal > Timezone > Europe > Rome;
Personal > Locale > selezioniamo it_IT.UTF-8, Ok e selezionare quest’ultima come “default locale for the system environment”, se preferite invece, come me, che la lingua di sistema resti l’inglese non eseguite questo passaggio;
System > Firmware > Run apt update & apt upgrade ed accettiamo di riavviare al termine.
Per permettere il collegamento tramite indirizzo url modifichiamo l’hostname dell’Orange Pi, lo chiameremo ad esempio klipper:
sudo nano /etc/hostname modifichiamo quello attualmente impostato in klipper appunto, CTRL+x per uscire, Y per confermare la sovrascrittura del file.
Modifichiamo anche il file hosts in modo da riflettere il nuovo hostname:
A questo punto riavviamo per rendere effettive le modifiche: sudo reboot.
L’installazione di Klipper
Svolti questi passaggi possiamo passare all’installazione di Klipper vera e propria. Installiamo prima di tutto Git:
sudo apt-get install git -y
Installiamo poi KIUAH:
cd ~ git clone https://github.com/th33xitus/kiauh.git ./kiauh/kiauh.sh
Da questo punto in poi l’installazione è abbastanza autoesplicativa, basterà effettuare i passaggi al punto 1 per Klipper, 2 per Moonraker e 3 per Mainsail oppure 4 per Fluidd. Il resto dell’installazione è comune a tutte le altre piattaforme.