sindro.me

feeling bold
on the internet

info 🇬🇧🇮🇹

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

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:

output di 5g-info

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.

TUI di 5g-monitor

È 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:

Test Poynting

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

X3000 montato a parete

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

Poynting montata a parete

Buon divertimento!