"""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()