Adventures in meshtastic

So! Occasionally I like to buy new gadgets to tinker with. I tend to like stuff that's under $50/item, whatever item that is, and ideally there's some sort of community around it so I can inevitably obsess about it with other obsessive people for about 6 months before I end up putting it in my closet never to be seen from again.

The other day I found meshtastic and I was fascinated. Low power, long range communications?! Don't mind if I do!

The app was easy enough to download from my iPhone/Android app store, and I ended up getting LilyGo T-Echo's because I liked that they were lower-power usage than other alternatives and came pre-assembled in a nice case and all. AliExpress is the official store, but Amazon has them as well - I grabbed them from Amazon because shipping was faster.

The meshtastic website is pretty great, but I wanted to document a few things here that tripped me up when I started, just in case anyone else out there is looking for information!

First and foremost, firmware is key. The devices I got shipped with meshtastic 1.3.X which turned on, but didn't do much else. The firmware on the base stations has to be kept relatively up to date to stay in sync with the mobile app, which updates regularly. Luckily, the T-Echo devices are rather easy to update: double-click on the topmost of the two left-side buttons, a flash storage device will show up on your computer that'll let you drag over firmware files, and then you just drag over the latest firmware file for the device from here.

For my first device - this worked great! I dragged the firmware over (no need to worry about the name of the firmware file) the device saw it, rebooted/applied it, and I was up and running with my first node on meshtastic 2.0.10.

My second device was not so easy... I tried the exact same process, but it didn't reboot nice and easy. It ended up in some weird state where the e-ink display didn't fully refresh properly and the lights on the right side of the T-Echo was flashing like crazy. It was unresponsive to button pushes, other than the double-click of the topmost right button which opened up the flash storage device again.

I tried flashing all different firmware versions via this drag & drop method - no dice :(

I saw that meshtastic made a GUI flasher - that was something worth a try. I used the meshtastic gui flasher to try but since Python on Windows is a pain, I pulled up my macOS box and it was quick and easy to get running. In the end, I just used pip to install it instead of using the download from the meshtastic github - way easier :).

The flasher had the same issue I had with the drag-and-drop firmware upgrade, and from what I could tell, it was just attempting the same process behind the scenes. The good news is that I could validate that the bootloader was the right version, so that helps!

Now, for the T-Echo there's two major firmwares you can flash with. Meshtastic, and SoftRF. Now, I didn't want to end up with SoftRF, but I figured I'd see if I could at least successfully flash/resseurct the device. I downloaded the latest SoftRF firmware and, SUCCESS! Well, at least I knew the device wasn't bricked! I tried one more time to drag-and-drop flash now that SoftRF was working, but no luck. It failed just the same.

I did try the meshtastic python command line on Windows to see if I could get contact. It installed easy enough once I renamed the executable here to .exe, but it was unable to communicate with the device. It would either give me a command failed type message, or say that the connection was rejected. As far as I could tell, it wasn't getting a serial connection to the device and that's what the python commandlets were expecting.

I kept reading about wiping a part of the device that wasn't touched during the firmware upgrade, but I was still a bit confused (even though in general the instructions are pretty good...). There was a different firmware file to drag over that just wiped the other portion of the device, but then I needed a serial console and I didn't have a USB-to-whatever pins I'd need programmer to use... and I really wanted to get this thing working. I kept trying all kinds of flashing combos, pulled the battery out for a while to see if that would help, etc. but no luck.

Exhausted, I put the programmer in my cart to purchase, but figured I may as well see if the serial console is exposed via USB, before I go out and buy something new. The python meshtastic commandlets couldn't connect, but if I could just find a terminal connection to this thing, maybe I could see what was going on...

I tried YAT - yet another terminal which wasn't super intuitive and didn't allow me to connect. After browsing the forums a bit, I found information that pointed me to the USB serial driver and TeraTerm. Once I installed that driver, rebooted my system, and pointed TeraTerm at the 'USB Serial' COM port device on my windows machine... it worked! And I was greeted with the fact that my device was actually in some sort of weird boot loop.


Well, the nice thing is that 1) I could at least see the thing was alive, and 2) it gave me something to google! Everything at this point, pointed me to that I needed to wipe the 'extra' space on the device, but now that I was confident I had console access via USB and didn't need a programmer, this was easy.

I uploaded the wiping-firmware, and got this at my console in TeraTerm:


I hit enter and then 'Done' showed up - that was just as easy as I hoped! I double-clicked the topmost right button again, dragged over the latest meshtastic firmware and... SUCCESS!

I was able to get my second node set up quickly, and send/recieve messages right away.

Key takeaways:

  • Meshtastic firmware is important and needs to be kept up to date
  • The T-Echo exposes a console over the USB cable that's accessible once you install the proper USB serial driver and use TeraTerm (I'm sure other terminal apps will work, but TeraTerm was easy)
  • Don't be afraid to wipe the extra space on the T-Echo device to get things working again if things are being weird.

I'm looking forward to getting some new antennas (another post on that soon...) and testing this out to see how far it can send/recieve! Very cool :)