ESP32 Firmware Performance

September 18, 2026 · View on GitHub

Generated by: tools/benchmark_firmware.py --chip esp32 --port <serial-port> Git revision: a75f4d16f537 Run started: 2026-09-18T08:25:07+02:00 Selected monitor duration: 60 seconds Overall result: PASS Git revision at completion: a75f4d16f537 Worktree dirty: yesyes Source fingerprint: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 Source consistency: stable

Snapshot scope: The header identifies the run that generated this report. Cases preserved by --update or --resume may come from earlier runs; use the per-run artifacts for exact case provenance.

Detector coverage: ESPHome, Native, and Matter support Lightweight and High Accuracy. All three C++ frontends support persisted runtime switching, while Micro-ESPectre deploys Lightweight only on its supported chips. The matrix below samples representative cases rather than every supported combination.

Summary

FrontendDetection profileResultOccupancyBinary sizePartition freeCPU loadMin free heap
NativeLightweightPASS71.87%1.16 MiB729.2 KiB (38.0%)6.03%135.7 KiB
NativeHigh AccuracyPASS70.83%1.16 MiB729.2 KiB (38.0%)7.62%131.9 KiB
ESPHomeLightweightPASS85.17%1011.2 KiB780.9 KiB (43.6%)3.90%127.3 KiB
ESPHomeHigh AccuracyPASS86.60%1011.2 KiB780.9 KiB (43.6%)4.92%121.4 KiB
MatterLightweightPASS81.23%1.57 MiB2.25 MiB (59.0%)7.89%38.1 KiB
MatterHigh AccuracyPASS80.48%1.57 MiB2.25 MiB (59.0%)9.67%38.1 KiB
Micro-ESPectreLightweightPASS74.92%1.26 MiB757.3 KiB (38.0%)83.29%53.0 KiB

Results

Native Lightweight

Result: PASS

MetricValue
Benchmark moderuntime
Build duration43.5s
Flash duration1m 32.6s
Monitor duration2m 41.3s
Firmware binary1,219,344 bytes (1190.8 KiB)
Application partition used1,219,344 bytes (1190.8 KiB)
Application partition free746,736 bytes (729.2 KiB)
Verified detectorlightweight
Frontend setup final BSSID requestedyes
Frontend setup final BSSID applied through Directyes
Frontend setup final BSSID already associatedyes
Frontend setup final BSSID reassociation exercisedyes
Frontend setup final BSSID association verifiedyes
Direct control attempts60/60 succeeded
Direct censored failures0
Direct diagnostics samples60/60 expected
Status cadence1.00 s mean, 1.02 s max gap
Status gaps over tolerance0
Device uptime restarts0
Packet-rate samples60
Packet rate71.66 pps mean, 62 min, 79 max, 3.77 standard deviation
CSI occupancy71.87% mean, 63% min, 79% max
Motion samples159/5 expected
Last free heap151,672 bytes (148.1 KiB)
Heap stability previous-window median152,352 bytes (148.8 KiB)
Heap stability final-window median152,144 bytes (148.6 KiB)
Heap stability change-208 bytes, -0.14%
Minimum free heap138,936 bytes (135.7 KiB)
Last largest heap block110,592 bytes (108.0 KiB)
Runtime load6.03% mean
Loop average794.14 us
Loop maximum10527 us
Detection samples245
Detection average399.57 us
Detection minimum44 us
Detection maximum4178 us

Native High Accuracy

Result: PASS

MetricValue
Benchmark moderuntime
Build duration43.5s
Flash duration1m 32.6s
Monitor duration2m 41.3s
Firmware binary1,219,344 bytes (1190.8 KiB)
Application partition used1,219,344 bytes (1190.8 KiB)
Application partition free746,736 bytes (729.2 KiB)
Verified detectorhigh_accuracy
Frontend setup final BSSID requestedyes
Frontend setup final BSSID applied through Directyes
Frontend setup final BSSID already associatedyes
Frontend setup final BSSID reassociation exercisedyes
Frontend setup final BSSID association verifiedyes
Direct control attempts60/60 succeeded
Direct censored failures0
Direct diagnostics samples60/60 expected
Status cadence1.00 s mean, 1.03 s max gap
Status gaps over tolerance0
Device uptime restarts0
Packet-rate samples60
Packet rate70.62 pps mean, 63 min, 80 max, 3.54 standard deviation
CSI occupancy70.83% mean, 65% min, 80% max
Motion samples145/5 expected
Last free heap148,428 bytes (144.9 KiB)
Heap stability previous-window median146,380 bytes (142.9 KiB)
Heap stability final-window median148,739 bytes (145.3 KiB)
Heap stability change+2,359 bytes, +1.61%
Minimum free heap135,023 bytes (131.9 KiB)
Last largest heap block110,592 bytes (108.0 KiB)
Runtime load7.62% mean
Loop average1036.43 us
Loop maximum9709 us
Detection samples270
Detection average946.43 us
Detection minimum44 us
Detection maximum4103 us

ESPHome Lightweight

Result: PASS

MetricValue
Benchmark moderuntime
Build duration1m 44.1s
Flash duration1m 17.4s
Monitor duration2m 40.9s
Firmware binary1,035,488 bytes (1011.2 KiB)
Application partition used1,035,371 bytes (1011.1 KiB)
Application partition free799,637 bytes (780.9 KiB)
Build RAM used49,848 bytes (48.7 KiB)
Verified detectorlightweight
Frontend setup final BSSID requestedyes
Frontend setup final BSSID applied through Directyes
Frontend setup final BSSID already associatedno
Frontend setup final BSSID reassociation exercisedyes
Frontend setup final BSSID association verifiedyes
Direct control attempts60/60 succeeded
Direct censored failures0
Direct diagnostics samples60/60 expected
Status cadence1.00 s mean, 1.03 s max gap
Status gaps over tolerance0
Device uptime restarts0
Packet-rate samples60
Packet rate85.06 pps mean, 76 min, 89 max, 2.87 standard deviation
CSI occupancy85.17% mean, 77% min, 90% max
Motion samples235/5 expected
Last free heap142,688 bytes (139.3 KiB)
Heap stability previous-window median143,646 bytes (140.3 KiB)
Heap stability final-window median143,571 bytes (140.2 KiB)
Heap stability change-75 bytes, -0.05%
Minimum free heap130,331 bytes (127.3 KiB)
Last largest heap block110,592 bytes (108.0 KiB)
Runtime load3.90% mean
Loop average699.83 us
Loop maximum9146 us
Detection samples215
Detection average472.17 us
Detection minimum33 us
Detection maximum1260 us

ESPHome High Accuracy

Result: PASS

MetricValue
Benchmark moderuntime
Build duration1m 44.1s
Flash duration1m 17.4s
Monitor duration2m 40.9s
Firmware binary1,035,488 bytes (1011.2 KiB)
Application partition used1,035,371 bytes (1011.1 KiB)
Application partition free799,637 bytes (780.9 KiB)
Build RAM used49,848 bytes (48.7 KiB)
Verified detectorhigh_accuracy
Frontend setup final BSSID requestedyes
Frontend setup final BSSID applied through Directyes
Frontend setup final BSSID already associatedno
Frontend setup final BSSID reassociation exercisedyes
Frontend setup final BSSID association verifiedyes
Direct control attempts60/60 succeeded
Direct censored failures0
Direct diagnostics samples60/60 expected
Status cadence1.00 s mean, 1.03 s max gap
Status gaps over tolerance0
Device uptime restarts0
Packet-rate samples60
Packet rate86.58 pps mean, 76 min, 94 max, 3.17 standard deviation
CSI occupancy86.60% mean, 77% min, 94% max
Motion samples234/5 expected
Last free heap136,387 bytes (133.2 KiB)
Heap stability previous-window median140,257 bytes (137.0 KiB)
Heap stability final-window median140,160 bytes (136.9 KiB)
Heap stability change-97 bytes, -0.07%
Minimum free heap124,319 bytes (121.4 KiB)
Last largest heap block110,592 bytes (108.0 KiB)
Runtime load4.92% mean
Loop average902.71 us
Loop maximum6934 us
Detection samples273
Detection average1251.00 us
Detection minimum25 us
Detection maximum4536 us

Matter Lightweight

Result: PASS

MetricValue
Benchmark moderuntime
Build duration3m 28.6s
Deploy duration24.4s
Flash duration1m 57.1s
Monitor duration4m 5.3s
Firmware binary1,641,648 bytes (1603.2 KiB)
Application partition used1,641,648 bytes (1603.2 KiB)
Application partition free2,356,048 bytes (2300.8 KiB)
Verified detectorlightweight
Frontend setup final BSSID requestedyes
Frontend setup final BSSID applied through Directyes
Frontend setup final BSSID already associatedno
Frontend setup final BSSID reassociation exercisedyes
Frontend setup final BSSID association verifiedyes
Direct control attempts60/60 succeeded
Direct censored failures0
Direct diagnostics samples60/60 expected
Status cadence1.00 s mean, 1.02 s max gap
Status gaps over tolerance0
Device uptime restarts0
Packet-rate samples60
Packet rate80.98 pps mean, 71 min, 87 max, 3.03 standard deviation
CSI occupancy81.23% mean, 72% min, 87% max
Motion samples234/5 expected
Last free heap96,740 bytes (94.5 KiB)
Heap stability previous-window median100,615 bytes (98.3 KiB)
Heap stability final-window median100,577 bytes (98.2 KiB)
Heap stability change-38 bytes, -0.04%
Minimum free heap39,036 bytes (38.1 KiB)
Last largest heap block47,104 bytes (46.0 KiB)
Runtime load7.89% mean
Loop average922.00 us
Loop maximum12637 us
Detection samples273
Detection average620.29 us
Detection minimum41 us
Detection maximum2188 us

Matter High Accuracy

Result: PASS

MetricValue
Benchmark moderuntime
Build duration3m 28.6s
Deploy duration24.4s
Flash duration1m 57.1s
Monitor duration4m 5.3s
Firmware binary1,641,648 bytes (1603.2 KiB)
Application partition used1,641,648 bytes (1603.2 KiB)
Application partition free2,356,048 bytes (2300.8 KiB)
Verified detectorhigh_accuracy
Frontend setup final BSSID requestedyes
Frontend setup final BSSID applied through Directyes
Frontend setup final BSSID already associatedno
Frontend setup final BSSID reassociation exercisedyes
Frontend setup final BSSID association verifiedyes
Direct control attempts60/60 succeeded
Direct censored failures0
Direct diagnostics samples60/60 expected
Status cadence1.00 s mean, 1.02 s max gap
Status gaps over tolerance0
Device uptime restarts0
Packet-rate samples60
Packet rate80.25 pps mean, 71 min, 85 max, 3.46 standard deviation
CSI occupancy80.48% mean, 72% min, 86% max
Motion samples234/5 expected
Last free heap96,347 bytes (94.1 KiB)
Heap stability previous-window median97,222 bytes (94.9 KiB)
Heap stability final-window median96,888 bytes (94.6 KiB)
Heap stability change-334 bytes, -0.34%
Minimum free heap39,036 bytes (38.1 KiB)
Last largest heap block47,104 bytes (46.0 KiB)
Runtime load9.67% mean
Loop average1159.83 us
Loop maximum12635 us
Detection samples233
Detection average1809.17 us
Detection minimum41 us
Detection maximum4800 us

Micro-ESPectre Lightweight

Result: PASS

MetricValue
Benchmark moderuntime
Deploy duration24.7s
Flash duration2m 18.1s
Monitor duration1m 41.9s
Firmware binary1,317,616 bytes (1286.7 KiB)
Deployed Python source172,573 bytes (168.5 KiB)
Application partition used1,256,176 bytes (1226.7 KiB)
Application partition free775,440 bytes (757.3 KiB)
Verified detectorlightweight
Direct control attempts14/14 succeeded
Direct censored failures0
Status samples13/14 expected
Status cadence4.50 s mean, 5.01 s max gap
Status gaps over tolerance0
Device uptime restarts0
Packet-rate samples13
Packet rate74.90 pps mean, 70 min, 77 max, 2.26 standard deviation
CSI occupancy74.92% mean, 71% min, 78% max
Motion samples233/5 expected
Last free heap54,320 bytes (53.0 KiB)
Heap stability previous-window median54,351 bytes (53.1 KiB)
Heap stability final-window median54,351 bytes (53.1 KiB)
Heap stability change+0 bytes, +0.00%
Minimum free heap54,320 bytes (53.0 KiB)
Runtime load83.29% mean
Loop average667.50 us
Loop maximum41412 us
Detection samples244
Detection average1284.50 us
Detection minimum551 us
Detection maximum10529 us

Pass Criteria

  • all required builds, flashes, and deployments complete successfully
  • Native, ESPHome, Matter, and Micro-ESPectre negotiate Direct v1 and sample canonical diagnostics throughout each scored window
  • Native and ESPHome use canonical firmware defaults, clear all device data during flash, and provision through Improv Serial
  • Matter clears all device data, commissions through a revision-compatible CHIP Tool controller over BLE and Wi-Fi, and reaches its Direct endpoint
  • Native, ESPHome, and Matter report Lightweight detection, configured internal managed traffic, and a 100 pps target before runtime mutations
  • Native remains MQTT-unconfigured
  • sensing frontends receive at least 5 canonical motion events through Direct SSE
  • free heap provides two complete consecutive 10-second windows after startup grace, and the final-window median does not decline by more than 5% from the preceding window
  • the device uptime does not restart during a scored runtime window
  • Direct diagnostics cadence stays within the runtime gap tolerance, and production motion events remain live on sensing frontends
  • Native Lightweight, Native High Accuracy, ESPHome Lightweight, ESPHome High Accuracy, Matter Lightweight, Matter High Accuracy, and Micro-ESPectre Lightweight mean CSI occupancy stays at or above the 70% admitted-slot detector-ready floor
  • Native Lightweight, Native High Accuracy, ESPHome Lightweight, ESPHome High Accuracy, Matter Lightweight, Matter High Accuracy, and Micro-ESPectre Lightweight detector timing is present
  • Direct send failures and unexpected rejected connections do not increase when the frontend exposes those counters
  • the Micro-ESPectre runtime launcher remains active throughout Direct collection