41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
"""Read provisioning diagnostics without resetting the device by default."""
|
|||
|
|
import argparse
|
||
|
|
import time
|
||
|
|
import serial
|
||
|
|
|
||
|
|
parser = argparse.ArgumentParser()
|
||
|
|
parser.add_argument("--port", default="COM6")
|
||
|
|
parser.add_argument("--seconds", type=int, default=45)
|
||
|
|
parser.add_argument("--reset", action="store_true")
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
port = serial.Serial()
|
||
|
|
port.port = args.port
|
||
|
|
port.baudrate = 115200
|
||
|
|
port.timeout = 1
|
||
|
|
port.dtr = False
|
||
|
|
port.rts = False
|
||
|
|
port.open()
|
||
|
|
try:
|
||
|
|
if args.reset:
|
||
|
|
from esptool.reset import HardReset
|
||
|
|
HardReset(port, uses_usb=True)()
|
||
|
|
deadline = time.monotonic() + args.seconds
|
||
|
|
resets = 0
|
||
|
|
print(f"Monitoring {args.port} for {args.seconds}s; reset={args.reset}", flush=True)
|
||
|
|
markers = ("ble_setup:", "ble_wifi:", "Guru Meditation", "assert failed:",
|
||
|
|
"panic", "rst:", "Rebooting", "Touch released", "Startup task finished",
|
||
|
|
"ELF file SHA256:", "wifi:Expected", "wifi_init: Failed", "esp_netif_lwip:",
|
||
|
|
"esp-tls:", "HTTP_CLIENT:", "Stack protection fault",
|
||
|
|
"PLATFORM_HTTP", "Platform error code:", "call_client:", "Startup stack headroom",
|
||
|
|
"WiFi init internal_free", "WiFi initialization unavailable", "RTC", "volc_rtc_create:")
|
||
|
|
while time.monotonic() < deadline:
|
||
|
|
line = port.readline().decode(errors="replace").strip()
|
||
|
|
if "rst:" in line:
|
||
|
|
resets += 1
|
||
|
|
if line and any(marker in line for marker in markers):
|
||
|
|
print(line, flush=True)
|
||
|
|
print(f"Reset markers observed: {resets}", flush=True)
|
||
|
|
finally:
|
||
|
|
port.close()
|