EAS (emergency alert system) alerts are issued for various local and/or national emergencies, and are frequently issued for severe weather events. As we enter tornado season in the US, I wanted to be able to receive and relay those over Meshtastic, specifically severe weather alerts, as an extra precaution since cell service often goes out after big storms.

I first setup a prototype setup on my laptop, but am planning to move the setup to a PiZeroW2 or a Banana Pi if the Raspi isn't up to the task. In addition to monitoring/relaying EAS alerts, I'm also going to pipe the audio to an Icecast source and then to an Icecast server so anyone on the local network can listen to it.

Got lucky in that today was the day they did the weekly EAS alert test and that I happened to have this running during the test. Everything surprisingly worked, which was nice. However, I wanted to tweak some things and needed a way to run my own tests. So I grabbed the audio sample from the Wikipedia page for SAME and piped that in which worked beautifully.

Requirements

  • A Pi or other computer than can run rtl_fm
  • A RTL-SDR dongle and antenna that can receive in the ~160-170 MHZ range (i.e. pretty much any FM radio antenna)
  • A Meshtastic node connected over USB or TCP

Sending Test Alerts

If you want to test the setup without having to wait for a weekly test, you can download a sample SAME audio clip from Wikipedia (https://en.wikipedia.org/wiki/File:Same.wav). You'll need to convert the sample rate before you can use it, though.

$ ffmpeg -i Same.wav -ar 48000 same48.wav
$ cat same48.wav | Meshtastic-SAME-EAS-Alerter --test-channel 0
2026-04-02T15:32:31.172Z INFO  [Meshtastic_SAME_EAS_Alerter] Successfully connected to the node.
2026-04-02T15:32:31.175Z INFO  [Meshtastic_SAME_EAS_Alerter] Loaded locations CSV
2026-04-02T15:32:31.175Z INFO  [Meshtastic_SAME_EAS_Alerter] Monitoring for alerts
2026-04-02T15:32:31.175Z INFO  [Meshtastic_SAME_EAS_Alerter] Alerts will be sent to channel: 0
2026-04-02T15:32:31.175Z INFO  [Meshtastic_SAME_EAS_Alerter] Test alerts will be sent to channel: 0
2026-04-02T15:32:31.201Z INFO  [Meshtastic_SAME_EAS_Alerter] Begin SAME voice message: MessageHeader { message: "ZCZC-EAS-RWT-012057-012081-012101-012103-012115+0030-2780415-WTSP/TV-", offset_time: 47, parity_error_count: 0, voting_byte_count: 69 }
2026-04-02T15:32:31.201Z INFO  [Meshtastic_SAME_EAS_Alerter] No location filter applied (locations empty) or no locations in alert
2026-04-02T15:32:31.201Z INFO  [Meshtastic_SAME_EAS_Alerter] Attempting to send message over the mesh: πŸ“–Received Required Weekly Test from WTSP/TV, Issued By: Broadcast station or cable system, Locations: Hillsborough, Manatee, Pasco, Pinellas, Sarasota
Connected to radio
Sending text message πŸ“–Received Required Weekly Test from WTSP/TV, Issued By: Broadcast to ^all on channelIndex:0 
Waiting for an acknowledgment from remote node (this could take a while)
Received an implicit ACK. Packet will likely arrive, but cannot be guaranteed.
Connected to radio
Sending text message  station or cable system, Locations: Hillsborough, Manatee, Pasco, to ^all on channelIndex:0 
Waiting for an acknowledgment from remote node (this could take a while)
Received an implicit ACK. Packet will likely arrive, but cannot be guaranteed.
2026-04-02T15:33:11.227Z INFO  [Meshtastic_SAME_EAS_Alerter] End SAME voice message
2026-04-02T15:33:11.251Z WARN  [Meshtastic_SAME_EAS_Alerter] Program stopped, no longer monitoring

Working Prototype

This is the bash one-liner to start rtl_fm, tune it to the local NOAA frequency, and set the rate. That gets piped to tee which does 2 things currently:

  1. The audio is piped to play so that I can listen to the broadcast on the laptop's speakers. This will eventually be piped to an Icecast source
  2. Pipes the audio to the Meshtastic SAME EAS Alerter program (the project linked in this post) and configures its settings

When a SANE message is detected, the program decodes it and broadcasts it to the configured channel. Fun fact: the Screech. Screech. Screech you hear before a severe weather alert is actually the encoded version of the emergency alert and what this program decodes.

When I move this all to whatever flavor of Pi I end up using, that'll be wrapped in a systemd unit file so it can run headless and unattended.

$ rtl_fm -f 162.400M -s 48000 -r 48000 | tee >(play -q -r 48000 -t raw -e s -b 16 -c 1 -V1 -v 4 - sinc 125-3.2k) >(Meshtastic-SAME-EAS-Alerter --host 192.168.1.236 --test-channel 0) > /dev/null

Found 1 device(s):
  0:  Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Tuner gain set to automatic.
Tuned to 162652000 Hz.
Oversampling input by: 21x.
Oversampling output by: 1x.
Buffer size: 8.13ms
Exact sample rate is: 1008000.009613 Hz
Sampling at 1008000 S/s.
Output at 48000 Hz.
2026-04-02T14:20:49.702Z INFO  [Meshtastic_SAME_EAS_Alerter] Successfully connected to the node.
2026-04-02T14:20:49.704Z INFO  [Meshtastic_SAME_EAS_Alerter] Loaded locations CSV
2026-04-02T14:20:49.704Z INFO  [Meshtastic_SAME_EAS_Alerter] Monitoring for alerts
2026-04-02T14:20:49.704Z INFO  [Meshtastic_SAME_EAS_Alerter] Alerts will be sent to channel: 0
2026-04-02T14:20:49.704Z INFO  [Meshtastic_SAME_EAS_Alerter] Test alerts will be sent to channel: 0

all 7 comments

sorted by: hot top controversial new old
[–] 17 points 7 months ago (2 children)

TIL the EAS broadcast on WX band doesn't include a digital sub carrier with a text version of the audio warning. That's an amazing omission, since even the nationwide timekeeping signal out of Colorado has both an audio and digital mode.

  • source
  • hideshow 2 child comments
  • [–] [S] 11 points 7 months ago* (last edited 7 months ago)

    I was surprised by that, too. When I went looking for a way to decode them with RTL-SDR, I assumed it wouldn't be parsing the audio but a narrowband data stream. TIL also.

    Edit: It does kind of make sense with it being AFSK encoded in-band, though, or maybe I'm just so used to it being that way. I always thought the screeches were there to demand attention (and also be something that headend equipment can pick up and respond to). So it's interesting they're doing double duty as both an unmistakable audio cue to pay attention as well as containing the actual alert data.

    Plus there are NOAA stations all over the country rather than centralized like the time signal transmitters. It was probably cheaper to do it in band at that scale.

  • source
  • parent
  • [–] 2 points 7 months ago

    These are different altogether.

    The digital code in a time signal isn't meant for humans to hear, it's meant to sync devices.

    The EAS is designed to be replayed on various radio systems with a simple and low-tech floor to get out there where it will be received. EAS that qualify (severe weather alerts) broadcast on NOAA's various LF, VH, and VHF frequencies are transmitted on equipment that not only doesn't carry digital side-channel, but isn't even duplex.

    Source: I am the radio person for my local Air Search and Rescue.

  • source
  • parent
  • [–] 4 points 7 months ago

    I'm very green when it comes to meshtastic. I do want to learn and set all this up.

    Even more so I'd like to do about 5 of these for immediate family. Would be nice to have some sort of preconfigured bundle.

  • source
  • [–] [B] 3 points 7 months ago* (last edited 7 months ago)

    Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I've seen in this thread:

    Fewer Letters More Letters
    AP WiFi Access Point
    DNS Domain Name Service/System
    IoT Internet of Things for device controllers
    PoE Power over Ethernet
    Unifi Ubiquiti WiFi hardware brand
    VPN Virtual Private Network

    6 acronyms in this thread; the most compressed thread commented on today has 12 acronyms.

    [Thread #208 for this comm, first seen 3rd Apr 2026, 06:10] [FAQ] [Full list] [Contact] [Source code]

  • source
  • [–] 2 points 7 months ago

    Hmm. Might have something to play with this weekend!

  • source
  • [–] 1 point 7 months ago

    That's nice. Unfortunately I disabled these alerts due to abuse.

  • source
  • 7 comments in c/meshtastic@mander.xyz view that post
    [–] 3 points 7 months ago (6 children)

    This looks cool asf. I wish I could have enough time in the day to set something like this up.

  • source
  • hideshow 6 child comments
  • [–] [S] 3 points 7 months ago* (5 children)

    Definitely one of the "throw it on the pile" projects for me, too, but I'm for sure throwing it on the top of the pile. Have had quite a few severe storm warnings this year already and this could be pretty useful. I was originally just looking for a way to forward NWS/EAS alerts to Meshtastic from the internet, but getting them direct over-the-air is even better.

    Only complicating factor is I have to fashion or buy an antenna for ~150 Mhz since I don't have any adapters that will fit the RTL-SDR (I've just used the little stock UHF TV antenna that came with it for ADS-B and other playing around).

  • source
  • parent
  • hideshow 5 child comments
  • [–] 3 points 7 months ago (4 children)

    If you don't mind, would I be able to pick your brain? I'm trying to get into meshtastic but I'm kind of confused on where to start. I have a couple ESP32s, and I know I need some sort of lora radio for them. Do you have any good starter guides/resources?

  • source
  • parent
  • hideshow 4 child comments
  • [–] [S] 3 points 7 months ago* (last edited 7 months ago) (3 children)

    Most of what I've dealt with were ESP32-based devices like the Heltec V3 (now V4) that have integrated LoRa radios. It should be possible to add on a SX1262 LoRa radio via SPI and flash Meshtastic firmware, but most people just start with a pre-built kit since they're pretty inexpensive and have battery charging circuitry and everything already onboard (which you'd otherwise have to handle yourself with a vanilla ESP32).

    I started with the Heltec V3, and the V4 improves several gripes I had with it. They're easy to get started with, lots of case designs available, and generally good entry points.

    SeeedStudio has a lot of pre-built options as well. My new daily driver is the SenseCap T1000e which is about the size of a few credit cards stacked together. Posted about it here: https://startrek.website/post/34105873

    There's two main flavors of Meshtastic devices: ESP32-based and nRF-based. The former are generally a little less expensive and have WiFi but are a lot more power hungry.

    The nRF-based ones are more power efficient and can run longer from smaller batteries. The tradeoff is those only have Bluetooth and lack WiFi. I don't really use WiFi with these, but it can be useful if you want to connect a node to MQTT.

    Check out Seeed to see some of their pre-made options: https://www.seeedstudio.com/LoRa-and-Meshtastic-and-4G-c-2423.html

  • source
  • parent
  • hideshow 3 child comments
  • [–] 2 points 7 months ago (2 children)

    Oh wow! I was not aware how inexpensive pre-builts were. I may just pick one of those up then. Thank you for the link!! Is there any benefit of having nodes connected to MQTT? Ive heard theres some smart-home applications for people with acres of land, but would you say theres a usecase for people who live in an apartment or in.the suburbs?

  • source
  • parent
  • hideshow 2 child comments
  • [–] [S] 2 points 7 months ago (1 child)

    I don't use MQTT currently, but there's several things you can do with it:

    • Pass some messages as plaintext for use in, say, HomeAssistant
    • Bridge meshes over the internet
    • Send/receive ProtoBuf messages from an MQTT client to the Meshtastic node and the mesh
    • Plugging in some of the mesh mapping programs to visualize the mesh

    I tried setting up MQTT with HomeAssistant but couldn't get messages to come in correctly. Most likely my own fault but I just never got back to it as I didn't have a specific need in mind when I was setting it up.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 2 points 7 months ago

    Bridge meshes could be interesting. Like if I could convince a friend to get one as well, then we could use meshtastic when were nearby each other or miles apart.

    MQTT is kind of a PITA to get working. I had to use MQTT-Explorer to figure out a proper configuration. It seems since then, the developer has started using Copilot to write and test the application.

  • source
  • parent