30
1
submitted 1 day ago* (last edited 20 hours ago) by IcedRaktajino@startrek.website to c/selfhosted@lemmy.world

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

1
1
Never Forget (startrek.website)

Just got around to this one and finished it last night. Thanks for the recommendation. Was definitely different and fun. Kind of a "breather episode" compared to the high stakes of the rest of the ones I've been reading.

True, but I've had two grid-tie inverters, and both have had anti islanding protection and would not function when there is no utility power. Pretty much all grie-tie inverters have that protection.

I'm specifically referring to the interconnect agreement, though, which is where you have to jump through a bunch of hoops, fill out a bunch of forms, pay a fee, wait for the power company to come and inspect it, and get the utility provider's blessing before you can hook in a grie-tie inverter and export even a fraction of a watt.

And you have to go through that process every time there's a change to your system. e.g. If I start out with a 400 watt balcony solar kit, get that approved, and want to add another 400w kit, I would have to file new paperwork, pay another fee, wait for inspection, etc.

I'm all for reasonable safety measures, but the power company in my area is clearly doing all it can to pay lip service to "yes, we support balcony solar" while also making it as painful as possible for homeowners to actually implement it.

[-] IcedRaktajino@startrek.website 14 points 4 days ago

I've had to plan on a PV+battery+load sharing solution because my utility provider will fine the absolute crap out of you if you export any power without an interconnect agreement in place. I used to be able to stealth grid-tie with the old analog meters (I never produced more in a month than I used), but these new digital tattle-tale meters will rat you out instantly.

35
(Angry Lwaxana Noises) (startrek.website)
submitted 4 days ago* (last edited 4 days ago) by IcedRaktajino@startrek.website to c/risa@startrek.website

I know it's not the same dress, but it's definitely something Lwaxana would wear (but surprisingly never did).

Edit: The dress:

[-] IcedRaktajino@startrek.website 29 points 4 days ago

No thanks. Only the worst people / least deserving to live forever would be able to afford this.

Heh, I just watched "The Search" the other day which is actually what inspired this meme. The thought did cross my mind that "Seska" could be T'Rul wearing a Cardassian mask wearing a Bajoran mask.

She did, but the Seska episodes were the only Kazon episodes that I enjoyed from the early seasons of Voyager.

80

Just noticed they're used by both Bajorans and Cardassians.

Text in the first panel is irrelevant - it was just the best quality picture I could find for that scene.

124
48
Flashback Friday (startrek.website)
submitted 1 week ago* (last edited 6 days ago) by IcedRaktajino@startrek.website to c/risa@startrek.website

Edit: Added part 2

47

Regardless of the circumstances around its cancelation, the latest 'Star Trek' series has been robbed of the chance almost every other show in the franchise has been given.

[R]egardless of what you believe about Starfleet Academy‘s ending, one thing is certainly true: the series wasn’t given the chance to grow that it deserved.

Although it’s become something of a common belief among Star Trek fans that no series has a great first season (they’re often mixed, sure, but there are definitely diamonds even among the seasons assumed to be the roughest), something the vast majority of Star Trek shows have all been given is time to find their footing. It’s arguably only Prodigy that has faced a similarly unfortunate fate, booted from Paramount’s own streaming service to come to an end on Netflix after just two seasons—and that show likewise faced similar challenges of trying to find a new audience and likely was a predecessor to the ramifications of Paramount preparing itself for acquisition. Even Lower Decks, which faced a similar kind of cultural backlash when it first launched, was given the time to grow into one of the strongest series of Trek‘s latest era.

68
submitted 1 week ago* (last edited 1 week ago) by IcedRaktajino@startrek.website to c/risa@startrek.website

This series of posts is just pointing out things I've never noticed on any previous watch through. Case in point: I've seen this scene many times and always took it as Garak being like "It's dangerous to go alone. Take this.". Finally dawned on me this time around that he was just getting rid of evidence.

64
96
submitted 1 week ago* (last edited 1 week ago) by IcedRaktajino@startrek.website to c/risa@startrek.website
[-] IcedRaktajino@startrek.website 226 points 4 months ago

How many other animals did they put through a sieve to reach this conclusion? How many?!

[-] IcedRaktajino@startrek.website 114 points 6 months ago

I've recently learned that in Linux, you can use emois in filenames. I died a ~~little~~ lot inside when I learned that.

view more: next ›

IcedRaktajino

joined 8 months ago