Work / Hardware & Making

ESP32-S3 / LoRa bench

ESP32-S3 and LoRa bring-up: three boards incl. a LilyGO T-Deck, Meshtastic 2.7 staged, my own I²C diagnostic.

Status
explored
Role
Solo
Timeline
Jan 2026 – Sep 2026
  • Arduino C++
  • Arduino IDE 2.3
  • arduino-esp32 3.3
  • ESP32-S3 (native USB)
  • LilyGO T-Deck
  • esptool 5.4
  • Meshtastic 2.7 (third-party firmware)

TL;DR

  • I bring up ESP32-S3 and LoRa hardware on my own bench.
  • Three ESP32-S3 boards have connected to it, a LilyGO T-Deck among them, and the Meshtastic 2.7 release is staged for flashing.
  • For board bring-up I wrote my own I²C diagnostic in Arduino C++.

The bench

I built the toolchain end to end: Arduino IDE 2.3, Espressif’s arduino-esp32 core next to the Arduino ESP32 and AVR cores, and the CP210x and CH34x USB-UART drivers. The boards talk over ESP32-S3 native USB (USB-Serial/JTAG and TinyUSB CDC), plus CH340K USB-serial hardware. For the T-Deck I pulled touch-controller fix firmware; for LoRa mesh I staged the Meshtastic 2.7.26 ESP32-S3 release with esptool 5.4.

The I²C diagnostic

It pulses the OLED reset line on GPIO21, starts I²C on GPIO17/18 at 100 kHz, sweeps addresses 1–126 every 3 seconds, and reports each device that ACKs over serial at 115200 baud.

Next

A working mesh node. Nothing yet proves a flash completed or that nodes talked to each other; once one does, this becomes a build.

Verified numbers

MetricValueSource
I²C sweepaddresses 1–126 every 3 s, 115200 baudlocal: .arduinoIDE/recent-sketches.json
Meshtastic release staged2.7.26 (ESP32-S3)local: Downloads/meshtastic/
m.mittal
Home
Work
Research
Lab
About
Experience
Now
Résumé
Uses
Colophon
Contact
AccountWardin-build
Redlbuilt
The Councilresearch
BEMAresearch
EXIT LIQUIDITYin-build
NEXUSarchived
Warrant + Forgebuilt
Concordarchived
BlueCollarPalin-build
Chispenbuilt
Warrant Portalbuilt
JobAppin-build
Night/Dayexplored
BLACKSITE: NULLin-build
SlugBitesbuilt
Riptidebuilt
AeroBitesarchived
Internbuilt
CAD & 3D printingexplored
ForgeCouncilexplored
ADDE: adversarial due-diligence engineexplored
Model routing in practiceexplored
AI due-diligence market mapexplored
Quorumarchived
Colossus Wakeexplored
FitFindrbuilt
Project Omniexplored
Oblivionexplored
MeetWisebuilt
EyeOSexplored
LinkLeap AIexplored
Up-Toexplored
Offline speech-to-notes (Java)explored
AI-assisted game production pipelineexplored
COLLAPSEarchived
THE TRIALSarchived
EcoNodearchived
ESP32-S3 / LoRa benchexplored
CleanPlaybuilt
Rezonyrbuilt
Habit Tracker Telegram Botbuilt
Job Board Aggregatorin-build
Visual Hand Trackbuilt
CLI Task Trackerbuilt
All work44 entries
Can’t Hallucinate, Can Still Be Wrong: Calibration of a Typed-Decision Model Under Input Noisepaper
Disagreement as Signal: A Hybrid Multi-Agent and Council Architecture for Error Detection in LLM Systemspaper
Killing Good Ideasessay
Uncorrelated Failure Modesessay
ADDE: adversarial due-diligence engineexplored
AI due-diligence market mapexplored
AI-assisted game production pipelineexplored
Aura Chatexplored
Colossus Wakeexplored
EcoNodearchived
ESP32-S3 / LoRa benchexplored
EyeOSexplored
FitFindrbuilt
ForgeCouncilexplored
LinkLeap AIexplored
MeetWisebuilt
Model routing in practiceexplored
Offline speech-to-notes (Java)explored
Oblivionexplored
Print benchexplored
Project Omniexplored
Provably-fair outcome enginebuilt
Quorumarchived
Up-Toexplored
Copy hello@mitanshm.com
Switch theme
Play motion
RésuméPDF
Open GitHub ↗mit37
Open LinkedIn ↗
Toggle layout gridh
Toggle single-key shortcuts/ h