Hardware Configuration and Deployment
This page is for source deployment and field verification. Most users can use the Online Flashing Tool.
Environments and Partitions
| Environment | Chip | Flash / PSRAM | Partition | OTA |
|---|---|---|---|---|
esp32-F4R0 | ESP32 | 4MB / None | partitions/4MB.csv | No |
esp32-F8R0 | ESP32 | 8MB / None | partitions/8MB.csv | Yes |
esp32-F8R8 | ESP32 | 8MB / 8MB | partitions/8MB.csv | Yes |
esp32c3-F4R0 | ESP32-C3 | 4MB / None | partitions/4MB.csv | No |
esp32c6-F4R0 | ESP32-C6 | 4MB / None | partitions/4MB.csv | No |
esp32c6-F8R0 | ESP32-C6 | 8MB / None | partitions/8MB.csv | Yes |
esp32s3-F8R0 | ESP32-S3 | 8MB / None | partitions/8MB.csv | Yes |
esp32s3-F8R8 | ESP32-S3 | 8MB / 8MB | partitions/8MB.csv | Yes |
esp32s3-F16R8 | ESP32-S3 | 16MB / 8MB | partitions/16MB.csv | Yes |
All nine are supported release environments. F and R in the name identify Flash and PSRAM capacity. Confirm the physical hardware before deployment; 4MB environments do not support OTA.
Recommended Deployment
From the firmware repository root, run the unified deployment script. It creates an isolated Web staging directory, uploads LittleFS, and uploads firmware:
powershell -ExecutionPolicy Bypass -File scripts\deploy.ps1 `
-Env esp32s3-F8R8 -Port COM6 -MonitorBuild without flashing:
powershell -ExecutionPolicy Bypass -File scripts\deploy.ps1 -Env esp32s3-F8R8 -BuildOnlyFor a manual two-step upload, use the same environment and staging directory for LittleFS and firmware:
node scripts/gzip-www.js --no-upload --no-monitor
$env:PLATFORMIO_DATA_DIR='D:\project\gitee\FastBee-Arduino\.pio\fs-staging\run-xxxx'
pio run -e esp32s3-F8R8 --target uploadfs
pio run -e esp32s3-F8R8 --target uploadDo not treat source data/www as a release image; it may contain uncompressed or stale resources.
Pin Constraints
Pin rules are maintained in include/core/ChipConfig.h. The Web pin validator covers known firmware constraints, but the board schematic remains authoritative.
- Avoid Flash/PSRAM, USB/JTAG, BOOT, and flashing-console pins.
- ESP32 GPIO34-39 are input-only; ADC2 is restricted while WiFi is active.
- ESP32-C6 GPIO12-17 are reserved/console pins and GPIO24-30 are normally unavailable to peripherals.
- I2C, SPI, and UART pins are configurable, but two enabled peripherals cannot claim the same pin unless the bus explicitly supports sharing.
- Cellular modems, servos, and relays require appropriate power, signal-level checks, and a common ground.
Post-Deployment Checks
- Open
http://<device-ip>/api/healthand confirm a JSON response. - After login, read
/api/system/infoand verify chip, Flash, PSRAM, and firmware version. - Read
/api/features/statusand confirm required features are bothcompiledandactive. - Enable peripherals one at a time and check initialization logs and read/write behavior.
- For network features, also check
/api/wifi/status,/api/network/status, and/api/mqtt/status.
Erase and Recovery
When changing partition layouts, Flash size, or migrating from another firmware, back up configuration and erase the full Flash before writing bootloader, partition table, application, and LittleFS from the same build. Erasing removes network, peripheral, protocol, user, and rule configuration.
Related pages: Hardware Selection, Partition Layout, Online Flashing, and Troubleshooting.

