Mesh BasicsConnectArticlesHost a NodeAboutAbout MeshTexasCoverageCommunitiesWorking With Other RegionsContributeRepeater RegistryLive Analyzer ↗Live Map ↗Search

Connect to the Network

Pick the one that fits where you're starting from.

Observer Setup

The MeshTexas broker accepts connections from any Texas-area MeshCore observer. Auth uses the same JWT model as MeshMapper and Waev — your device signs its own token from its keypair. No credentials or registration required.

Brokermqtt.meshtexas.org
Port443
TransportWebSocket Secure (WSS)
AuthJWT — auto, from device keypair
!
Only listed region codes are accepted

Devices tagged with a region code that isn't in the list below won't be able to connect. Don't see your area? Let us know and we'll add it.

i
Also sending to MeshMapper?

CRP, ACT, DRT, UVA, and LRD are MeshTexas-only regions; MeshMapper doesn't have them. If your observer feeds both networks, it needs a different code for each broker:

  • agessaman's MQTT Observer firmware, beta channel: set mqtt.iata to MeshMapper's nearest region, then give the MeshTexas slot its own code with set mqttN.iata (see step 8 below).
  • agessaman's MQTT Observer firmware, stable release: one code goes to every broker, so use MeshMapper's nearest region.
  • meshcoretomqtt and meshcore-packet-capture: set a code per broker (see their tabs below).

Standard MeshCore firmware from meshcore-dev doesn't publish to MQTT brokers on its own. Observers use one of the three options above.

Setup Instructions

Select the software your observer is running:

For Heltec V3/V4, T-LoRa, Tracker, and any ESP32-based board running agessaman's MQTT Observer firmware, a community build of MeshCore with MQTT broker support. Standard MeshCore firmware won't work here.

  1. New device, or reflashing? Already running the agessaman firmware? Skip to the next step.

    Flash it automatically using the observer.gessaman.com web flasher — pick your board and role (repeater/room server), then flash directly over USB in your browser (Chrome or Edge; uses the Web Serial API). No manual downloads or separate tools needed.

  2. Open a command line to your device — expand the method you're using:
    Via USB Serial

    Connect via USB serial at 115200 baud using a terminal (PuTTY, screen, minicom) or the MeshCore serial console — or use the Console button on observer.gessaman.com for a browser-based serial console, no separate terminal app needed.

    Via Bluetooth Companion App

    Open the MeshCore companion app, connect to your device over Bluetooth, then navigate to Remote Management → Command Line — all commands below are entered there, no USB cable needed.

  3. Back up your device identity — cheap insurance before you start configuring anything else:
    !
    Save your prv.key somewhere safe

    Over USB serial (not available via Bluetooth), run get prv.key and save the 64-character key it returns. If a bad setting ever leaves your device stuck in a reboot loop, you can wipe it and start fresh, then restore your exact identity with set prv.key <key> — instead of losing your MeshMapper/analyzer history to a brand-new key.

  4. Fresh flash or full erase? Set your radio parameters, device name, and WiFi before continuing — skip this if you're just adding MQTT to an already-running node:
    set radio 910.525,62.5,7,5
    set tx 22
    set name YourObserverName
    set wifi.ssid YourWiFiNetwork
    set wifi.pwd YourWiFiPassword
    reboot

    The radio line (freq,bw,sf,cr) above is just an example — use the actual settings your local mesh runs, not this value. Ask other operators in your area if you're not sure.

  5. Set your region using the IATA code for the Texas city nearest to you:
    SAT San AntonioCovers: San Antonio, Pearsall, Jourdanton, Pleasanton, FloresvilleAUS AustinHOU HoustonDFW Dallas–Fort WorthELP El PasoABI AbileneAMA AmarilloMFE McAllenCovers: McAllen, Edinburg, HarlingenSJT San AngeloTXK TexarkanaTYR Tyler–LongviewCRP Corpus ChristiACT WacoLBB LubbockMAF Midland–OdessaDRT Del RioCovers: Del Rio, BrackettvilleUVA Uvalde / Winter GardenCovers: Uvalde, Sabinal, Eagle Pass, La Pryor, Crystal City, Carrizo SpringsLRD LaredoCovers: Laredo, Cotulla
    set mqtt.iata AUS
  6. Pick a free broker slot (mqtt1–mqtt6). Not sure which are free? Run get mqtt.status — it lists each slot already in use (e.g. 1: meshmapper (ok)); pick any slot number not shown.
  7. Configure the slot — replace mqtt1 with your chosen slot:
    set mqtt1.preset meshtexas
    reboot
    Running an older build without the meshtexas preset?

    If set mqtt1.preset meshtexas errors, or get mqtt1.preset doesn't show meshtexas after rebooting, your build predates this preset (added July 2026). Reflash from the latest observer-mqtt-latest release, or configure it manually:

    set mqtt1.preset custom
    set mqtt1.server mqtt.meshtexas.org
    set mqtt1.port 443
    set mqtt1.audience mqtt.meshtexas.org
    reboot
  8. Optional: use a MeshTexas-only code on this slot. If your area's code isn't on MeshMapper (CRP, ACT, DRT, UVA, LRD) and you also feed MeshMapper, leave mqtt.iata on MeshMapper's nearest region and set this slot's code separately. Replace mqtt1 with your slot:
    set mqtt1.iata UVA
    get mqtt1.iata
    The slot reconnects by itself. To go back to using mqtt.iata, run set mqtt1.iata with no code.
    Needs the beta channel of agessaman's MQTT Observer firmware

    Per-slot codes are a feature of agessaman's MQTT Observer firmware, not standard MeshCore firmware. They're in its observer-mqtt-beta-latest builds from October 21, 2026 on, and aren't in its stable release yet. A node flashed from the beta channel keeps getting beta updates over the air until you re-flash it by cable. On older builds, set mqtt1.iata returns an error and nothing changes.

  9. Confirm the connection after reboot:
    get mqtt.status
    You should see mqtt1: connected.

For RAK4631 and any serial-connected MeshCore device running meshcoretomqtt.

  1. Find your config directory — typically /etc/mctomqtt/config.d/ on Linux.
  2. Set your IATA region — replace AUS with the Texas city nearest to you, then expand the option that matches your setup:
    SAT San AntonioCovers: San Antonio, Pearsall, Jourdanton, Pleasanton, FloresvilleAUS AustinHOU HoustonDFW Dallas–Fort WorthELP El PasoABI AbileneAMA AmarilloMFE McAllenCovers: McAllen, Edinburg, HarlingenSJT San AngeloTXK TexarkanaTYR Tyler–LongviewCRP Corpus ChristiACT WacoLBB LubbockMAF Midland–OdessaDRT Del RioCovers: Del Rio, BrackettvilleUVA Uvalde / Winter GardenCovers: Uvalde, Sabinal, Eagle Pass, La Pryor, Crystal City, Carrizo SpringsLRD LaredoCovers: Laredo, Cotulla
    Choose your setup
    Connecting to Multiple Region Brokers

    Sets IATA only for the MeshTexas broker — safe when you're also connected to other regional meshes. Create 30-texasmesh.toml in config.d/:

    [[broker]]
    name = "meshtexas"
    enabled = true
    server = "mqtt.meshtexas.org"
    port = 443
    transport = "websockets"
    keepalive = 60
    qos = 0
    retain = true
    
    [broker.tls]
    enabled = true
    verify = true
    
    [broker.auth]
    method = "token"
    audience = "mqtt.meshtexas.org"
    
    [broker.topics]
    iata = "AUS"
    Only Connecting to Texas Brokers

    Simpler option — sets IATA globally. Create or edit /etc/mctomqtt/config.d/99-user.toml:

    [general]
    iata = "AUS"

    Then create 30-texasmesh.toml in config.d/ without a [broker.topics] block:

    [[broker]]
    name = "meshtexas"
    enabled = true
    server = "mqtt.meshtexas.org"
    port = 443
    transport = "websockets"
    keepalive = 60
    qos = 0
    retain = true
    
    [broker.tls]
    enabled = true
    verify = true
    
    [broker.auth]
    method = "token"
    audience = "mqtt.meshtexas.org"
  3. Restart meshcoretomqtt and watch the logs for a connection confirmation:
    sudo systemctl restart meshcoretomqtt
    journalctl -u meshcoretomqtt -f

Run ls /etc/mctomqtt/config.d/ to see what files already exist before picking a number.

For any MeshCore observer running meshcore-packet-capture.

  1. Find your presets directory inside your meshcore-packet-capture installation.
  2. Set your IATA region — replace AUS with the Texas city nearest to you, then expand the option that matches your setup:
    SAT San AntonioCovers: San Antonio, Pearsall, Jourdanton, Pleasanton, FloresvilleAUS AustinHOU HoustonDFW Dallas–Fort WorthELP El PasoABI AbileneAMA AmarilloMFE McAllenCovers: McAllen, Edinburg, HarlingenSJT San AngeloTXK TexarkanaTYR Tyler–LongviewCRP Corpus ChristiACT WacoLBB LubbockMAF Midland–OdessaDRT Del RioCovers: Del Rio, BrackettvilleUVA Uvalde / Winter GardenCovers: Uvalde, Sabinal, Eagle Pass, La Pryor, Crystal City, Carrizo SpringsLRD LaredoCovers: Laredo, Cotulla
    Choose your setup
    Connecting to Multiple Region Brokers

    Sets IATA only for the MeshTexas broker — safe when you're also connected to other regional meshes. Create meshtexas.toml in your presets directory:

    [[broker]]
    name = "meshtexas"
    enabled = true
    server = "mqtt.meshtexas.org"
    port = 443
    transport = "websockets"
    keepalive = 60
    qos = 0
    retain = true
    iata = "AUS"
    
    [broker.tls]
    enabled = true
    verify = true
    
    [broker.auth]
    method = "token"
    audience = "mqtt.meshtexas.org"
    Only Connecting to Texas Brokers

    Simpler option — sets IATA globally. Create or edit /etc/meshcore-packet-capture/config.d/99-user.toml:

    [general]
    iata = "AUS"

    Then create meshtexas.toml in your presets directory without an iata line:

    [[broker]]
    name = "meshtexas"
    enabled = true
    server = "mqtt.meshtexas.org"
    port = 443
    transport = "websockets"
    keepalive = 60
    qos = 0
    retain = true
    
    [broker.tls]
    enabled = true
    verify = true
    
    [broker.auth]
    method = "token"
    audience = "mqtt.meshtexas.org"
  3. Restart the service and check logs for a successful broker connection.
✓
Verify your connection

After connecting, search for your node name on the MeshTexas Analyzer. It should appear within a few minutes of your device sending its first advert packet.

Open Analyzer ↗