Costruzione di un nodo con Alix board

alix3d2 Sfidando la mia accidia perenne, cercherò di spiegarvi come assemblare un nodo “a 2 vie” con l’Alix board di PC-Engines. Poiché molti concetti sono simili, se non identici, a quelli espressi nella guida “Costruzione di un nodo con Ubiquiti Routerstation“, eviterò di ripeterli nuovamente, per cui, se qualcosa non vi è chiara, provate a dare un’ occhiata anche lì. Visto che esistono diversi modelli di Alix board, anche con formati diversi, premetto che mi riferisco esclusivamente ai modelli 3d1/3d2/3d3.

Materiale occorrente:

  • Alix board 3d1/3d2/3d3
  • Power supply 7~18 Volt
  • PoE Injector
  • Scatola stagna Wrap-Box by mini-box
  • 2 schede Wi-Fi miniPCI
  • 2 UFL Hirose / IPX to N Jack Female Pigtail
  • Cavo CAT5 patch
  • Null modem cable DB9 F (opzionale)
  • Lettore compact flash

Uno suardo all’Alix board (3d2)

La piattaforma Alix nasce come naturale evoluzione (e rimpiazzo) della WRAP board (Wireless Router Application Platform). Entrambe le piattaforme sono state sviluppate dalla PC-Engines, che vanta ormai oltre 20 anni di esperienza nel settore embedded. Come potete intuire, l’Alix board viene prodotta in diverse varianti e, non volendo/potendo descriverle tutte, mi limiterò a parlare del modello 3d2 che, secondo il mio punto di vista, è quello che più si adatta al nostro scopo. Le principali caratteristiche di questa board sono:

  • CPU: 500 MHz AMD Geode LX800
    • Full x86 compatibility
    • Cache 64KB instruction + 64KB data + 128KB L2
    • Integrated crypto accelerator 128-Bit AES (CBC/ECB)
    • True Random Number Generator
  • DRAM: 256 MB DDR (400 MHz)
  • Storage: CompactFlash socket
  • I/O: DB9 serial port, dual USB
  • Connectivity: 1 Ethernet channel (Via VT6105M 10/100)
  • Expansion: 2 miniPCI slots, LPC bus for adding serial ports, ISA style I/O, GPIO
  • Power: DC jack or passive POE, min. 7V to max. 20V
  • Customer options:  I2C bus, buzzer, RTC battery
  • Board size: 100 x 160 mm
  • Firmware: tinyBIOS

Tanta roba, vero? La caratteristica più importante di questa board, anche se per qualcuno può sembrare scontata, è  senza dubbio l’architetturaamd-lx800 x86. Questo vuol dire che abbiamo di fronte un sistema embedded in grado di far girare, direttamente, il software “as is” , ovvero senza cross-compilare alcun chè. (Gira anche Windows icsppì? Si, solo sulla 3d3!) Un’altra cosa da evidenziare è l’accelerazione hardware per la crittografia AES a 128 bit, grazie a questa feature, se la vostra rete WiFi è crittografata, non solo non stresserete la povera CPU, ma beneficerete di latenze migliori. Infine, la cospicua quantità di RAM (superflua per i nostri scopi) e la presenza del socket compact flash, che ci permette di avere il massimo della flessibilità in termini di storage, rendono questo prodotto estremamente versatile… e caro! Il costo di queste piattaforme, infatti, si aggira intorno ai 100 euro (iva esclusa, naturalmente) e vanno necessariamente completate con una compact flash, preferibilmente SLC. Personalmente, se non vi occorre tutta questa flessibilità, mi sento di consigliarvi la Routerstation di Ubiquiti che costa poco meno della metà (circa 45 euro) ed è pronta all’uso.

La compact flash

Come potete notare, questa board non integra nemmeno uno “sputo” di memoria flash usabile e, anche per applicazioni minimali, sarete costretti a dotarvi di una compact flash esterna.CF_SLC Certamente non è il costo a infastidire, ormai le CF si trovano a meno di 5 euro/GByte, però chi ha un po’ di esperienza (leggi: la roba si rompe) sa bene che, meno “fronzoli” ci sono, meglio è! Come per i nodi, anche per la CF vale l’assioma di Capitan Findus, ovvero, ci sono quelle fatte bene (SLC) e quelle fatte male (MLC). Senza dilungarmi troppo sui “come e perché”, che potete tranquillamente leggervi su wikipedia, vi consiglio di usare le economiche MLC esclusivamente con sistemi operativi read-only, quelli che si espandono in RAM(-disk), per intenderci. Per tutto il resto, se volete che la vostra soluzione duri nel tempo e vi garantisca un certo margine di affidabilità, vi consiglio di usare le compact flash di tipo SLC che, oltre ad essere più performanti, garantiscono un ciclo di scritture per cella di gran lunga maggiore delle MLC. Concludo segnalandovi questo utilissimo must-read di PC-Engines.

La scatola stagna

wrapboxQuesta board dispone di una scatola stagna “ufficiale” chiamata Wrap-box e prodotta da mini-box. Come potete intuire dal nome, la scatola fu inizialmente progettata per la “defunta” Wrap board, ma, visto che le dimensioni sono identiche, va bene anche per l’Alix. Avere una scatola “ad hoc” è sicuramente una cosa positiva, fa risparmiare tempo e ci dà la parvenza di un lavoro “fatto bene”, ma lasciatemi fare due appunti. Nonostante le specifiche, questa scatola non è perfettamente adatta al modello Alix 3d3 (il connettore VGA sporge), mentre, per quanto riguarda la tenuta stagna, senza guarnizioni accessiorie (non fornite nel kit), al 90% vi entrerà l’acqua dai connettori N. La Wrap-box, il cui costo si aggira intorno ai 40 euro, è costruita in alluminio e viene venduta in 3 varianti, quello che cambia è semplicemente il numero di fori per i conettori N e RJ45 (1:1, 2:1, 4:2). Come potete intuire, questa soluzione non è molto flessibile. Se un giorno voleste aggiungere un antenna per il MIMO senza scomodare MacGyver, sarete costretti a cambiare scatola (variante). Immaginate cosa accadrebbe volendo cambiare board… Morale della favola: prima di buttarsi a occhi chiusi su soluzioni “dedicate”, pensateci un attimo.

Upgrade del bios

Prima di lanciarci nell’assemblaggio, è caldamente consigliato fare l’upgrade del BIOS, visto che dopo sarà un po’ complicato.nullmodem Certamente è un’ operazione noiosa, ma, in compenso, non è particolarmente complessa. Per i nuovi lotti di produzione, questa operazione potrebbe non essere necessaria, in quanto le board viaggerebbero già con l’ultimo BIOS, ma controllare non guasta! Di seguito trovate alcune semplici istruzioni per upgradare il BIOS della vostra Alix con l’ausilio della porta seriale e una compact flash:

  1. create una compact flash bootabile con FreeDOS seguendo queste istruzioni
  2. scaricate da qui l’ultima versione del BIOS e copiatela sulla CF (senza rinominare i file)
  3. aprite il vostro terminale preferito e settate la porta ad un baud rate di 38400
  4. dopo aver montato la CF sull’Alix, collegate il PC via seriale e date fuoco alle polveri
  5. al boot, osservate la versione del BIOS corrente e valutate se sia da upgradare o meno
  6. ok, è da upgradare! Fate caricare FreeDOS e, appena avrete il prompt, lanciate sb.com
  7. l’utility riconosce i file automaticamente, non vi resta che pazientare un po’
  8. ultimato l’upgrade, riavviate il sistema e assicuratevi che la versione del BIOS sia l’ultima

data3d3Quello che vi ho spiegato è solo un metodo, in realtà ne esiste un altro che usa il protocollo XMODEM e non necessita della compact flash + FreeDOS, ma, ovviamente, non ho voglia di spiegarvelo in questa vita. Un trucco per evitare, eventualmente, tutto questo ambaradan è  confrontare la data di rilascio dell’ultimo BIOS con l’anno di produzione della board (0838 = 38esima settimana del 2008).

Istallazione del sistema operativo

CFreaderCome ho detto prima, questa board non dispone di memoria flash integrata, quindi non ci resta che istallare il sistema operativo sulla compact flash. In realtà si potrebbe usare anche un supporto esterno USB, ma non credo sia una soluzione ottimale. Il modo più veloce per avere un nodo operativo è, senza dubbio, caricare sulla CF l’immagine del sistema operativo già pronto. Per fare questo vi occorre un lettore CF, ovviamente, e una utility per la scrittura a basso livello. Sui sistemi Unix-like potete usare direttamente dd, mentre su Windows sarete costretti ad usare una utility di terze parti come, ad esempio, physdiskwrite. A questo punto non vi resta che scaricare un’immagine compatibile con x86, ad esempio OpenWRT 8.09.2 , e scriverla sulla compact flash. Attenzione: le utility per la scrittura raw vanno usate con molta cautela, se, per caso, sbagliate ad indicare il device di destinazione, finirete per sovrascrivere qualche altra unità disco!

L’assemblaggio

Trattandosi di kit su misura, l’assemblaggio è assai banale, per cui mi limiterò a ricordarvi che la tenuta stagna dipende anche da voi, quindi occhio alle guarnizioni! Nell’articolo sulla Routerstation (paragrafo “Assemblaggio”) potete trovare altre “dritte” che non mi va di ripetere, ovviamente. Lo stesso discorso vale anche per le schede mini-PCI.

Le foto

wrapbox

1

alix3d3

2

Alix3d3mani

3

Approfondimenti sulla piattaforma Alix

Chi volesse approfondire, oltre a leggersi la documentazione integrale di PC-Engines, può visionare delle comode slide del corso di board embedded Alix, a cura del EmsysLab (Embedded systems Laboratory) del CSP di Torino.

5 commenti su “Costruzione di un nodo con Alix board
  1. Antonio scrive:

    Ciao Darkman, ho provato la procedura (freedos2.zip) per creare una CF bootabile con freeDOS su Windows 7, ma purtroppo non funziona. Su XP invece funziona perfettamente. Non che sia essenziale, però sai come farlo funzionare anche su Win 7? tnx

  2. Darkman scrive:

    In effetti su win7 qualche problema lo da. In alternativa puoi usare HP USB Disk Storage Format Tool – v2.1.8 (lo trovi nella sezione stuff) per creare la CF bootabile con freeDOS. Comunque, appena ho 10min liberi, aggiornerò l’articolo con questa nuova procedura che, tra l’altro, è meno rognosa delle altre.

  3. luca grandi scrive:

    ho installato freedos ma oltre a lo non vado … ho messo sulla cf anche la cartella con i driver della alix 3d3 … ma niente … mi daresti qualche sugerimento??
    Ho bisogno di installare win xp.

    Grazie

    Luca

  4. Darkman scrive:

    Boota da usb l’installazione di xp.

  5. Henry scrive:

    Guida molto utile e interessante. Complimenti

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

*

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>