Realizing Meshtastic's Promise with the T-Deck

Meshtastic—a simple off-grid mesh network used to transfer short messages—is a neat bit of tech, but until recently, most development has focused on little nodes with or without tiny OLED displays, and a separate phone app or web UI to actually interact with the mesh.

The major use case I have for Meshtastic is backup comms—when cell networks and physical infrastructure may be unavailable. In those conditions, I don't want to run my full computer, or even a full smartphone, just to communicate long range via text.

Enter the T-Deck:

Lilygo T-Deck running experimental UI Meshtastic firmware

If the Meshtastic community could focus on a few 'halo' devices like this, I think general Meshtastic adoption will increase a lot further. The current state of Meshtastic, where you typically buy a tiny node and then use it with your phone or computer, relegates the tech to an existing base of radio enthusiasts, mostly.1

Often when I post about Meshtastic, I get the response: "I thought it was supposed to be off-grid. Doesn't requiring an app that has to be downloaded from an online App Store make that kinda impossible?"

Yes, yes it does.

And forget about trying to explain how local Bluetooth or WiFi connections don't require a working Internet connection, you've already lost most people's interest by that point.

Which is why I love the T-Deck—it has it's warts, but it's the first truly-standalone Meshtastic node that would be useful to me in an emergency, especially with a 5000 mAh battery that lasts a few days!

Not only that, it still retains the ability to interface with the phone app and self-hosts a Web UI over WiFi for advanced configuration and chat.

But the UI is currently trash. At least if you want adoption from anyone outside the world of arcane RF and ham enthusiasts used to QRPing and DXing.

Video version: I have a video version of this blog post as well: This device makes Meshtastic the BEST off-grid tech

Installing the Experimental T-Deck UI

I've seen murmurs around an experimental T-Deck UI; some people posted about it on Reddit, some in random YouTube video comments. And a quick DDG search brings up this YouTube Short... which said 'here's the tutorial', but I couldn't figure out where it was, until I dug into the comments and figured out the Short was using a 'long form video link' which doesn't show on YouTube's desktop layout!

So I eventually found the full tutorial video, but the actual instructions were buried in the description with little formatting.

So I've re-written the guide for flashing the experimental device-ui onto the T-Deck:

Download the latest 'fancy T-Deck' build from here, specifically, the firmware-2.5.3.bfe99b2.zip artifact.

Note: This CI-generated build linked above will vanish after 90 days—according to Meshtastic devs, people kept filing support requests against these experimental builds, so first and most important: don't do that!

And second, it looks like at some point you'll need to start building your own images. I'll maybe update this guide to show you how to do that too :)

  1. Set the T-Deck into flashing mode: hold down the center trackball while turning on the power switch.
  2. Visit https://flasher.meshtastic.org/ and install firmware-2.5.3.bfe99b2.zip (select "Full erase and install").
  3. Close out of the Meshtastic flasher and visit https://esp.huhn.me/ and connect to your T-Deck.
  4. Expand firmware-2.5.3.bfe99b2.zip and next to the 0x10000 slot, select the firmware-t-deck-2.5.3.bfe99b2-update.bin file and click 'Program'.

Once it's done, follow it's instruction: To run the new firmware please reset your device.

Again, because I know some people will ignore the warning above: Don't file support requests or waste Meshtastic contributors' time asking for support with the experimental UI firmware. This is just for testing at this point.

Using the Experimental UI

Lilygo T-Deck running experimental UI Meshtastic firmware - messages

There's a reason why this is considered experimental. It looks pretty, and the features that are implemented, like the simple connected nodes listing, are already eons better (IMHO) than what you get even in the iOS app.

But there are many, many features that are either not implemented or completely broken. Like a few, off the top of my head:

  • Sending messages (Apparently I forgot to set the region to US, oops!)
  • Configuring channels (See Manuel's comment below!)
  • Bluetooth access so my phone app can use the device

There is a lot that does work, though—even some of the simple things that leave a great first impression, like a boot screen, smooth scrolling (mostly), changing the alert tone, and other essential settings. It may seem silly to some people, but those surface-level bits of polish can really rope in first-time users.

Would I recommend you go out and buy a T-Deck and flash this firmware to it? Not yet. The default firmware has more functionality just by virtue of being able to be used over Bluetooth/WiFi—on device functionality is extremely limited because it's mostly hidden behind arcane key combos.

I think Lilygo's acknowledged the popularity of the T-Deck for Meshtastic, so much so they've built out the T-Deck Plus, which includes everything you need pre-built (and pre-flashed, albeit with the default firmware) so you can get up and running without needing a 3D printer or even a separate computer!


  1. Yes, I know there is a place for many different types of nodes... but Meshtastic's ultimate success is based on getting more people to join the mesh—without geographically-distributed nodes and some people putting nodes higher up, you won't get widespread coverage and the utility is greatly reduced. Just relying on ham/RF enthusiasts (which is kinda where I see Meshtastic today) won't get any kind of critical mass, you have to target other people too. Get them interested on a base level, then start getting them interested in setting up router nodes, being part of the community, etc. :) ↩︎

Comments

Pretty cool piece of tech. I am an amateur radio operator as well as a Linux / self-hosting / FOSS enthusiast. Meshtastic seems quite cool, but I have not dug into in depth myself yet. Appreciated reading through this post, I am now intrigued to learn more about meshtastic

Developers have stunted interest in this by pulling down the recent firmware with the nicer UI. Even if it was pre-alpha or something a lot of people wanted to tinker with it and will now be disappointed when they can't actually run the great looking software shown in images online and even product listings.
Just a reminder to archive everything when something cool comes up because coders bothered by github comments will rage-delete everything like children.

No they have not, you're entirely free to build the experimental branch yourself instead of whining about the automatic expiry of CI runs

devs have a right to work on something without people like you, who don't know what they're doing wasting their time

Did you build your own house? Your own car? Did you make your own CPU? GPU? RAM?

Stop whining. He's wrong saying devs are acting like children. And you're right saying devs have the right to do whatever they want. But you acting all high and mighty saying that people can just build stuff themselves is hilarious. You wouldn't even be able to type that if it wasn't for the technology you use that you wouldn't be able to build in 10 lifetimes.

Some people just want to tinker and some get inspired by it? The majority won't. But people are a curious bunch and just having that curiosity is a good thing. It keeps people going. Everyone in any field got curious and enthusiastic about something at some point and that started the rest of their lives.

So, if anyone has the firmware file, just share it. So many people are looking for it. Not just on here, in other places on the web as well.

Wow. Tone it down.

Your examples are ridiculous. Building your own house/car/CPU/GPU/RAM requires raw materials and processes that the average person does not have access to.

Building software requires:

1. A computer
2. A suite of build tools - usually a compiler and some dependencies
3. Instructions on how to do it

We can pretty much assume anybody wanting to use this software has a computer. All right, then that leaves build tools and instructions. The build tools for open source software are typically free, so that's not a problem. Leaving us with instructions.

If given the correct instructions, yes, anybody can build software. They aren't *writing* the software. They are just entering a few commands to tell their computer to produce the final product from the source code.

I got started with Unix computers in 1st year university. I heard there was a game called "netrek" and I wanted to play it. I didn't know anything about programming in C, or how a compiler worked, or what a pointer was. But I could read instructions. Those instructions said something like:

1. Download netrek-whatever.tgz from this site.
2. Type "tar xzvf netrek-whatever.tgz"
3. Type "cd netrek"
4. Type "make config ; make install"

That was it. With zero knowledge and 4 lines of code I built a multiplayer game on an operating system I had never used until the week prior. And it was much less effort than building a house.

So yeah, if you want it then take some initiative to build it from source.

Thanks, Jeff! Up and running on my T-Deck+ that has been mostly unused since I got it. Despite the 'experimental' caveats, this firmware is what I was hoping we'd get from the T-Deck. I agree that this is the perfect entry point for a lot of people, I'm excited to see this continue to develop! (Shout out to mverch67, we should all support him if we can!)

lol I find it a little comical you point out that " people kept filing support requests against these experimental builds' and thought "oh well I'll just send them even more". I'd love to know if you even worked with the developers for this articles or your just a nother "influencer" getting on the band wagon. Way to go.

I'm an open source developer who deals with hundreds of new issues per week across my hundreds of GitHub projects, so I totally understand where the developers are coming from. Which is why I put not one, but two bold warnings for people not to go asking for support for the experimental UI.

There are two options for me: 1. Don't share the cool things I learn about like Meshtastic, or 2. Share the cool things I learn, and give people the knowledge to replicate what I've learned. I choose the second option, but if Meshtastic devs think I'm doing a disservice to the community, I'd be fine removing that portion of the blog post with a note about why they'd rather people not try it out.

Thank you for sharing your experience and process on how to upgrade to this fancy firmware that Manuel wrote. It makes the community better as a whole when people experiment and share. Please do consider a write up regarding how to make our own images. There is a good primer here:

https://meshtastic.org/docs/development/firmware/build/

But I don't know enough of how to integrate the fancy gui pieces with the newer firmware revisions. A tutorial would be most appreciated.

No manners, that is what I see. People sharing their code for the benefit of the community. No one is a slave to anyone here, no one HAS to do anything for anyone and if someone is nice enough to share their experimental code, telling you to NOT fill support requests... then f*cking don't do it. Have some patience and respect and stop being a ungrateful pig.

Hi Jeff,
this is Manuel the author of this fancy UI firmware. First of all, thanks for the short video of the work I've done for meshtastic and T-Deck.
I try to develop the UI in a fashion that it can be used by any non-tech person including my grandma and a six year old, so that it'll really be an EDC off-grid messenger device for everybody.

There are some things no quite correct in your blog post, the messaging is fully implemented and I'd say the channel configuration *should* work (although you would have to type in the base64 PSK using the keyboard). Bluetooth is not supported due to the way the UI interfaces with the firmware (uses internal Bluetooth serial connection queue) but it's possible to use WLAN with an Android app. Also, the web-client can be used with an USB-C cable for some advanced configuration as well as the python CLI.

It would be nice if you can add a sponsor link to my work underneath your video:
https://github.com/sponsors/mverch67

Cheers,
Manuel

Thanks! And thanks especially for your work—I'll add a link below the video too. I have updated the post with a note to look down here to your comment for more info too.

Manuel! Thank you for your work. I just learned about this system and im looking forward to exploring. I look forward to hearing of your continued progress.

Parts list for your T-Deck? With links would be a bonus. Your case looks nicer than anything LilyGo offers.

Merci!

I am unable to find firmware-2.5.3.bfe99b2 on the flasher or the other link you provided. This new firmware really seems to be quite elusive.

Hello Jeff, well you mentioned that the software on T-Deck wasn't quite smooth, maybe you could make another video with ChatterBox, it's (if I'm not mistaken) made by Matt Calhoun. You can find his YouTube's channel online. Looks promising, keep on making Meshtastic videos, it's awesome!

I was looking at ChatterBox stuff. I was wondering if it can interface with Meshtastic Nodes. But, no-one really seems to either talk about it, or mention if it does or not. Would be cool though if so. I have a Heltec V3 and a T-Deck at this point, building a mesh in Northwest Indiana. No-one else seems to be near me outside of 2 nodes in a town about half hour from me.

I'd love to hear more about how to build our own images! I'm intrigued to follow this project as it develops further!

Just installed this onto my T_Deck today in the UK and love it. Thanks both Jeff and the dev who did the great work!!!!

Couldn't find the source version on the Meshtastic firmware updater that you suggested to do the full reset. I selected the latest alpha and beta and did that... works.

When I flash using the website you suggested using the file I downloaded, unzipped and uploaded to the exact slot you said, file firmware-t-deck-2.5.3.bfe99b2-update.bin, it says it flashed and to restart the device, restart and all I get is a blank screen.

If I go back to the meshtastic firmware it works. 2.5.3.bfe99b2 has been removed from the meshtastic flasher. 4 months on, still not even able to try this firmware!

I did this today and it worked fine.
It was a little confusing with the re-written instructions.
You need to do two things: 1) download the zip 2) extract the zip to a separate folder.
flasher website. you don't select any of the drop down firmware you use the folder icon to browse to the zip file.
Once that's loaded turn off the device and hold down the trackball and power on just like for the flasher. Use the second website (esp32) and browse to your extracted zip folder for the correct update file then hit program. turn device off an on then is should run the new firmware.

Any chance you (or anyone) could share the firmware zip file? I created a github account just to be able to download it and even with an account the download is not possible.

Can you initiate a chat from the new firmware if they aren't in the chat list? I can't figure it out if so.

Looks great! The only problem is how do I retrieve my channel encryption key that my mesh uses and enter it on the T-deck. I understand that it needs to be typed in manually, but how do I get the key, IOS app only generates a QR code for the key.

Just flashed 2 T-Deck Pluses and a standard T-Deck(in a zerofox3D case)! Compared with the base firmware it's light-years ahead!

the firmware link has expired. where do i get this now?

This is what I can't stand about github, its never easy to just download something and now its gone, Can't seem to find it any where else

Firmware is also showing expired for me too and I'm unable to download it

Been running this for a couple of days now but it has not connected to a single radio. It appears to configured for the default channel and there are about 30 other radios in my area. Guess we will have to wait for software updates.

Is your regional zone set? It won't communicate properly unless it knows which zone (and therefore frequency) it can communicate on.

Reinstalling the software fixed the problem. Can now connect to other radios on the default channel. No point though, the software at this point is pretty much unusable.

links have expired. Does anyone have a google drive link to the zip file?

The transfer you requested has been deleted.

My T-Deck arrived today. I was so happy to see someone finally share the firmware. However the page says the file has been deleted. It's been only one day.

Thank you!!!! I installed it, and I am in total agreement. I won't contact the devs with anything, honestly. They are working on all of the things I would love to see worked into the system. It's exactly what the community would need in order to bring more folks into Meshtastic. The T-Deck isn't terribly expensive, and now with the new T-Deck out, it's one step closer to being an out of the box device that almost anyone would be able to use right away. I love it. I will keep exploring this UI and seeing if I can make certain things work.

Thank you again for posting this. This is a fun and useful comms device, and I can't wait to convince folks in my area to get into it, or let me put a solar powered relay up on their property somewhere. If I can't get them to try it out, maybe I can get them to help me out.

FIRMWARE DOWNLOAD HERE

I have been able to get the firmware just moments ago (thank you to the anonymous person who shared it).

I'm working now, I downloaded it during my work and so have not had time to flash it. I did a scan on it (even though it's source code) and AV results say it's fine. The size of the file also matches the reported original size of the firmware. However, with that said, take your own precautions!

I have created a torrent for this firmware so that it can be shared easily instead of always finding dead links and being disappointed. I will seed this torrent myself for the next several days. If you download it, please seed and help others.

Right after downloading I renamed the file from "firmware-2.5.3.bfe99b2.zip" to "Lilygo_T-Deck_firmware-2.5.3.bfe99b2.zip".

You can download the torrent file in either of these two file sharing sites:
https COLON SLASH SLASH filetransfer DOT io SLASH data-package SLASH 2chPGurZ
https COLON SLASH SLASH file DOT io SLASH 5UQdcfDf40Hw

Please be kind and seed after download.

Just in case I managed to flash the "fancy UI" to my brand new t-deck. I just played for few minutes, and there is some odd thinks there. But that was fun :)

Exactly right now, the pull request https://github.com/meshtastic/firmware/pull/3259 is failing for some specific builds, but it is green for the t-deck (or better for the ESP32-S3).

You just need to checkout the PR and follow the standard instruction for build/flash.

In case I did it from a mac, then normal vsCode / PlatformIO stuff just like in the readme.

Please remember to use a very good USB clable.

The PR is again green :)

So you can get your UI via VS-code commands. Check the main README. You just need to checkout the PR.

At present it actually works for minimal needs. Very minimal as it is buggy in random places :) I mean it is dev.

I am building this firmware kinda weekly, it works and it is nice.

A+
F

With the firmware swapper/loader that's out there I'm wondering what non meshtastic uses this thing has. Yes I know it's ESP32 based, but can I load other firmwares in and get a useable product? Much as i like mesh, it's a LoRa blackberry. I want to make use of it. Especially for taking notes or.. I dunno. Depends on what uses present themselves. I just want the door open.

If you want to get the latest firmware without a) setting up a local dev environment b) looking through the CI output to find a build which completed and includes the right files there is a good video if you search "Easy Way To Build T-Deck Meshtastic Fancy UI!" (link was detected as spam)
It uses gitpod.io to do the build.
It also recommends using a Launcher program, which I did and is useful when switching between firmware (even if on mine is really likes being upside down, despite changing the options many times).
Only minor point it looks like the fancy ui has a new target to the build line is now
pio run -e t-deck-tft

I finally managed to install this firmware on a T-Deck.

A few comments, not as criticism ;) but as a help for the others who may want to use that "Fancy T-Deck" firmware.

1: at step 4, the correct choice is the fourth line (with 4 zeroes) and not the first one (with 3 zeroes). Your instructions are correct, but I suppose others may be as inattentive as I was...

2: the firmware actually works very well and appears quite usable. To set region, etc, just go to the last item on the left (settings & tools) and choose as appropriate.

3: it is possible to send messages to other nodes by long pressing on a node in the node list

4: I noticed a few things which did not work, which I will just list here. Maybe that can help others.
4.1 It does not appear to be possible to change the name of the main channel or to add names to secondary (group) channels. I can enter them, but I can't get out of the menu to save them.
4.2 The map does not appear to work. I see an image of earth, but that is it. Maybe some map data is needed on the SD card, maybe it is not yet implemented.
4.3 GPS probably works because the device magically found the time, but my device apparently does not send its position.

5: I read here that additional settings are in a web interface, but I have no idea how to connect to it. I understand it should run via Wi-Fi, but there does not appear to be any settings to define the network. I would appreciate a pointer.

6.1 Finally, I found a way to connect to the web interface. Connect via cable. Use a Chromium browser and point to https://client.meshtastic.org/ and then use the serial connection.
In the web interface, GPS and Wifi can be activated. One can also enter channel names.
It is not always obvious how to save settings, but eventually they will be saved. This is a bit confusing.

6.2 I have another T-Deck and I use the normal firmware with it an iOS client. I rarely see messages on the default channel. I think the normal firmware only tells the messages received when connected to the iOS client, which means almost none of the time because the bluetooth connection times out. Possibly that is a bug in the firmware, as a T-Beam behaved differently a few weeks ago, I think. The new firmware is very useful for me in that it is always on, I finally got to read messages informing the local community.

More points about using the Fancy T-Deck:
4.4: Long-pressing on the “nodes” icon (2nd on left) brings a menu to select which nodes can be displayed, but this part does not appear to work well yet: there does not appear to be any way to exit the menu and trying different things made the T-Deck reboot.
4.5: Long-pressing on the “home” icon (1st on left) brings a red message “Resync”. Not sure what it does, probably it helps when the interface is a bit confused.
4.6: On the home display, one can use the trackball to see more info. Without connecting to the web interface my GPS position was not known and Wifi was off. After turning these on in the web interface, it displays position and network data. This part appears to be a bit buggy, it is easy to have the device reboot there.
4.7: Sometimes, the T-Deck crashes and hangs when left alone, e.g. during the night.
4.8: Once, the T-Deck did not receive a private message sent through the mesh. At the sending end, the message was acknowledged by another node, but that was it. Maybe that is a problem with the mesh or poor reception, though.
4.9: Long press on the “setting” icon once brought an onscreen numeric keyboard. I had to reset, as there was no way to get out. Now it just slowly switches off the screen and hangs…
4.10 Once the T-Deck is connected to my home wifi network, I can ping it but the round trip takes a very long time. I cannot connect to the web interface in that way. But it is then possible to connect via the Android app via Wi-Fi, then. One gets roughly the same capabilities than with the Web interface.

Since they aren't building the firmware artifacts for the t-deck due to the influx of support requests, and the original firmware artifact is now unavailable, I went ahead and built the firmware from scratch like they said. In case anyone is looking to do this, Here's the quick and dirty version of it:

(Be warned, you should probably at least have some idea of what you're doing with all this, do it at your own risk)

Also fair warning, this just builds from the latest commit of the `tft-gui-work` branch of the firmware repo, so there's a decent chance things might be in a weird/broken state when you decide to build things.

[THIS FAILS ON WINDOWS: https://community.platformio.org/t/createprocess-no-such-file-or-direct… , BE WARNED, USE LINUX]

0. Install PlatformIO: https://platformio.org/platformio-ide

1. Clone the `firmware` repo: `git clone https://github.com/meshtastic/firmware.git`

2. Checkout the `tft-gui-work` branch `git checkout tft-gui-work`

2. Initialize and update all the submodules: `git submodule update --init --recursive`

3. In VSCode/PlatformIO, open the command pallete (Windows: Ctrl + Shift + P - Mac: command + Shift + P)

4. Enter/select "PlatformIO: Pick Project Environment" in the command pallete and select/set your target to `t-deck-tft` [This is important!, there are two variants for the t-deck, `t-deck-tft is the correct one for the fancy GUI]. If `t-deck-tft` doesn't show up, try restarting VSCode. PlatformIO will then take a while to download all the required libraries.

5. Once complete, open the command pallete again and enter/select `PlatformIO: Build` to build it, this will also take a while.

6. Finally, once the build is over, you should be able to flash your device by putting it into download mode, connecting it, and opening the command pallete entering/selecting `PlatformIO: Upload`

7.If that doesn't work or you can't directly flash your device through VSCode/PlatformIO, you can follow the steps from Jeff's original blog post using the meshtastic.org flasher and the https://esp.huhn.me/ flasher, using the files `firmware\.pio\build\t-deck-tft\firmware.factory.bin` and `firmware\.pio\build\t-deck-tft\firmware.bin` respectively. I dont know why both are required still, but my t-deck showed a black screen until I tried using the esp.huhn.me flasher.

Hope this helps someone!

Got my T-Deck plus and was lucky enough to install the "fancy" UI without issue. This is my first Meshtastic device and hoping to get additional guidance on the limitation of this software. I bought it simply because I did not want to be tethered to the phone, but as an independent stand alone unit. However, I'll probably buy a basic unit to run range tests and usability.

As I understand from above, Bluetooth is not operational so the Meshtastic app is not functional for this device/software.. So all configuration edits must be done via the client.meshtastic.org site. Is that correct?

Is Wifi available? If so, is it of any value?

Is there a current list of operational functions with this software and or manual/instructions?