Questo progetto realizza una tastiera USB scriptabile con un Teensy. La scheda emula una tastiera convenzionale, ma con una marcia in più: riceve comandi via seriale, quindi può essere pilotata da un laptop o da una Raspberry Pi. In questo modo si controlla un computer prima dell’avvio del sistema operativo. Si può selezionare il bootloader, modificare le impostazioni del BIOS o interagire con qualsiasi menu pre-avvio, senza una tastiera fisica.
Il problema è comune: si ha una macchina headless, come una Raspberry Pi, e serve una tastiera per la prima configurazione. Spesso non ce n’è una disponibile. Con questo progetto, la tastiera del laptop diventa quella della macchina target. La scheda del progetto descrive il flusso completo, dalla programmazione del Teensy all’uso in rete. Il tutto con componenti economici e software open source.
Come funziona la tastiera USB scriptabile
Il cuore è il Teensy, un microcontrollore con supporto USB nativo. Lo si flasha con lo sketch nella cartella etherkey. Collegato via USB al sistema da controllare, appare come una normale tastiera. La connessione seriale avviene tramite un adattatore USB-to-UART, con TX sul Pin 0, RX sul Pin 1 e GND su GND. In alternativa si usa una Raspberry Pi, che aggiunge funzionalità di rete. In questo modo si può inviare comandi da remoto.
La comunicazione avviene a 57600 baud. Si usa il comando cu per aprire la porta seriale, ad esempio cu -l /dev/ttyUSB0 -s 57600. Il Teensy offre tre modalità operative. La modalità interattiva invia direttamente i tasti premuti sulla console. La modalità comando interpreta la riga come un comando, come SendRaw o Send. La modalità debug mostra informazioni sul carattere ricevuto, incluso il codice ASCII e il keycode USB.
I comandi supportano modificatori come ALT, SHIFT, CTRL e WIN. I tasti speciali si indicano tra parentesi graffe, ad esempio {ENTER} o {F2}. Per i caratteri Unicode esistono sequenze specifiche: UCL per Linux e UCW per Windows. Si usano codici esadecimali a 4 cifre. Questo permette di scrivere caratteri non presenti su una tastiera italiana, come simboli o lettere accentate.
Configurazione e uso pratico
Per iniziare, serve un Teensy e un adattatore USB-to-UART. Si programma il Teensy con Teensyduino, l’ambiente di sviluppo integrato. Poi si collega l’adattatore ai pin corretti. Infine si apre una connessione seriale dal laptop. Il sistema target vede il Teensy come una tastiera USB standard. Da qui si può digitare qualsiasi cosa, anche durante il POST o nel BIOS.
La Raspberry Pi può sostituire l’adattatore USB-to-UART. In questo caso si usa la porta seriale UART della Pi, accessibile su /dev/ttyAMA0 o /dev/serial0. La connessione è identica, ma si aggiunge la possibilità di controllare la tastiera via rete. Inoltre, la Pi può eseguire script più complessi. Ad esempio, si può automatizzare la configurazione di più macchine senza intervento manuale.
La modalità comando è particolarmente utile per automatizzare operazioni ripetitive. Si può inviare una sequenza di tasti per accedere al menu di boot di una macchina. Oppure si può modificare l’ordine di avvio nel BIOS. Il tutto senza toccare fisicamente la macchina target. Questo fa risparmiare tempo e riduce gli errori di digitazione.
Componenti e alternative per il progetto
Oltre al Teensy, si può usare un Raspberry Pi Pico con chip RP2040. Questo microcontrollore ha capacità USB simili e un costo inferiore. La scheda di espansione per Raspberry Pi Pico e Pico W scheda di espansione per Pico semplifica i collegamenti. Il Primer Kit Primer Kit Plug&Play offre tutto il necessario per iniziare. Inoltre, le versioni da 1 GB e 2 GB di Raspberry Pi 5 e Raspberry Pi 5 2 GB sono ottime come host di controllo.
La scelta del microcontrollore dipende dalle esigenze. Il Teensy è semplice e supportato da Teensyduino. Il RP2040 è più economico e ha una community attiva. Entrambi funzionano con lo stesso schema di collegamento. La Raspberry Pi è necessaria solo se si vuole il controllo in rete. Per un uso locale, l’adattatore USB-to-UART è sufficiente.
In sintesi, questo progetto risolve un problema reale con strumenti semplici. La tastiera USB scriptabile è versatile e riutilizzabile. Si può adattare a molti scenari, dalla configurazione di server alla manutenzione di sistemi embedded. Inoltre, è un ottimo punto di partenza per imparare il funzionamento dei protocolli USB e seriali.
- Teensy con sketch etherkey per emulare la tastiera
- Adattatore USB-to-UART o Raspberry Pi per la seriale
- Teensyduino per programmare il microcontrollore
- Comando cu a 57600 baud per la connessione
