# ESP32 Serial Swiss Army Knife ![ESP32 Serial Swiss Army Knife logo](/images/logo.png "ESP32 Serial Swiss Army Knife") Universal wireless serial adaptor firmware for the ESP32-S3. ## Initial hardware target - ESP32-S3-DevKitC-1-compatible development board - ESP32-S3-WROOM-1-N16R8 module - 16 MB flash - 8 MB octal PSRAM - Adafruit MAX3243 full-pinout RS-232 breakout, product 5988 The current firmware is a command-driven **Phase 0 hardware-characterization harness**. It validates the MAX3243 breakout, its three drivers, its five receivers, valid-signal detection, active-low shutdown, and UART1 loopback before development of the wireless serial firmware begins. Tests run only when explicitly requested at the console; booting the board does not start an electrical test. ## Hardware wiring See [`wiring.md`](wiring.md) for the hardware profile, GPIO assignments, loopback diagrams, safety notes, and the recommended test sequence. The initial profile covers the ESP32-S3-DevKitC-1 N16R8 and the Adafruit MAX3243 full-pinout RS-232 breakout. ## Build ```sh pio run ``` ## Upload and monitor Connect the board's USB-to-UART port, then run: ```sh pio run --target upload pio device monitor -b 115200 ``` The firmware starts an interactive console on UART0. Type `help` to display command descriptions. The Phase 0 commands are: ```text status transceiver drivers loopback-a loopback-b valid-test uart-loopback [8N1|8E1|8O1|8N2|7E1|7O1] [bytes] uart-suite ``` `uart-loopback` defaults to `8N1` and 256 bytes. Its accepted payload range is 1–512 bytes. `uart-suite` covers 300 through 250000 baud and all supported frame formats. Follow the applicable loopback wiring in [`wiring.md`](wiring.md) before invoking a test. The onboard RGB LED reports the most recent test-harness state: | Color | Meaning | |---|---| | Blue | Idle; waiting for a command | | Yellow/orange | Test running | | Green | Last test passed | | Red | Last test failed | This hardware profile uses the onboard RGB LED on GPIO48. Official ESP32-S3-DevKitC-1 v1.1 boards commonly use GPIO38 instead, and compatible boards or clones may vary. A different board revision requires an adjusted board pin profile before running this firmware. ## License This project is licensed under the [GNU General Public License version 3 only](LICENSE) (`GPL-3.0-only`). This is compatible with using the GPLv3 releases of wolfSSL and wolfSSH later. Third-party components remain subject to their respective licenses.