fix: Release COM port after flashing and then Reconnect to get Serial Logs

This commit is contained in:
2026-02-27 09:44:26 +02:00
parent 5c6c871bb6
commit 1a5e448e4e

View File

@@ -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);