Decoding Meshtastic With GNU Radio

Meshtastic is a way to build mesh networks using LoRa that is independent of cell towers, hot spots or traditional repeaters. It stands to reason that with an SDR and GNU Radio, you could send and receive Meshtastic messages. That’s exactly what [Josh Conway] built, and you can see a video about the project, Meshtastic_SDR, below. The video is from [cemaxecuter], who puts the library through its paces.

For hardware, the video uses a Canary I as well as the WarDragon software-defined radio kit which is an Airspy R2 and a mini PC running Dragon OS — a Linux distribution aimed at SDR work —  in a rugged case. GNU Radio, of course, uses flows which are really just Python modules strung together with a GUI.

The GNU blocks send and receive data via TCP port, so using the radio as a data connection is simple enough. The flow graph itself for the receiver looks daunting, but we have a feeling you won’t change the default very much.

If you’ve wanted to dip your toe into Meshtastic or you want a meaty example of using GNU Radio, this would be a fun project to duplicate and extend. While Meshtastic is generally a mesh protocol, you can set up a node to act as a repeater. You never know when decentralized communications might save the day.

19 thoughts on “Decoding Meshtastic With GNU Radio

  1. What’s in a name?

    You wouldn’t name a new church ‘People’s Temple’?
    Name a new political party ‘The Bolsheviks’?
    Introduce a new ‘Yugo’?

    Why would you name any networking product *tastic?

    You realize LANtastic existed and sucked to heaven?

    MacAfee/Norton AV level of suck. MacOS 7. WinME on old (at time) non PNP hardware. LANManager for DOS. node.js.

    LANtastic made Netmare 2 look good. 5 years after netmare 2 was obsolete.

    Going to try and reboot AOL next? Surely the stink has dispersed by now. Bet the kids don’t even us AOLer as a slur.

    They should select a new name.

    1. Who GAF what the name is? Did you really just write three paragraphs about why someone who isnt here named a protocol in a way that you are triggered?

      Its a cool article, just chill.

      1. That’s the cool thing here with SDR-receive flows. WIth a RTLSDR, you can monitor 5 of 8 presets in the USA. If you’re in Europe, you can monitor all 8 presets.

        The most common (at least in my area) is LongFast. Real hardware requires setting that, and then only communicating to other devices with that specific preset. By monitoring other presets with an inexpensive SDR, can alert you that you have activity that your Meshtastic nodes aren’t seeing.

        And well, most people here are going to have a RTLSDR and an antenna. It makes barrier to entry basically free, for receive! SDR transmit does require pricier devices like a HackRF, but allow shifting the Meshtastic protocol and LoRa modulation to any extent the SDRs can transmit at. (follow the law, or the FCC be come a’knocking!)

        1. Speaking of SDR receivers though; I was surprised not to actually be able to get this working in a couple hours of trying yesterday. I have a sdrplay receiver, which normally works better and has a nice wide spectrum versus the rtl sdr’s. Turns out that the conventional installer for gnuradio for sdrplay receivers is from a version where grc flows were in xml instead of yaml, and I’m not sure they can be converted cleanly without intervention.

          Really I’m not even sure it would work if I did that, because while I’m sure you’ve done a cool thing, and maybe this is partly because I need to be more awake when I’m looking at it, but I couldn’t make heads or tails of this modern way of setting things up. It’s almost as bad as the time when a group I was in decided to use Node to make a webpage – whereas all I’d ever done was make things like lamp servers, and webpages made of actual source code where what you type is sometimes vaguely related to what the browser receives, and you have a server with actual files in it. I applaud you, and I have absolutely no idea what you’re doing.

    1. Hey, this is the creator (Josh) of the Meshtastic-SDR transmit/receive SDR flow here.

      So, absolutely, if you want in the ecosystem, pick up some Heltec V3 boards and batteries, print yourself a case, and have a great time. and check out the Meshtastic discord too while you’re at it.

      I wrote this because there were things I wanted to do, that can’t be done with LoRa hardware.

      1. I wanted to monitor all presets at once. Cant do that on real hardware, but it’s a CPU problem with SDR.
      2. I wanted to be able to make a repeater that converted different presets (read: different bandwidths and lora geometries) back and forth.
      3. I wanted to see if I could make a completely RX/TX SDR node. And I have!
      4. With a completely SDR node, I wanted to bring LoRa modulation into 144-148MHz (2m amateur band). And I’ve done that!

      With the LoRa modulation being exactly that, we can bring Meshtastic (TM) into areas where there aren’t any chips or dedicated transmitters yet. The SDR flow opens up a whole range of possibilities with Meshtastic communications.

  2. “Meshtastic” is a trademarked name, so I predict a takedown request to gitlab in 3…2…

    Owner: Geeksville Industries, LLC (USA)
    IPR: National Trademark Registration
    Country of filing: USA
    Registered (January 12, 2021)
    Serial number: 88948799
    Registration number: 6243557
    Kind of mark: Individual
    Type of mark: Word
    Nice classification – NCL: 9

    1. Oh no, nobody should ever reference a trademark ever unless they’re the owner! Would make it hard to actually talk about products, though.

      “Yeah, I use a *REDACTED*, it’s really good.”

        1. People can threaten legal action or actually sue for any reason they want. If one side is wealthy enough, they can keep it up indefinitely even if they don’t have a legal leg to stand on.

          1. As the creator of Meshtastic-SDR as seen here, I’ve already offered a name change or distancing as not to create any trademark issues. Im not one of the Meshtastic devs (yet), and Im not trying to masquerade as one.

            My goal was to show that my SDR flows for TX and RX were meant to interact and interoperate with the Meshtastic ™ ecosystem.

            If there’s a problem, all the admins know I’m easy to get hold of!

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.