Emulare un modem Wi-Fi tramite Raspberry Pi ZeroW

Siamo nel 2020 e sembra esserci un rinnovato interesse nei confronti delle BBS. Per chi sapesse cosa siano, in breve e in modo molto approssimativo BBS (Bulletin Board System) erano dei servizi telematici (in voga negli anni 80 – primi 90) di messaggistica e scambio file, che “viaggiavano” sulla comune linea telefonica, e i cui nodi erano gestiti in gran parte dalla comunità di hobbisti e amatori. Ci si collegava tramite modem spesso alla velocità di 1200bps (150 byte al secondo) e l’interfaccia utente era esclusivamente testuale, con caratteri ASCII che simulavano “grafica”.

Oggi le linee telefoniche analogiche non esistono praticamente più e le BBS sopravvissute si sono spostate su Internet, dove ne nascono anche di nuove. Per potersi collegare tramite un vecchio computer serve ovviamente un collegamento seriale, ed è semplice trovare online progetti e realizzazioni di modem Wi-Fi, cioè dispositivi che connettendosi alla porta seriale RS-232 emulano il funzionamento di un modem analogico, collegandosi però in TELNET a un host remoto (specificando la porta).

Avendo però a disposizione un Raspberry PiZeroW e un adattatore USB -> RS232 è possibile realizzarsi in casa un modem Wi-Fi a “costo zero” (oltre quello del Pi e dell’adattatore!) senza bisogno di saldature e modifiche. Ecco quindi un breve tutorial su come realizzarlo.

Innanzitutto occorre un adattatore USB -> Seriale RS232. Ho utilizzato nel caso specifico un modello Digitus, disponibile anche su RPI Imager, distribuito gratuitamente a questo link.

Al primo passaggio, CHOOSE OS, scegliete “Raspberry Pi OS (Other)“, e di seguito la versione leggera “Raspberry Pi OS Lite (32-bit)“. Inserire quindi la SD e programmarla col tasto Write.

A questo punto collegate il PiZeroW a una tastiera USB, a un monitor HDMI e accendetelo collegandolo all’alimentazione.

Alla richiesta di login digitate pi come username e raspberry come password.

Configurazione delle rete Wi-Fi

Al prompt, lanciare:

$ sudo vi /boot/wpa_supplicant.conf

si aprirà il famigerato editor vi. Se proprio non vi piace, potete anche usare nano:

$ sudo nano /boot/wpa_supplicant.conf

Il file, a seconda della versione/distribuzione usata, potrebbe trovarsi al path /etc/wpa_supplicants/wpa_supplicants.conf, controllate prima di procedere. Se è in /boot usate questo path, altrimenti andate in /etc/wpa_supplicants/wpa_supplicants.conf.

Modificate il file in modo che sia come questo (sostituite ovviamente il vostro nome della rete e la vostra password):

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=IT

network={
    ssid="NomeDellaVostraReteWifi"
    psk="VostraPassword"
    id_str="wifi1"
}

network={
    ssid="EventualeSecondaReteWifi"
    psk="PasswordDellaSecondaRete"
    id_str="wifi2"
}

In particolare:

  • Se avete solo una rete Wi-Fi, potete omettere la seconda sezione “network”
  • Il campo “id_str” potete tenerlo così (wifi1, wifi2, …). Non c’è bisogno di personalizzarlo

A questo punto lanciate:

$ sudo reboot

per riavviare il PiZeroW. Al riavvio, riloggatevi e verificate che la rete Wi-Fi funzioni con:

$ ping www.google.com

Update del sistema

A questo punto per avere un sistema aggiornato, è possibile fare un update generale:

$ sudo apt update
$ sudo apt upgrade

Installazione e schedulazione di tcpser

Possiamo ora procedere al punto più importante. Installiamo l’utility tcpser:

$ sudo apt install tcpser

L’utility tcpser ha esattamente lo scopo di emulare un modem sulla porta seriale scelta. Quando connetteremo l’adattatore (in questo momento non possiamo farlo in quanto abbiamo la porta USB occupata dalla tastiera), questa sarà mappato sul device /dev/ttyUSB0.

Ora non dobbiamo far altro che far partire al boot tcpser con i giusti parametri. Lanciamo quindi:

$ sudo crontab -e

verrà chiesto quale editor usare per modificare i parametri di crontab: scegliamo 1, cioè nano. A questo punto va aggiunta in coda al file presentato, esattamente questa riga, che risulterà essere l’ultima:

@reboot tcpser -d /dev/ttyUSB0 -s 9600 -i "&k0"

È importante non dimenticare i doppi apici nella parte finale. In particolare i parametri hanno questo significato:

  • /dev/ttyUSB0 è il nome della porta seriale.
  • 9600 è la velocità della porta espressa in bps. Se volete cambiarla, il parametro per farlo è questo.
  • “&k0” è la stringa di inizializzazione del modem. Questa stringa in particolare disabilita il controllo di flusso per rendere il modem compatibile anche con i computer e i software più vecchi. Se volete invece tenere attivo il flusso di controllo, omettete l’intero parametro -i "&k0".

Con Ctrl-X (poi scegliendo Yes per salvare) usciamo dall’editor, e spegnamo il PiZeroW con

$ sudo shutdown

La preparazione del PiZeroW è finalmente terminata e possiamo iniziare a usarlo come modem Wi-Fi.

Installazione e uso del modem con un retrocomputer

Procuriamoci un retrocomputer a cui collegare il modem, pertanto dotato di porta seriale RS-232 con un apposito cavo null-modem detto anche cavo crossed o cavo incrociato. A questo link c’è un esempio disponibile su Amazon: ovviamente dovrete provvedere anche a un eventuale adattatore da seriale a 9 pin a 25 pin nel caso di Amiga. Assumiamo di avere a disposizione un Amiga 500.

Da ora in poi non sarà più necessario connettere la tastiera e avremo la porta USB a disposizione per l’adattatore seriale.

Prima di alimentare il PiZeroW, connettiamo l’adattatore USB -> RS232 appena citato, quindi alimentiamo il PiZeroW (accendendolo quindi) e colleghiamolo via cavo incrociato all’Amiga. Affinché il modem diventi operativo occorre attendere qualche minuto affiché termini il boot. Nel frattempo possiamo continuare con il resto delle operazioni.

Accendiamo l’Amiga caricando un programma di emulazione terminale, per esempio ColorTerm (disponibile a questo link).

Nota importante: la velocità del programma di emulazione terminale va impostata allo stesso valore del modem, nel nostro caso (vedi impostazione fatta poco fa) è di 9600 bps. Impostiamo questo valore in questo caso su ColorTerm:

Collegamento alle BBS

Siamo a questo punto pronti per navigare nel fantastico mondo delle BBS. Possiamo già interagire col modem digitando i comandi e vedendoli comparire sul monitor. Il comando per connettersi a una BBS è:

ATDT nomeserver:numeroporta

NOTA IMPORTANTE: non è possibile correggere gli errori di digitazione di un comando usando backspace. O meglio: sembrerà tutto a posto, ma il comando fallirà anche se è stato premuto una sola volta il tasto backspace. Se si è commesso un errore, digitare INVIO (generando un errore) e ricominciare a scrivere il comando su una nuova riga.

Proviamo ad esempio a connetterci alla BBS di Retrocampus:

ATDT bbs.retrocampus.com:6510

Ed ecco il risultato dopo un po’ di interazioni:

Nel caso invece si disponga di un PC MS-DOS è possibile utilizzare il programma 64 BlazeTerm.

Happy BBS’ing!

Collegamenti esterni

Have your say