Buscar este blog

Meshcom: una red mesh para radioaficionados

Meshcom es una red Mesh desarrollada por ICSSW para radioaficionados, que funciona en la banda de 430 MHz con modulación LoRa y está interconectada con APRS.

Este protocolo está poco o nada implantado en España. De hecho a 13/10/2026 unicamente aparecian dos estacioens: EA3HVF-12 en Catalunya  y  DL3HAQ-98 en mallorca


Debe de disponer de una placa de desarrollo ESP 32 - LoRa- 433 MHz de las compatibles con el proyecto, en nuestro caso probamos con dos placas para poder probar el enlace via radio

A continuación se conecta la placa a un ordenador con navegador y se selecciona la URL de  la web de flashseo https://esptool.oevsv.at/ y se elije la opción que mas se aproxime a la placa en caso para T3 fue T-Lora

En nuestro caso es la T-Lora

Para la placa T-Beam fue T-Beam (Default) SX1278

Dos temas a considerar:
  • El cable USB debe soportar datos (muchos cables USB son solo de alimentación)
  • Si tiene una aplicación ya cargada debe instalar el firmware con borrado (ERASED)
Con la opción LOG & CONSOLE puede ver como ha ido la carga del firmware e incluso hacer un RESET para comprobar que en principio todo va bien

[13:13:42]============
[13:13:42]CLIENT SETUP
[13:13:42]============
[13:13:42][BOOT] RESET_REASON=1 POWERON
[13:13:42][HEAP] 00:00:00 164248 162000 110580 (init)
[13:13:42][PSRM] 00:00:00 0
[13:13:42][INIT]...efuse not used
[13:13:42][INIT]...init_flash
[13:13:42][INIT]...build Oct  2 2026 / 03:22:24
[13:13:42][INIT]...FLASH layout 20260724 ok, build 20260929
[13:13:42][TIME]...Loaded time persistence: saved_time=0, msg_time=0
[13:13:42][INIT]...WIFIAP starting...
[13:13:42][INIT]...WEBServer starting...
[13:13:42][INIT]...init_batt
[13:13:42][INIT]...MCP23017 not found
[13:13:42][INIT]...INA226 not found
[13:13:42][INIT]...RTC not found
[13:13:42][OBUT]...One Button GPIO(12) not activated
[13:13:42][INIT].._GW_ID: XXXXXXXX
[13:13:42][INIT]...Initialize clock: ok
[13:13:42][INIT]...Auto detecting display:
[13:13:42][INIT]...Display type: 0x04
[13:13:42][INIT]...OLED panel is 0.9 inch -> SSD1306
[13:13:42][LoRa]...SX1276 Chip Initializing ... success
[13:13:43][LoRa]...RF_FREQUENCY: 433.175 MHz
[13:13:43][LoRa]...RF_BANDWIDTH: 250 kHz
[13:13:43][LoRa]...RF_SF: 11
[13:13:43][LoRa]...RF_CR: 4/6
[13:13:43][LoRa]...RF_POWER: 20 dBm
[13:13:43][LoRa]...PREAMBLE: 8 symbols
[13:13:43][LoRa]...Starting to listen ... success
[13:13:43][LoRa]...All settings successfully changed
[13:13:43][BLE ]...Device started with BLE-Name <XXXXX>
[13:13:43][BLE ]...Device-Address <XXXXX>
[13:13:43][BLE ]...Waiting a client connection to notify...
[13:13:43]==============
[13:13:43]CLIENT STARTED
[13:13:43]==============
[13:13:43][WIFI]...no connection possible
[13:13:43][HEAP] 00:00:00 149068 148952 110580 (mon)
[13:14:11][TX];refuse;unconfigured;ms;30001;refused;1


Arranque de la lilygo T3 con Mescom4.0

Configuración

Ahora es necesario configurar el indicativo y la puerta de enlace y activar esta última. Para ello se puede hacer por linea de comandos desde una consola o programa que la simule cono Putty o con una app desde un dispositivo móvil (Android o iOs) que se conecta a la placa mediante BLE
Pantalla para seleccionar la placa MeshCom con la que queremos enlazar por BLE la app
(azul disponible, verde enlazada)

Indicativo: debe introducir su indicativo de radioaficionado al cual debe añadir un guion y un numero de dispositivo, p.e. EA5JTT-1, al salvarlo en la placa esta se reincia en 15" y aoarcerá en pantalla  en CALL:

WiFi: debe configurar la red en SSID y la contraaseña  y salvarlo, si todo va bien se reinicia en 15" y aparecerá tambien en panlla como SSID y la IP asignada por la red. Se puede hacer que la IP se asigne automaticamente dejando los campos en blanco o fijar una (IP.mascara, gateway, DNS y NTP), funciona de ambas forams

Gateway : activarlo

Por comandos se necesitarian estos cuatro
  • --setcall <call>   
  • --setssid WIFIssid
  • --setpwd WIFIpassword
  • --gateway on

Si todo es correcto en el arranque saldrá algo como esto en el LOG

[WIFI]...connect OK
[WIFI]...now listening at IP 192.168.1.89, UDP port 1990
[WIFI]...Internet UDP-DEST meshcom.oevsv.at
[WIFI]...Internet NTP-DEST pool.ntp.org
[GW];srv;OE;host;meshcom.oevsv.at;path;inet;ms;312943
TimeClient no update possible --> CPU-Mode
[WIFI];dns;meshcom.oevsv.at;ip;89.185.97.38;ms;92
[GW];keep;tx;ok;1;ms;313036
[WIFI];dns;pool.ntp.org;ip;178.215.228.24;ms;100
[NTP];ok;epoch;1791906229;rtt;97
[GW];rx;type;BEAT;len;20;ms;313315
[GW];keep;tx;ok;1;ms;342959
[GW];rx;type;BEAT;len;20;ms;343136

para lanzar comandos por consola no se complique con Putty, ni Screen o minicom, basta con volver a la URL de flasheo e ir a LOG

Tecleando ---help tenemos todos los comandos disponibles

--help
MeshCom 4.40a commands   (a/b = pick one, <x> = value)

== Show ==
--info                  node info
  • 16:35:36]--info
  • [16:35:36]--MeshCom 4.40a (build: Oct  2 2026 / 03:22:22)
  • [16:35:36]...UPDATE: 
  • [16:35:36]...Call: <EA5JTT-1> ...ID XXXXXXXX  ...NODE 3 <TLORA_V2_1_1p6> ...UTC-OFF 1.000000 [INIT]
  • [16:35:36]...BATT 4.28 V ...BATT 100 % ...MAXV 4.200 V
  • [16:35:36]...TIME 430990 ms
  • [16:35:36]...Flash-Version 20260724
  • [16:35:36]...NOMSGALL off ...MESH on ...BUTTON (12) off ...SOFTSER off ... SOFTSERREAD off
  • [16:35:36]...PASSWD <>
  • [16:35:36]...DEBUG man ...DEBUG en
  • [16:35:36]...DEBUG off ...LORADEBUG off ...NBRDEBUG off ...TXCAPTURE off ...GPSDEBUG off/0 ...SOFTSERDEBUG off
  • [16:35:36]...WXDEBUG off ...BLEDEBUG off
  • [16:35:36]...NBRRELAY off ...relays A 0 B 0 ...cancelled 0 ...possible 0 ...refused 0 ...NBRSYM on ...NBRREPORT auto
  • [16:35:36]...BOOT RESET_REASON=1 POWERON
  • [16:35:36]...DisplayInfo off ...DisplayCont off ...DisplyLog off ...contrast 255 ...ackinfo off
  • [16:35:36]...EXTUDP off ...EXT IP none ...NOPMOTHER off
  • [16:35:36]...BTCODE 000000
  • [16:35:36]...APRSMC: APRSMC
  • [16:35:36]...ATXT: 
  • [16:35:36]...NAME: 
  • [16:35:36]...BLE : short tx s0 r0 d0 t0 e0 mtu0
  • [16:35:36]...DISPLAY on
  • [16:35:36]...CTRY EU8
  • [16:35:36]...FREQ 433.1750 MHz TXPWR 20 dBm RXBOOST off
  • [16:35:36]...MAXHOP text 4 / pos 2
  • [16:35:36]...BATTERY PIN 35 factor 1.0000
  • [16:35:36]...Webserver  off / Webpwd <> / Gateway off 
  • [16:35:36]...NETConsole off
  • [16:35:36]...KISS/TCP   off / TX off / RxMeta off / Auth off
  • [16:35:36]...WIFI-AP    off
  • [16:35:36]...SSID <********> / PASSWORD <***>
  • [16:35:36]...NETWORK Mode:WiFi
  • [16:35:36]...hasIpAddress: no
  • [16:35:36]
--pos                  lat/lon/alt/time
--weather          temp/hum/press (alias --wx)
--lora                  LoRa settings
--mheard           heard stations, 12 h (alias --mh)
--path                 routes per sender (alias --hey)
--neighbours     neighbour matrix (alias --nbr)
--msgid              message-id counter
--io                      IO config
--showI2C          scan I2C bus
--seset                show sensor settings
--wifiset              show WiFi settings
--nodeset            show node settings
--analogset         show analog settings
--tel                      show telemetry settings
  • MeshCom 4.40a
  • PARM:   none
  • UNIT:   none
  • FORMAT: none
  • EQNS:   none
  • VALUES: none
  • PTIME:  15
--aprsset                  show APRS settings
--regex <call>          test callsign against the validator
--netconsole            net console status
--wifistat                  WiFi link/counters
--udpstat                  MeshCom UDP RX/TX counters

== Node ==
--setcall <call>        callsign (OE0XXX-1)
--setname <name>/none   operator first name (alias --operatorname)
--setctry 0-99                       country -> LoRa preset
--setgrc 9;..9;                         groups
--utcoff +/-99.9                    UTC offset h
--settime yyyy.mm.dd hh:mm:ss      set clock
--setrtc yyyy.mm.dd hh:mm:ss         set RTC chip
--btcode 999999             BLE pairing code
--bleshort                          BLE advertising short, reboots
--blelong                           BLE advertising long, reboots
--all                                   display: all frames
--msg                               display: messages only
--save                              write settings to flash
--reboot                reboot
--deepsleep             enter deep sleep
--cleanflash            wipe settings flash (recovery)
--ota-update            reboot into safeboot OTA
--conffin               send config-finished to app

== LoRa / mesh ==
--txpower 99            TX power dBm
--txfreq 999.999        TX frequency MHz
--txbw 999              bandwidth kHz
--txsf 6-12             spreading factor
--txcr 5-8              coding rate 4/x
--maxhop 1-6            text hop limit (no value: show)
--store                 mailbox status (no value: show)
--mesh on/off           relay foreign frames
--shortpath on/off      short path
]--via on/off/<call>     via callsign
--sendpos               send position now
--sendtrack             send track/APRS beacon now
--sendhey               send HEY beacon now
--sendtele              send telemetry now
--posshot               one-shot position now
--postime 99            position interval s

== Neighbour matrix ==
--nbrreset              clear matrix
--nbrcheck              consistency check
--nbrrelay       off/count/on relay decision: off / log only / active
--nbrsym        on/off         assume symmetric links
--nbrreport     off/auto/on HN neighbour report

== APRS ==
--symid <c>             symbol table
--symcd <c>             symbol code
[16:32:29]--aprscomment <t>/none  comment (alias --atxt)
[16:32:29]--aprsmc <call>         APRS destination call (default APRSMC)
[16:32:29]--track on/off          SmartBeaconing
[16:32:29]--gps on/off            GPS chip
[16:32:29]--gps reset             GPS factory reset
[16:32:29]--gps autosymbol/fixsymbol  symbol source
[16:32:29]--setlat 44.12345       latitude
[16:32:29]--setlon 016.12345      longitude
[16:32:29]--setalt 999            altitude m (with GPS: seeds the filter)
[16:32:29]--setublox <cmd>        u-blox GPS passthrough
[16:32:29]--setl76k <cmd>         L76K GPS passthrough

== Network ==
--setssid <ssid>/none   WLAN SSID
--setpwd <pwd>/none     WLAN password
--wifiap on/off         WLAN access point
--wifitxpower 2-20      WiFi TX power dBm
--setownip a.b.c.d      static IP
--setowngw a.b.c.d      gateway
--setownms a.b.c.d      netmask
[16:32:29]--setowndns a.b.c.d     DNS server
[16:32:29]--setownntp a.b.c.d     NTP server
--gateway on/off/pos/nopos  MeshCom gateway
--gateway srv OE/DL/IT  gateway server, reboots
[16:32:29]--setudpcall <call>     UDP callsign
[16:32:29]--sethamnet on/off      HAMNET server
[16:32:29]--setinet on/off        internet server
[16:32:29]--extudp on/off         external UDP
[16:32:29]--extudpip a.b.c.d/none external UDP peer
[16:32:29]--nopmother on/off      no foreign DMs to EXTUDP peer
[16:32:29]--webserver on/off      web server
[16:32:29]--webpwd <pwd>/none     web password
[16:32:29]--webtimer 0            reset web session timer
[16:32:29]--netconsole on/off     console on TCP 2323
[16:32:29]--passwd <pwd>/none     net console password
[16:32:29]--kiss on/off           KISS/TCP port 8001
[16:32:29]--kiss tx on/off        KISS may transmit
[16:32:29]--kiss meta on/off      KISS metadata frames
[16:32:29]--kiss auth on/off      KISS authentication
[16:32:29]--udplog on/off         one [UDP] line per datagram

== Sensors / battery ==
[16:32:29]--bmp on                use BMP280
[16:32:29]--bme on                use BME280
[16:32:29]--680 on                use BME680
[16:32:29]--811 on                use CCS811
[16:32:29]--390 on                use BMP390
[16:32:29]--bmx off               BMx280/390/680 off
[16:32:29]--bmp off               BMx280/390 off
[16:32:29]--bme off               BMx280/390 off
[16:32:29]--680 off               BME680 off
[16:32:29]--390 off               BMP390 off
[16:32:29]--811 off               CCS811 off
[16:32:29]--setpress              latch QNH at current altitude
[16:32:29]--aht20 on/off          AHT20
[16:32:29]--sht21 on/off          SHT21
[16:32:29]--onewire on/off        1-Wire DSxxxx
[16:32:29]--onewire gpio 99       1-Wire pin
[16:32:29]--ina226 on/off         INA226
[16:32:29]--shunt 9.999           INA226 shunt ohms
[16:32:29]--imax 9.9              INA226 max current A
[16:32:29]--isamp 9               INA226 sample count
[16:32:29]--batt factor 9.9       battery ADC factor
[16:32:29]--maxv 9.99             100% battery voltage
[16:32:29]--volt on/off           show battery voltage
[16:32:29]--proz on/off           show battery percent
[16:32:29]--tempoff in/out 9.9    temperature offset
[16:32:29]--button on/off         user button check
[16:32:29]--button gpio 99        user button pin
[16:32:29]--setio a0-b7 in/out    MCP IO pin mode
[16:32:29]--setio clear           clear MCP IO config
[16:32:29]--setout a0-b7 on/off   MCP output

== Telemetry ==
[16:32:29]--parm tm1,..,tm5       value names (unused: blank)
[16:32:29]--unit tm1,..,tm5       units (unused: blank)
[16:32:29]--format 1,1,1,1,1      decimals (unused: 0)
[16:32:30]--eqns 0,1,0,...        equations, 15 values
[16:32:30]--values press,hum,temp,onewire,co2  value sources
[16:32:30]--ptime 99              interval min

[16:32:30]== Display ==
[16:32:30]--display on/off        display
[16:32:30]--nomsgall on/off       hide '*' messages
[16:32:30]--contrast 1-255        OLED contrast
[16:32:30]--persiststat           NVS-only values
[16:32:30]--board led on/off      board LED

== Debug ==
[16:32:30]--debug on/off          debug output
[16:32:30]--debug csv/man         output format
[16:32:30]--debug en/de           output language
[16:32:30]--bledebug on/off       BLE debug
[16:32:30]--loradebug on/off      LoRa debug
[16:32:30]--txcapture on/off      TX capture
[16:32:30]--nbrdebug on/off       neighbour debug
[16:32:30]--viadebug on/off       via debug
[16:32:30]--wxdebug on/off        weather debug
[16:32:30]--gpsdebug on/off       GPS debug (also 2/0)
[16:32:30]--ackinfo on/off        show who ACKed (not saved)
[16:32:30]--setinfo on/off        LoRa info lines on serial
[16:32:30]--setcont on/off        verbose serial output
[16:32:30]--setretx on/off        retransmit info on serial
[16:32:30]--setlog on/off/<call>  log one callsign
--pingcall <call>       ping target
--pingtime 99           ping interval s
--pingmax 99/max        ping count limit
--ping start/stop       start/stop pinging
[16:32:30]--spectrum              spectral scan
[16:32:30]--specstart 999.9       scan start MHz
[16:32:30]--specend 999.9         scan end MHz
[16:32:30]--specstep 9.9          scan step MHz
[16:32:30]--specsamples 500-2048  scan samples









Pruebas

Enviar un mensaje al canal publico


Suscribirse al grupo 2 (Europa) y 214 (España) y enviar un mensaje
https://meshmap.oevsv.at/messages


Mirar algun nodo activo y enviarles uno directo

https://meshmap.oevsv.at/messages


Monitorización

Mapa con los nodos MeshCom https://meshmap.oevsv.at/


Cuadro de control de la red en https://meshcom.oevsv.at/#

Monitorización de los mensajes con https://meshcom.oevsv.at/#
Recuerde que entre estaciones de radioaficionados no pueen ir los mensajes cifrados a diferencia de MeshCore


Poniendo nuestros nodos en el mapa

Cuando se establece un contacto via radio se actualiza el mapa de MeschCom y el de APRS


https://meshmap.oevsv.at/

https://aprs.fi/

Mi primer QSO via radio

Mi primer QSO via Internet

Advertencia importante

Las modificaciones, configuraciones y procedimientos descritos en este sitio pueden implicar riesgos técnicos, legales o de seguridad. El autor no se responsabiliza del mal funcionamiento de los equipos, daños permanentes, pérdida de garantía ni de posibles infracciones legales derivadas del uso de esta información.
El lector asume plena responsabilidad por cualquier acción que decida realizar basándose en el contenido de este blog.

© 2026 EA5JTT. Queda prohibida la reproducción total o parcial sin autorización expresa del autor.

No hay comentarios:

Publicar un comentario

ENTRADAS POPULARES (ULTIMO MES)