MacOS Sierra e driver CH340/41

Faccio brevemente il punto della situazione in base alla mia esperienza perché chi ha aggiornato a Sierra (come me) le sue macchine MacOS ha potuto sperimentare all’inizio una pletora di Kernel Panic ogni qual volta veniva collegata una scheda ESP8266 ai Mac.

Aggiornare ASSOLUTAMENTE i driver CH34X alla versione 1.3. Le versioni precedenti produrranno reboot continui di Sierra finché non verrà staccato il cavo USB collegato ad un ESP8266. Esistono vari link dove procurarsi l’ultima versione. Eccone ad esempio uno:

https://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver

Rimuovere la versione precedente prima di installare i nuovi driver. In genere si tratta di rimuovere semplicemente da terminale il file usb.kext

Non è più necessario disabilitare la System Integrity Protection sul Mac per far sì che vengano viste le porte usb-serial di Arduino e degli ESP.

Quest’ultima è veramente una bella notizia. Si può ricominciare ad usare tranquillamente la IDE di Arduino senza abbassare la sicurezza del Sistema Operativo.

Linux Mint 18 sul MacBook Bianco

macbook_biancoMi serviva un portatile dedicato per Linux. Solo Linux, senza virtualizzazione né doppia partenza con un altro sistema operativo. Perché non riciclare il mio vecchio MacBook bianco fine 2009? E’ fornito “solamente” di una CPU Intel Core 2 Duo a 2.26 GHz, ma col passare del tempo l’ho dotato di 8 Gb di RAM e di un paio di SSD (rispettivamente 240 Gb e 480 Gb) al posto dell’HDD a piatto rotante originale e dell’ormai (quasi) inutile masterizzatore DVD. Si difende quindi molto bene, anche se confrontato con un attuale portatile di fascia media. Non ha certo le prestazioni di una game machine, ma per un uso “office” va più che bene.

Ho deciso di installarci l’ultima Linux Mint attualmente disponibile, la 18 Cinnamon, probabilmente una delle scelte più indicate per un’installazione desktop ma soprattutto perfetta per chi, come me, non ama molto Unity e tantomeno le ultime GUI Gnome. Come dicevo prima, volevo che la macchina facesse girare solamente Linux in modo nativo e che soprattutto non avesse problemi con l’hardware Apple, principalmente la scheda di rete wi-fi e la telecamera iSight.

Prima di procedere, quando ancora c’e ancora Mac OS installato (ora si chiama di nuovo così a partire da Sierra) è bene fare in modo che il “Dong” classico dei Mac emesso alla partenza venga regolato ad un volume piuttosto basso perché dopo, sotto Linux non sarà più possibile variarne il volume.

L’installazione della Mint è semplice: inserito il DVD della distro in un lettore esterno, nel mio caso, è stato sufficiente far ripartire il Mac con il tasto Alt premuto ed aspettare che il Bios proponesse se partire con Mac OS, la partizione di ripristino oppure Windows (!). Sì, proprio Windows. Ovviamente si trattava del DVD esterno con su Linux, ma tant’è…..

Finita l’installazione, arrivato il momento di far ripartire la distro installata, il Mac si bloccava. Ho dovuto spegnere e riaccendere il portatile e la Mint è partita correttamente. Chiaro però che c’era un problema a fare un “warm reboot” con Linux (reboot da GUI, da terminale che sia). Il problema si presentava molto fastidioso, perché tra l’altro impediva di riavviare in qualche modo da remoto il portatile. Probabilmente qualcosa che non andava tra la funzione del kernel in “reboot.c” e il Mac stesso. Fortunatamente il problema è risolvibile e richiede l’inserimento di un parametro nel file di configurazione di GRUB, il boot manager di Linux. Vediamo come.

Entriamo da terminale nella directory /etc/default ed apriamo con l’editor “vi” il file “grub”

ora modifichiamo la riga contenente GRUB_CMDLINE_LINUX_DEFAULT in modo che contenga:

aggiorniamo GRUB con il comando

e saremo in grado di far ripartire correttamente Linux. Devo dire che questo è un problema lamentato da molti che hanno deciso di togliere Mac OS dal portatile Apple a favore di una distro Linux (mi risulta che anche Linus Torvalds lo abbia fatto sul suo Mac Book Air 🙂 ) e che in alcuni casi viene riferito che il problema sia stato risolto con il parametro “reboot=bios”. Non è comunque il mio caso con questo modello di MacBook.

Per il resto sono piuttosto soddisfatto. I tasti relativi alla luminosità dello schermo funzionano, quelli di regolazione volume idem, la scheda di rete wi-fi ha funzionato al primo colpo e così ha fatto anche la iSight con Skype. Rimane da vedere quanto sarà ottimizzato il consumo della batteria, che dopo 6.5 anni di onorato servizio durava sotto Mac OS ancora circa 3 ore e mezza. Vedremo.

Non mi risulta che Linux, nonostante la Mint utilizzi un kernel molto recente, gestisca in automatico il trim degli SSD (ma potrei sbagliarmi) quindi nel dubbio provvederò a mettere nella crontab utente le chiamate periodiche all’eseguibile “fstrim”.

Mi manca il trascinamento a 3 dita delle finestre presente in Mac OS nel menu Accessibilità che trovo comodissimo quando si usa solo il trackpad; quindi è necessario tenere il dito schiacciato sul pad e muovere per spostare una finestra sullo schermo. Questo mi dà un pò fastidio, ma non è un problema insormontabile.

Inutile dire che con la IDE di Arduino tutto funziona perfettamente 🙂

 

Nel caso si voglia installare una distribuzione più adatta ad agire come server, una RedHat o CentOS 6.x, la versione di Grub è differente (la 1, più vecchia di quella usata dalla Mint) per cui lo stesso comando va inserito nel file /etc/grub.conf in tutte le voci di menu (come da figura). Non esiste un comando update-grub quindi va fatto il poweroff del notebook per poi ripartire. Quando si aggiorna il kernel e quindi viene creata una nuova voce nel menu va aggiunto di nuovo l’opzione reboot=pci.

centos

Arduino IDE e OS X

Sento ancora parlare di problemi di riconoscimento delle schede da parte di computer Apple con la IDE di Arduino, anche dopo aver disabilitato le protezioni messe in atto dalla casa di Cupertino da Yosemite in poi. Per mia esperienza personale devo dire che su 3 portatili che uso non ho avuto problemi provando a disabilitare la S.I.P., mentre il mio glorioso iMac fine 2009 rivitalizzato da diverso tempo con 12Gb di Ram e un disco SSD si dimostra un po’ capriccioso perfino nel riconoscere al volo le schede originali Arduino, figuriamoci i cloni e le ESP8266.

Ripeto che la soluzione migliore a mio parere rimane sempre e comunque quella di lasciare la S.I.P. (System Integrity Protection) di Apple attivata ed installare una Virtual Machine Linux sul Mac. Io personalmente utilizzo la Linux Mint su VMware Fusion,

mint_arduinoma si può tranquillamente utilizzare qualsiasi derivata Ubuntu. Ricordarsi sempre di aggiungere l’utente usato al gruppo “dialout” per garantirgli l’accesso alle porte seriali/USB virtuali create dalle schede. Come ambiente per le VM va benissimo il gratuito Virtualbox, ma ancora meglio VMware Fusion se già lo abbiamo acquistato. Altra cosa da non dimenticare una volta fatta partire la Virtual Machine è di “passare” il controllo dell’interfaccia USB a cui sono collegate le schede dall’host Apple alla VM tramite il menu “Macchina Virtuale”, altrimenti non verrà visto niente. In caso di inserzione successiva alla partenza della VM del cavo USB sarà lo stesso OS X a chiedere a chi si vuole assegnare la periferica.

Un’altra cosa molto comoda secondo me è depositare la cartella degli Sketch su una directory residente in un qualsiasi Cloud, in modo tale da avere codice e soprattutto librerie utente sempre sincronizzate in caso di accesso da più PC, qualsiasi sia il sistema operativo usato. Ovviamente questo tipo di approccio richiede l’installazione di un client per il nostro cloud che generi una cartella sincronizzata locale; l’accesso web non basta.

 

IDE Arduino 1.6.8

arduino_ide

Era da diverso tempo che usavo ancora la versione 1.6.5 della IDE di Arduino (sul Mac) soprattutto perché utilizzando adesso prevalentemente schede di tipo ESP8266 avevo trovato diversi problemi di compilazione con la successiva 1.6.6. Ho prudentemente ignorato la 1.6.7 ed ora ho voluto finalmente provare l’accoppiata 1.6.8 con il nuovo toolkit ESP v. 2.1.0.

Non uso più Windows da anni, neanche al lavoro 🙂 , quindi farò riferimento alla versione per OS X. Consiglio caldamente prima di aggiornare alla versione 1.6.8 di cancellare il contenuto della directory

Macintosh SSD -> Utenti > [NomeUtente] -> Libreria -> Arduino15

ovvero

/Users/[NomeUtente]/Library/Arduino15

per gli amanti (come me) del terminale. Non farlo può portare a problemi di riconoscimento delle schede. Fatto questo scarichiamo dal sito arduino.cc la nuova versione e la copiamo nella cartella Applicazioni al posto della precedente.

Rimettiamo di nuovo il path dove si trovano gli sketch e l’indirizzo dove prelevare i toolkit per le schede ESP2866. Quest’indirizzo si può copiare dal sito GIT

arduino_pref

Fatto questo andiamo nel menu Strumenti -> Gestore Schede ed installiamo il supporto per le ESP8266.

Ho provato a compilare una ventina di sketch diversi realizzati per questo tipo di schede e devo dire che tutto è andato regolarmente. In questi sketch ci sono molte librerie esterne, riferite a vari tipi di sensori, server e client HTTP, UDP e via dicendo. Di tutto insomma, e per fortuna non ho mai avuto problemi. Riguardo i sensori, quando possibile, cerco di preferire le librerie Adafruit, perché sono quelle che in genere mi hanno dato meno pensieri.

L’elenco di schede gestite dal supporto ESP8266 mi sembra piuttosto vasto:

schede

C’è anche l’interessantissima Wemos D1 mini di cui ha già parlato Heron sul suo BLOG. Io sto ancora aspettando pazientemente che me ne arrivi qualcuna dalla Cina , i tempi si sa sono biblici, ma quando arriveranno le proverò come nodi attivi/passivi di domotica. Simpaticissimi i mini shield 🙂

Forse qualcosa bolle in pentola anche riguardo la libreria di accesso diretto a Mysql per ESP8266, con il port di quella per Arduino. Ho trovato qualcosa e dopo aver effettuato delle prove ne parlerò. In conclusione insomma penso di poter adottare con una certa tranquillità la IDE 1.6.8 anche per le compilazioni con schede ESP8266.

OS X El Capitan e la IDE di Arduino

Schermata 2015-10-06 alle 22.10.22

Avendo partecipato al Public Beta Test Program di Apple già sapevo che con l’avvento di OS X El Capitan la IDE di Arduino avrebbe smesso di funzionare, almeno per quello che riguarda i driver di emulazione USB-Seriale che servono per far comunicare il Pc con la scheda. Causa di tutto ciò è il nuovo meccanismo di System Integrity Protection implementato da Apple, che crea nuove restrizioni verso alcune zone del sistema (le directory /System, /sbin e /usr, tranne la /usr/local) anche ad utente elevato con privilegi da sudoer, come di solito si fa in OS X. Lo scopo di tutto questo è senz’altro nobile e condivisibile, aumenta la sicurezza del sistema in generale contro accessi indesiderati e possibili intrusioni di malware ma impedisce comunque il corretto funzionamento di alcune applicazioni realizzate in precedenza che andrebbero “reingegnerizzate” per funzionare con El Capitan.

Una delle vittime è proprio la IDE di Arduino per Mac: i driver FTDI e CHT che servivano per creare delle porte seriali virtuali dal bus USB dei Mac non funzionano più. Al momento attuale la soluzione consiste nel disabilitare questo meccanismo di protezione e adesso vedremo come, anche se io sarei contrario a fare una cosa del genere, non fosse altro perché abbassa il livello di sicurezza di OS X in generale. La mia soluzione temporanea comunque è stata quella di installare una macchina virtuale Linux Mint 17 sotto VMware 8 e usare e programmare da lì le mie schede Arduino. Tra l’altro sotto Linux non c’è bisogno di utilizzare driver aggiuntivi e l’unica accortezza è di aggiungere l’utente che utilizziamo abitualmente al gruppo secondario < dialout > per far sì che possa usare i device seriali-usb creati da Linux. Funziona perfettamente e per adesso preferisco lavorare in questa maniera.

Ad ogni modo per disabilitare la System Integrity Protection bisogna riavviare il Mac tenendo premuti i tasti Command + R finché non si sentirà il suono di avvio.  Saremo entrati quindi in Recovery Mode. Apriamo dal menu Utilities il  terminale e digitiamo:

e poi facciamo ripartire il sistema.

Dando il comando csrutil status avremo come messaggio:

Per ritornare eventualmente sui propri passi è sufficiente ripetere la procedura descritta e dare un comando

per ripristinare la situazione.

 

Per coloro che (come me) avessero gli Arduino Nano cinesi che necessitano dei driver CHT340 segnalo che ho dovuto reinstallarli e solo dopo un reboot del Mac mi sono trovato la seriale accessibile (l’ultima in basso nell’elenco).

Schermata 2015-10-11 alle 17.12.27

 

Ripeto: io preferisco, sperando che sia una situazione comunque temporanea, utilizzare una VM Linux che può essere creata anche scaricando gratuitamente VirtualBox, solo perché in ogni caso (o per deformazione professionale) dò priorità assoluta alla sicurezza del sistema.

Che spettacolo! MacBook del 2006.

macbook

 

Che bello! Un collega di ufficio si è presentato col suo bel MacBook uscito nel febbraio del 2006

(http://www.bit-tech.net/news/hardware/2006/02/15/macbook_pro_upgrade/1)

tirato a lucido e ancora perfettamente funzionante. Non può utilizzare più di 2 Gb di RAM (erano altri tempi) ma Debian 7 non sembra soffrirne troppo. Bella macchina, indistruttibile o quasi. Mi dice Matteo, il proprietario, che ci si sono anche seduti sopra! 🙂