lunedì 18 febbraio 2019

SmartMatic A4-210: le famigerate Voting Machine

Dopo litri e litri di mesi di assenza, ritorno a scrivere sul blog di un progetto che sto portando avanti per una scuola delle mie zone.
Ricordate le voting machine del referendum lombardo? Quelle per le quali si sono spesi un sacco di soldi, date poi in comodato gratuito alle scuole una volta "riconvertite" in normali tablet? Ecco quelle.
Rimosso il software e tutti i device per il voto, i signori della Smartmatic hanno installato Ubuntu 16.04 LTS, facendo qualche setup custom, visto le scarse dotazioni dell'oggetto, per renderlo usabile.
A parte gli ovvi problemi di aggiornamento (Ubuntu 16 anche se LTS non è proprio così recente), il problema fondamentale è che un sistema operativo così configuarato non è adatto a un uso scolastico: la tastiera on screen, le applicazioni sviluppate per desktop rendono l'uso macchinoso e quindi molto difficoltoso se si pensa a studenti con qualche disabilità.

L'alternativa Tablet-Friendly

Se si pensa a un device senza tastiera fisica con un touchscreen, l'alternativa a Ubuntu come sistema operativo è abbastanza scontata: Android. Nello specifico, essendo un sistema a 64bit, ho optato per Android-x86, uno dei porting del robottino su x86.

 Preparare USB

Prima di procedere con l'installazione è necessario preparare un supporto USB con l'immagine di installazione. Al momento in cui scrivo è presente nella sezione Download la versione 8.1 RC2 (oreo). Scaricata la .iso, da Windows è possibile utilizzare rufus per scrivere l'immagine su USB. Da Linux invece possiamo tranquillamente utilizzare dd.

Accesso al BIOS

Il device è equipaggiato con efi, per cui si deve predisporre il boot da lì.
Armiamoci di una tastiera usb da collegare, che ci servirà per premere CANC all'avvio e accedere al bios. La password è smart?ecp. Una volta entrati nell'ultima schermata si deve selezionare il boot da EFI.
Una volta lanciata la shell efi, col comando map si dovrebbe vedere, tra le varie voci, quella dell'usb (di solito fs1). Per lanciare il boot:
fs1:
cd \efi\boot\

BOOTx86.EFI
Partirà il bootmanager android che consente l'avvio come Live o l'installazione.

Ecco un video che spiega come fare:


Setup del wifi

La scheda wifi del device (una broadcom) necessita di un file di configurazione aggiuntivo che va copiato in /system/lib/firmware/brcm/
Il file si deve chiamare brcmfmac43430-sdio.txt (come il nome del modulo). Ecco quello originale recupato dall'installazione linux:

#AP6212_NVRAM_V1.0_20140814_WIN8.1
# 2.4 GHz, 20 MHz BW mode

# The following parameter values are just placeholders, need to be updated.
manfid=0x2d0
prodid=0x0726
vendid=0x14e4
devid=0x43e2
boardtype=0x0726
boardrev=0x1101
boardnum=22
macaddr=00:90:4c:c5:12:38
sromrev=11
boardflags=0x00404201
xtalfreq=26000
nocrc=1
ag0=255
aa2g=1
ccode=CN

pa0itssit=0x20
extpagain2g=0

#PA parameters for 2.4GHz, measured at CHIP OUTPUT
pa2ga0=-168,7161,-820
AvVmid_c0=0x0,0xc8
cckpwroffset0=5

# PPR params
maxp2ga0=90
txpwrbckof=6
cckbw202gpo=0x5555
legofdmbw202gpo=0x77777777
mcsbw202gpo=0xaaaaaaaa

# OFDM IIR :
ofdmdigfilttype=7
# PAPD mode:
papdmode=2

il0macaddr=00:90:4c:c5:12:38
wl0id=0x431b

#OOB parameters
hostwake=0x40
hostrdy=0x41
usbrdy=0x03
usbrdydelay=100
deadman_to=0xffffffff
# muxenab: 0x1 for UART enable, 0x10 for Host awake
#muxenab=0x10
# CLDO PWM voltage settings - 0x4 - 1.1 volt
#cldo_pwm=0x4
glitch_based_crsmin=1

#sd_oobonly=1
sd_gpout=0
sd_gpval=1
sd_gpdc=0
Dopo aver creato sulla USB il file di testo con la configurazione della scheda wifi (brcmfmac43430-sdio.txt), ad esempio nella directory /wifi, procediamo a installarlo sul sistema.
Si va in console con Ctrl+Alt+F1.
cd /storage/
dovrebbe esserci una directory con un numero di serie (es F654-DAB8) o un nome che identifica la chiavetta USB (questo dipende dalla chiavetta).
cd F654-DAB8/wifi/
cp brcmfmac43430-sdio.txt /system/lib/firmware/brcm/
reboot
Il Tablet a questo punto si riavvia e tutto dovrebbe funzionare a dovere!