From 1a5e448e4e981e3ba06bc58c943838648fecf352 Mon Sep 17 00:00:00 2001 From: bonamin Date: Fri, 27 Feb 2026 09:44:26 +0200 Subject: [PATCH] fix: Release COM port after flashing and then Reconnect to get Serial Logs --- .../src/manufacturing/ProvisioningWizard.jsx | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/frontend/src/manufacturing/ProvisioningWizard.jsx b/frontend/src/manufacturing/ProvisioningWizard.jsx index 4aae90f..ea004ca 100644 --- a/frontend/src/manufacturing/ProvisioningWizard.jsx +++ b/frontend/src/manufacturing/ProvisioningWizard.jsx @@ -401,10 +401,13 @@ function StepFlash({ device, onFlashed }) { // Start reading raw UART output from the device after flash+reset const startSerialMonitor = async (port) => { serialActiveRef.current = true; + // Give the OS a moment to fully release the port from esptool before we re-open + await new Promise((r) => setTimeout(r, 500)); try { await port.open({ baudRate: 115200 }); - } catch (_) { - // Port may already be open if esptool left it that way — ignore + } catch (openErr) { + appendSerial(`[Error opening port: ${openErr.message}]`); + return; } const decoder = new TextDecoderStream(); const readableStreamClosed = port.readable.pipeTo(decoder.writable); @@ -520,7 +523,13 @@ function StepFlash({ device, onFlashed }) { await loaderRef.current.after("hard_reset"); appendLog("Hard reset sent. Device is booting…"); - // 6. Update device status → flashed + // 6. Disconnect the esptool transport so it releases the port lock + try { + await loaderRef.current.transport.disconnect(); + } catch (_) {} + appendLog("esptool disconnected. Opening serial monitor…"); + + // 7. Update device status → flashed await api.request(`/manufacturing/devices/${device.serial_number}/status`, { method: "PATCH", body: JSON.stringify({ status: "flashed", note: "Flashed via browser provisioning wizard" }), @@ -529,7 +538,7 @@ function StepFlash({ device, onFlashed }) { setFlashing(false); setDone(true); - // 7. Open serial monitor at 115200 to show live device output + // 8. Re-open the port at 115200 for live UART monitoring appendSerial("── Serial monitor started (115200 baud) ──"); startSerialMonitor(port);