#!/bin/sh

# meshtastic_flash_firmware.sh
# 2026-04-29
# by Gernot Walzl

# https://meshtastic.org/docs/hardware/devices/

MCU="esp32s3"
VERSION="2.7.15.567b8ea"
ARCHIVE="firmware-${MCU}-${VERSION}.zip"
DOWNLOAD="https://github.com/meshtastic/firmware/releases/download/v${VERSION}/${ARCHIVE}"
SHA256SUM="ac39f8b6517feb7bf6a6d173c46fca808680723e8bc4544edb3185e31398acdc"
DEVICE="tlora-t3s3-v1"

set -e

# download firmware archive
if [ ! -f "$ARCHIVE" ]; then
  wget -O "$ARCHIVE" "$DOWNLOAD" || exit 1
fi
if [ "$(sha256sum "$ARCHIVE" | cut -f 1 -d ' ')" != "$SHA256SUM" ]; then
  exit 1
fi

# install firmware flasher
if [ ! -d esptool.venv ]; then
  python3 -m venv esptool.venv
  pip install --upgrade esptool
fi
. esptool.venv/bin/activate

# permissions to access serial ports (over USB)
if ! groups | grep -q dialout; then
  sudo usermod -a -G dialout "$USER"
fi

# extract firmware
DIR=$(basename "$ARCHIVE" .zip)
unzip "$ARCHIVE" -d "$DIR"

# flash firmware
cd "$DIR" || exit 1
chmod +x device-update.sh
./device-update.sh -f "firmware-${DEVICE}-${VERSION}-update.bin"