Martin's corner on the web

A taste of MeshCore on an old TTGO LoRa32

LoRa mesh networks (Meshtastic and lately MeshCore) come up quite often on X and Reddit. I wanted to try one without buying anything, so I dug out the TTGO LoRa32 V1.0 from my LoRaWAN days together with the case I 3D printed for it in 2020. It is an ESP32 with an SX1276 LoRa radio, a 0.96″ OLED, and a u.FL pigtail for the antenna.

The TTGO LoRa32 V1.0 in its 3D printed case, the OLED showing the MeshCore boot screen
The TTGO LoRa32 V1.0 in its 2020 case

MeshCore does not support the V1.0, the web flasher has no firmware for it. There is an open pull request #2854 that adds the board, so I tasked Claude Code with building a version on top of the 1.17.1 companion release. I had to fix three things in it:

  • the build pointed at the wrong variant folder (a copy-paste slip from the V2.1 board);
  • the radio defaults to 915 MHz, so a stock build would transmit on the US band here. I baked in the Bulgarian settings: 869.618 MHz, 62.5 kHz, SF8, CR8;
  • the user button on GPIO0 had no pull-up, and a floating pin there can drop the node into rescue mode at boot (a long press in the first 8 s does that).

My build also turns on USB next to Bluetooth. With USB, I can use the node from my Mac without the phone app and log the chats there (there is a meshcore Python package for the protocol).

The firmware takes 96.5% of the app partition; there is no room left for anything else on this 4 MB board.

On the mesh side, it worked from the first boot. On a pigtail stub on my desk, the node had 24 contacts in the morning and 72 a few hours later. 62 of them were repeaters, because a companion node only advertises to nodes in direct range, while repeaters flood their adverts across the whole mesh every 24 hours. Some of them are in Serbia and Romania, and these links are radio-only. I joined the #sofia and #bulgaria channels without asking anyone for a key.

The firmware is in my fork, mharizanov/MeshCore, branch tlora-v1. It worked, and it is quite an interesting technology. For the moment, I am not going deeper; a proper node on the roof antenna can wait.

Leave a Reply

Your email address will not be published. Required fields are marked *

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