Meshtastic devs are building an exciting new firmware library and associated firmware changes to enable standalone device use. The primary consumer devices this targets today are the T-Deck and T-Deck Plus devices.
“Departure will be at your own risk”
Since the initial tech preview is still in development, there are no official builds or support yet. But if you know how to setup a software development environment, you can easily create your own build and load it to your device.
This guide is provided with no support or guarantee; it represents my notes, and most of all please don’t ask any meshtastic devs for support.
Setting up your Dev environment
This guide assumes you’re working on a Linux computer. In my case, Ubuntu 24.04. This will not work on Windows, and while building using WSL does work, my guide doesn’t go into those details.
First, install VSCode and ensure that your local user is in the dialout group.
Validate that building the mainline works first
Before we try to build the special gui firmware, validate that your Dev environment works by following the official guides. So, follow the steps from meshtastic.org/docs/development/firmware/build.
Note 1: I didn’t use the VSCode Dev Container that the firmware repo has, because I ran into issues figuring out passing the serial interface through. You probably would need to use this though if you’re developing on Windows, and I suspect that simply adding the port as a mount would work fine.
Note 2: Set the T-Deck into flashing mode by turning it on while pressing the trackball for about 5 seconds; you know it works if the backlight and screen never turn on.
Note 3: My experience with PlatformIO required multiple close/reopens of VSCode due to the installer hanging, and the process overall took an hour of fidgeting.
Note 4: VSCode may complain that python3 binary can’t be found; if so, point it to its path. I had to also follow its suggestion and run sudo apt install python3-venv.
Build and upload gui
Once you have confirmed that you can build and upload the default branch, switch to the gui branch, which is tft-gui-work
git checkout tft-gui-work
Pull in the additional submodules. Yes you ran this command when building the mainline firmware, but it must be repeated after switching branches.
git submodule update --init .
Hop back into VSCode and build and upload your new build. At this point, you should have a successful build flashed to the device, though it wont be usable quite yet.
Use meshtastic CLI to set region and names
As of the writing of this post, the configuration UI in the firmware is inconsistent. I think some parts of it may work, but it’s not worth trying to fight. So, let’s install the Meshtastic CLI. In my case their guide didn’t quite work, so I had to create a new python3 venv and install the package within it. Maybe you were lucky and didn’t have to do this — if so, ignore the corresponding bits below.
python3 -m venv meshtastic-cli-venv
cd meshtastic-cli-venv
./bin/pip3 install --upgrade pytap2 meshtastic
Boot the device normally (not in flashing mode). Using the CLI, set the region, short name, and long name. Other features too if you like.
./bin/meshtastic --set lora.region US --port /dev/ttyACM0
./bin/meshtastic --port /dev/ttyACM0 --set-owner 'notmyname'
./bin/meshtastic --port /dev/ttyACM0 --set-owner-short 'who'
Go wild (with care)
Note that since this is prerelease, there will be fake doors, bugs, and just general confusion. There is no support yet. Don’t log bugs, don’t ask for help, you’re on your own.
Next will be a “tech preview” release with some level of support, but there is no timeline for that yet.
Differences from what you may be used to
- Bluetooth won’t work, because the UI is greedy; the architecture doesn’t support simultaneously having a UI and a bluetooth connection
Leave a Reply