goTenna Mesh community

New project announcement

Happy New Year everyone!

By popular demand, the GTM Lab project is now live on GitHub - sybip/gtm-lab: goTenna Mesh protocol playground

From the project introduction:

This is a fun project to study and re-implement the goTenna Mesh protocols on inexpensive hardware based on the ESP32 MCU and RFM95W radio modules, using only unrestricted, publicly available information. All project code is open source under the MIT license.

Currently it’s nowhere near a complete relay, or even endpoint solution, and will probably never be a true drop-in replacement for goTenna brand devices, however:

(it) can send and receive messages to/from the goTenna mesh network

And this alone should be sufficient for a few hours of fun and excitement - a well-deserved break from these stressful times.

Enjoy!

2 Likes

How about using something like this: Mini Ultra Pro V3 (With Radio) – Rocket Scream

Not gonna lie - my gut reaction was NO. The SAMD21 MCU is slower than the ESP32, the RAM and Flash are fairly unimpressive too, there are no built-in BLE or WiFi connectivity and no hardware crypto.

However, on closer examination, the hardware reqs of GTM Lab are really not that demanding! There’s a pretty good chance that you’ll get some results with your SAMD board. Also, “no built-in BLE” shouldn’t be a dealbreaker - considering all the messages “how do I turn off Bluetooth” on this forum :slight_smile:

In conclusion, I think it’s definitely worth a try.

A few pointers to help you get started:

  • to make the code 100% portable and compilable on your platform, you need to remove/replace a few lines of ESP32-specific code (don’t worry, it’s easier than it sounds):
    • eliminate all references to ESP-specific logging, maybe replace the LOG* macros with Serial.printf() or similar, and also comment out the HEXDUMPs
    • 64-bit arithmetic is used in the Reed-Solomon ECC and the Park-Miller LCG; it’s unlikely that this will be an issue, but if it is, you can replace those functions with 32-bit ones (ping me if you need a hand with this)
  • packet timing is a mess, expect to be even more so on a slower CPU, so focus on receiving even one single packet at first, and work gradually from there.

Good luck, let us know how you go, and most important, have fun!

Update: as of today, it’s a bit less of a mess, at least on RX side. @Roman, if you’re already working privately on a SAMD21 port, have a look at commit 3af4a6d, lines referencing pktStart, as they may be relevant to your work.

I wish I had time, I’ll probably get to it later at some point. I was asking about the Ultra pro because it had everything built in for a custom relay except the power is low, but most of those small devices use low power. I was imagining this with an amp, to make a relay with ability to control and check status remotely.