Commander1024 c257158ada Record Accepted PCB Placement And Fit
Align component groups, repair affected routing, and add preservation
audits.
Assign the confirmed U2 footprint and update pull-ups to 2 kΩ across
design files.
Document user acceptance, switch to an A3 worksheet, and refresh PCB
exports.
2026-09-22 10:28:08 +02:00
2026-09-21 15:24:42 +02:00
2026-09-21 15:24:42 +02:00
2026-09-21 15:24:42 +02:00

ESP32 Serial Swiss Army Knife

ESP32 Serial Swiss Army Knife logo

ESP32-S3 firmware for a secure, multi-transport RS-232 adapter. It operates one MAX3243-backed UART1 serial port and safely shares it between native USB CDC-ACM, an HTTPS/WebSocket browser terminal, and SSH: one connected client can write while others observe. The firmware also provides persistent serial and Wi-Fi configuration, a UART0 recovery console, and hardware diagnostics; it is not a general-purpose router, captive portal, or unauthenticated TCP serial server.

Supported hardware

  • 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; the male connector version is preferred (see Hardware wiring for supported connector variants)
  • Optional 128×64 I²C OLED and three buttons, as described in the wiring guide

Documentation

Start with Getting started for installation, first-time configuration, and USB or network access.

  • Hardware wiring: GPIO assignments, power safety, cables, USB connectors, OLED, and buttons.
  • Electrical tests: safe hardware bring-up, loopback, flow control, and shared-serial checks.
  • Command reference: administration, serial, USB, Wi-Fi, discovery, SSH, and diagnostics.
  • Web administration: browser Serial, Admin, Settings, writer control, and reconnecting after changes.
  • User administration: accounts, passwords, SSH client keys, and local recovery.
  • Firmware update: application upload through the browser, update precautions, and wired recovery.
  • Security operations: trusted-network use, identity verification, credentials, shutdown, and recovery.

Build

Install PlatformIO Core and run from the project root:

pio run

The getting-started guide covers prerequisites and first installation. The configured target is esp32-s3-devkitc-1-n16r8.

Upload and monitor

Connect the board's USB-to-UART port for firmware upload and the UART0 recovery console:

pio run --target upload
pio device monitor -b 115200

If necessary, add --upload-port with your actual bridge device path. The bridge normally appears as /dev/ttyUSB*; it is separate from native USB CDC (/dev/ttyACM*), which carries UART1 data. At serial-tool>, press Enter and run help.

Do not erase for routine updates. Erasing destroys all persisted configuration and credentials. Migration from the former default/factory layout to the custom OTA layout is a separate destructive step; see partition migration. Subsequent application-only updates can use the web updater.

Before using network access

Create the first administrator on trusted UART0 with user add <username> admin; there is no default shared login. Use a separate user account for SSH serial access: SSH admin opens device administration instead. Verify HTTPS and SSH fingerprints locally before trusting a new or changed identity.

Serial, Wi-Fi, mDNS hostname, and display edits need their explicit Save commands to survive reboot. Account and device-identity changes persist immediately. USB host baud/framing choices do not change physical UART1 settings.

Use a trusted LAN or the password-protected device AP, not Internet exposure. HTTPS uses a device-specific self-signed certificate and password login; SSH accepts passwords and supported public keys. Browser logins expire after one hour, even during active use. Disconnect is not sign-out: use Sign out when finished.

The firmware is not resistant to physical flash or RAM extraction. Passwords are stored as salted PBKDF2-HMAC-SHA256 verifiers, but Wi-Fi secrets and private device keys remain recoverable from unencrypted NVS; offline password guessing and old flash copies also remain possible. Keep local ports physically controlled. Read Security operations before deployment.

Development documentation

Developer index · Roadmap and acceptance history · Current development state

Implementation contracts, regression procedures, PCB research, and the flash layout live under docs/devel/. Agent working memory lives under docs/agent/. Historical acceptance records are not claims that every fault or hardware test has passed; the carrier PCB remains a draft, not fabrication-ready.

License

This project is licensed under the GNU General Public License version 3 only (GPL-3.0-only). Third-party components remain subject to their respective licenses. The integration baseline uses Espressif registry components espressif/mdns 1.12.0, wolfssl/wolfssl 5.8.2~1, and wolfssl/wolfssh 1.4.20; review upstream security releases before production use.

S
Description
ESP32-S3 firmware for a secure, multi-transport RS-232 adapter. It operates one MAX3243-backed UART1 serial port and safely shares it between native USB CDC-ACM, an HTTPS/WebSocket browser terminal, and SSH: one connected client can write while others observe. The firmware also provides persistent serial and Wi-Fi configuration, a UART0 recovery console, and hardware diagnostics; it is not a general-purpose router, captive portal, or unauthenticated TCP serial server.
Readme GPL-3.0
17 MiB
Languages
C 77.6%
Python 13.3%
JavaScript 8%
OpenSCAD 0.7%
CMake 0.2%
Other 0.2%