Skip to content

feat: Add ESP32-S3 ILI9341/ST7789 board support with wiring guides - #2422

Open
Aryann019x wants to merge 94 commits into
BruceDevices:mainfrom
Aryann019x:new-board-support
Open

feat: Add ESP32-S3 ILI9341/ST7789 board support with wiring guides#2422
Aryann019x wants to merge 94 commits into
BruceDevices:mainfrom
Aryann019x:new-board-support

Conversation

@Aryann019x

Copy link
Copy Markdown

Summary

Adds complete support for ESP32-S3 boards with ILI9341 and ST7789 displays, and comprehensive wiring documentation with visual diagrams for all four board configurations (ESP32-S3 and ESP-WROOM32).

Changes

New Board Support

  • ESP32-S3 with ILI9341 (240x320 SPI TFT)
  • ESP32-S3 with ST7789 (240x320 SPI TFT)

Documentation

Each board folder includes connections.md with complete wiring guides:

  • Pin mappings for displays, touchscreen (XPT2046), radio modules (CC1101, NRF24, LoRa)
  • I2C Grove sensor configuration (GPIO 8/9 for ESP32-S3, GPIO 21/22 for ESP32)
  • LED, button, and serial port assignments
  • SPI architecture and power supply specifications
  • Visual wiring diagrams for reference

Technical Implementation

  • Dual SPI buses: HSPI for display/touch, main SPI for radio modules
  • GPIO configuration: SD card (GPIO 4 ESP32-S3, GPIO 12 ESP32)
  • USB native support on ESP32-S3, UART on ESP32
  • SPI frequencies: 40MHz display, 20MHz read, 2.5MHz touchscreen
  • Power: ~400mA typical, ~2.5A peak with NRF24

Bug Fixes

  • Completed esp32s3-st7789/pins_arduino.h (was missing display/touch configuration)

Files Added/Modified

  • boards/esp32s3-ili9341/ - Full board support (pins_arduino.h, interface.cpp, .ini, connections.md, diagrams/)
  • boards/esp32s3-st7789/ - Same structure for ST7789 variant (fixed incomplete configuration)
  • boards/esp-wroom32-ili9341/connections.md - Updated documentation
  • boards/esp-wroom32-st7789/connections.md - Updated documentation
  • boards/pinouts/pins_arduino.h - Router file (directs compiler to correct board pins)

Aryann019x and others added 30 commits April 1, 2026 16:01
Added configuration file for ESP-WROOM-32 with ILI9341 TFT.
Implement GPIO setup and input handling for device control.
Implement GPIO setup and touchscreen initialization functions for ESP32S3 with ILI9341 display.
Added wiring guide for ESP32-S3 with ILI9341 display and touchscreen, including pinouts for display, touchscreen, radio modules, and other components.
Added configuration for ESP32-S3 ILI9341 Touchscreen with 8MB Flash.
Added detailed wiring guide for ESP32-S3 with ST7789 display and touchscreen, including pinouts for display, touchscreen, radio modules, and additional features.
Added comprehensive wiring guide for ESP-WROOM32 with ST7789 display and touchscreen, including pinouts for display, touchscreen, SD card, radio modules, user input, I2C sensors, status LED, serial port, and power supply details.
bmorcelli and others added 25 commits June 23, 2026 20:48
Removed duplicate IR codes while preserving different formats/protocols
…ruceDevices#2591)

Per review on BruceDevices#2591: rebased onto dev, and moved the persistence into
src/core/utils.* alongside the clock functions (called from init_clock()).

Boards without an RTC (e.g. T-Deck) lose a set time on a full power-off and
reset to the build default. This periodically saves the current epoch to NVS
and restores it in init_clock() so the clock comes back close to correct, with
date info intact for file metadata; it re-syncs exactly via NTP/GPS when
available. Stored in NVS (not the user FS) so it survives FS reformats and
custom partition layouts. Guarded by !defined(HAS_RTC); RTC builds unaffected.
Hardware-tested on a LilyGO T-Deck Plus.
Fix ble spam packets & remove unused legacy paths
* Enhance BLE Sniffer with payload capture and parsing

Extended BLE Sniffer functionality to capture and analyze BLE advertisements, including payload parsing and manufacturer data identification.

* Add BLE sniffer header file for LITE_VERSION

* Add BLE sniffer functionality

* Add BLE Sniffer option to menu in Lite version

* Refactor BLE sniffer device pointer to const

Updated BLE sniffer module to improve device pointer handling and added module documentation.

* Add Samsung MAC OUI detection and FastPair version detection

* Upgrade BLE Suite to version 3.1 with enhancements

Updated BLE Suite to version 3.1 with enhancements including Samsung MAC OUI detection, expanded FastPair model database, and improved BLE sniffer capabilities.

* Add newline at end of BLE_Suite.h

Fix missing newline at end of file in BLE_Suite.h

* Refactor Samsung MAC OUI and FastPair exploit logic

Updated Samsung MAC OUI detection and modified FastPair exploit methods.

* Enhance BLE_Suite with target selection and tests

Added new functions for target selection and vulnerability testing in BLE_Suite.cpp.

* Update BLE_Suite.cpp

* Update BLE address handling to include address type
…h valid (BruceDevices#2577)

nrf_setMode() initializes nrfSPI=true and nrfUART=true, then treats the
case where both are valid as an error, raising displayError("NRF24 pins
undefined") and blocking. This is the normal state for any SPI nRF24 on a
device that also has valid UART pins (e.g. the M5Stack StickS3 with the
pingequa RF Pack S3), so NRF24 features were unusable on those builds.

A UART-NRF cannot be auto-detected from pin config, so when the SPI pins
are configured, default to NRF_MODE_SPI instead of erroring.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…#2578)

Channel Analyzer: real-time 2.4GHz per-channel airtime utilization across
channels 1-11 (promiscuous sweep, configurable dwell, MASK_ALL filter), with
solid-threshold load bars, peak-hold markers and a per-channel signal meter.

Jam Detect: rapidly hops channels 1-11 (~100ms dwell, ~1.1s/sweep) watching the
deauth/disassoc rate via a MGMT|DATA promiscuous filter, and alerts the instant
the extrapolated rate crosses a user-adjustable threshold mid-window (without
waiting for the dwell to end). Per-channel deauth bars + a latched "ATTACK chN"
banner; it drops any STA association so hopping isn't locked to one channel.
A single radio can't watch all channels literally at once, so this approximates
full-band coverage via fast hopping.

Both use a tolerant WiFi bring-up that ignores ESP_ERR_WIFI_INIT_STATE so they
recover gracefully when WiFi is already initialised. Wired into the WiFi menu.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
)

* Refactor reverse shell server to use AsyncWebServer

* Add include guard to reverseShell.h
@Aryann019x

Copy link
Copy Markdown
Author

Ready for review whenever a maintainer has time, also noticed the workflow runs need approval to execute, could someone kick those off? Happy to address any feedback.

@bao56513

Copy link
Copy Markdown

Hi @Aryann019x, could you please provide the pre-compiled .bin file for the ESP32-S3 ST7789 XP2046 setup? The GitHub Actions checks aren't running so I cannot download the artifacts. Thank you!

@Aryann019x

Copy link
Copy Markdown
Author

Hi @Aryann019x, could you please provide the pre-compiled .bin file for the ESP32-S3 ST7789 XP2046 setup? The GitHub Actions checks aren't running so I cannot download the artifacts. Thank you!

Hi @bao56513 , the pre-compiled .bin files are already available in the Releases section:

https://github.com/Aryann019x/firmware/releases

Please let me know if you need any other board configuration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.