5G come backup della fibra: non perdere mai più una riunione
Un paio di mesi fa, la fibra è andata giù. Come da primo corollario di Murphy, è successo nel momento peggiore in assoluto: subito prima di una riunione cruciale con un’azienda partner. Mi sono ritrovato a saltare freneticamente tra l’AP di un vicino lontano e l’hotspot del telefono, ma entrambi facevano schifo. Parliamo di 200ms di RTT e 15% di packet loss. Mi stavo scusando a profusione mentre il mio feed video si trasformava in uno slideshow del 1998; nessuno capiva una parola di quello che dicevo. Ho finito per spegnere il video e stare zitto. Opportunità persa. Mai. Più.
Così sono andato in modalità paranoica totale e ho costruito un setup di backup 5G serio.
L’hardware
- GL.iNet X-3000 con modem Quectel RM520N-GL
- Poynting XPOL-24 antenna direzionale montata sul muro fuori dal mio ufficio
Il segnale 5G qui è inesistente, quindi ho dovuto usare l’artiglieria pesante. La Poynting è una bestia. 11 dBi di guadagno, vero MIMO 4x4, cross-polarizzata, stagna. Puntala verso la torre più vicina e all’improvviso il SINR salta da “meh” a “porco dio!”.
Ma puntare un’antenna direzionale senza feedback visivo è doloroso. In pratica giri in tondo, aggiorni una web UI, bestemmi guardando il cielo.
Il software
Ho scritto un set di strumenti per risolvere il problema: quectel-5g-tools.
5g-info scarica tutto quello che il tuo modem sa in un formato leggibile:

5g-monitor è una TUI ncurses che si aggiorna in tempo reale e – qui viene il bello – emette beep in base al SINR. Qualità del segnale più alta = più beep. Punta l’antenna, ascolta i beep, stringi i bulloni. Fatto.

È come un metal detector, ma per il 5G.
Note tecniche
Il modem parla comandi AT su /dev/ttyUSB2. Gli strumenti parsano le risposte da AT+QENG, AT+QCAINFO, e compagni per estrarre le info della cella servente, lo stato della carrier aggregation, e le celle vicine.
Tutto gira su OpenWRT. Installa le dipendenze con opkg install python3-pyserial python3-toml python3-ncurses, clona il repo, ed esegui ./bin/5g-monitor. Niente compilazione, niente container, niente cazzate.
C’è anche force-bands se vuoi bloccare il modem su bande LTE/NR specifiche (utile quando il modem si ostina a connettersi a una torre lontana con RSRP migliore ma throughput peggiore).
Risultato
Il mio backup 5G ora va a 300+ Mbps in download, 50+ in upload. Quando la fibra muore, il mio router fa failover automaticamente grazie a mwan3. Le riunioni continuano. I clienti non se ne accorgono. La pressione sanguigna resta normale.
Il codice è con licenza MIT e vive su github.com/vjt/quectel-5g-tools. Le PR sono benvenute.
Immagini
La Poynting subito dopo l’unboxing e il montaggio sul treppiede di test:

L’X3000 montato a parete un paio di giorni dopo il momento “porco dio!” dei 300Mbit in download durante i test

La Poynting montata a parete nel suo setup (semi) definitivo. Il mio DIY più grande di sempre – non avevo mai trapanato il cemento stando su una scala di 2m su un terrazzo al primo piano :-D

Buon divertimento!