vagabyte

Meshtastic T-Deck fancy-ui manual build instructions

This blog post shows you how to build and flash the meshtastic-firmware with the new “fancy-ui”

The build instructions are meant to be executed in a fresh and clean ‘debian 12’ environment (e.g. a container or a vm). Execute the flashing instructions on your own risk, i am not responsible for your bricked t-deck. Be very careful when copying shell commands in your terminal and always try to understand them first.

Build instructions:

inside the environment:

  • install requirements with: sudo apt update && sudo apt install -y git python3-venv
  • clone the meshtastic firmware repo with the right branch and enter the directory: git clone -b tft-gui-work https://github.com/meshtastic/firmware.git && cd firmware
  • initialize submodules: git submodule update --init
  • create a virtual environment and activate it: python3 -m venv venv && source venv/bin/activate
  • install platformio with pip: pip install platformio
  • and build the firmware for the t-deck with: pio run -e t-deck (this can take quite some while)
  • at last we need to build the filesystem: pio run -e t-deck -t buildfs

Flash instructions:

After a successful build you need to get this folder from the build-environment: ‘firmware/.pio/build/t-deck’. Let’s say you’ve put it in ‘/tmp/t-deck-firmware/’ and you got a shell in the directory. We will again use a virtual environment to setup all requirements for the flashing process, so you’ll need a recent python version up and running on your system.

  • create a virtual environment and activate it: python3 -m venv venv
  • copy the compiled firmware binaries to your directory and rename them to avoid confusion later: cp t-deck/firmware.bin ./firmware.update.bin && cp t-deck/firmware.factory.bin ./firmware.factory.bin
  • get the correct bleota binary: wget https://github.com/meshtastic/firmware-ota/releases/download/latest/firmware-s3.bin
  • copy the littlefs binary from the build into your directory: cp t-deck/littlefs.bin .
  • the content of your flashing directory should now look like this:
1
2
3
4
5
6
7
.
├── firmware-s3.bin
├── firmware.factory.bin
├── firmware.update.bin
├── littlefs.bin
├── t-deck
└── venv
  • make sure that your venv is activated: source venv/bin/activate
  • install the esptool: pip install esptool
  • connect the t-deck via usb with your computer and then power it on while holding down the trackball to get it in flashing mode
  • check which port your device is mounted at: ls /dev/ttyACM*
  • you can omit --port to auto detect the port (not very stable)
  • check the connection with the esp-tool esptool.py chip_id --port <your-port>, your output should contain (of course the MAC can be different):
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Detecting chip type... ESP32-S3
Chip is ESP32-S3 (QFN56) (revision v0.2)
Features: WiFi, BLE, Embedded PSRAM 8MB (AP_3v3)
Crystal is 40MHz
MAC: <foo-mac>
Uploading stub...
Running stub...
Stub running...
Warning: ESP32-S3 has no Chip ID. Reading MAC instead.
MAC: <foo-mac>
Hard resetting via RTS pin...
  • and now we can start the flashing process by erasing the flash: esptool.py erase_flash
  • flash the base firmware image: esptool.py write_flash 0x00 firmware.factory.bin
  • flash the bleota binary: esptool.py write_flash 0x260000 firmware-s3.bin
  • then flash the littlefs binary: esptool.py write_flash 0x300000 littlefs.bin
  • and finally flash the firmware update file: esptool.py --baud 115200 write_flash 0x10000 firmware.update.bin
  • wait for the process to finish, reboot your device and enjoy!