esptool-js icon indicating copy to clipboard operation
esptool-js copied to clipboard

Chrome 143 breaks ESP32-S2

Open MatzElectronics opened this issue 5 months ago • 11 comments

Chrome 143 on MacOS and Windows appears to break ESPTool-js when trying to connect to an ESP32-S2. I was able to solve it by placing a 100ms delay between lines 436 and 437:

https://github.com/espressif/esptool-js/blob/84ff8a9611cf89110f9e888c54eca0541925c6fc/src/esploader.ts#L420-L439

MatzElectronics avatar Dec 10 '25 09:12 MatzElectronics

Updated chrome yesterday, seeing same thing (running v 143.0.7499.41 on windows 11). Using Opera confirmed the S2 + PC is fine with web-serial. Adding the mentioned delay didn't resolve it for me.

Just seen there's yet another update available for chrome (143.0.7499.110), so installing now. -- Edit -- Seems to get past the first failed to set serial port error but still fail to connect.

--Edit 2-- Turns out this is a new laptop and device manager shows an unrecognised driver device for the s2 when in DFU mode, I might need to zadig this pc to fix the jtag serial port driver. Image

--Edit 3-- Using Opera web browser works fine, so the driver doesn't need touching in theory, and device/cable works.

tyeth avatar Dec 11 '25 18:12 tyeth

I've seen it connect once in chrome on another laptop as I was debugging the connection attempt (having seen the trace of opera work), but I had a very long delay between writing command and reading serial (maybe 20s as was distracted). I'll mess around with it a bit more maybe.

Expand for Log Details

Console of the first failure, then reboot board (boot0) and reattempt, and it fails a few reads, but succeeds when I had the 20s delay on an adafruit feather reverse tft ESP32-S2:

xterm.min.js:7 Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true. See: https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently
e.1906.t._drawToCache @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
requestAnimationFrame
(anonymous) @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
e.fire @ xterm.min.js:7
e.5435.t.parse @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
e._innerWrite @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
setTimeout
e.write @ xterm.min.js:7
e.8969.t.write @ xterm.min.js:7
e.4389.e.writeln @ xterm.min.js:7
writeLine @ index.ts:83
write @ esploader.js:204
info @ esploader.js:229
$b9be20b2c9078c9b$export$b0f7a6c745790308 @ esploader.js:190
$382e02c9bbd5d50b$var$connectButton.onclick @ index.ts:103Understand this warning
01:55:32.048 installHook.js:1 Error reading from serial port: Error: Read timeout exceeded
    at webserial.js:159:91
overrideMethod @ installHook.js:1
readLoop @ webserial.js:172
await in readLoop
newRead @ webserial.js:187
_connectAttempt @ esploader.js:477
await in _connectAttempt
connect @ esploader.js:562
await in connect
detectChip @ esploader.js:589
main @ esploader.js:1110
$382e02c9bbd5d50b$var$connectButton.onclick @ index.ts:106Understand this error
01:55:32.049 webserial.js:67 TRACE 3181.000 command op:0x08 data len=36 wait_response=1 timeout=0.100 data=
    0707122055555555 5555555555555555 | ... UUUUUUUUUUUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    55555555                          | UUUU
01:55:32.050 webserial.js:67 TRACE 3182.000 Write 46 bytes: 
    c000082400000000 0007071220555555 | ...$........ UUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    5555555555555555 5555555555c0     | UUUUUUUUUUUUU.
01:55:32.159 installHook.js:1 Error reading from serial port: Error: Read timeout exceeded
    at webserial.js:159:91
overrideMethod @ installHook.js:1
readLoop @ webserial.js:172
await in readLoop
newRead @ webserial.js:187
read @ webserial.js:260
readPacket @ esploader.js:345
command @ esploader.js:400
await in command
sync @ esploader.js:449
_connectAttempt @ esploader.js:491
await in _connectAttempt
connect @ esploader.js:562
await in connect
detectChip @ esploader.js:589
main @ esploader.js:1110
$382e02c9bbd5d50b$var$connectButton.onclick @ index.ts:106Understand this error
01:55:32.160 webserial.js:67 TRACE 3292.000 No serial data received.
01:55:32.161 webserial.js:67 TRACE 3292.000 command op:0x08 data len=36 wait_response=1 timeout=0.100 data=
    0707122055555555 5555555555555555 | ... UUUUUUUUUUUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    55555555                          | UUUU
01:55:32.161 webserial.js:67 TRACE 3293.000 Write 46 bytes: 
    c000082400000000 0007071220555555 | ...$........ UUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    5555555555555555 5555555555c0     | UUUUUUUUUUUUU.
01:55:32.173 webserial.js:67 TRACE 3305.000 Read 1 bytes: 08              
01:55:32.173 webserial.js:67 TRACE 3305.000 Read invalid data: 08              
01:55:32.173 webserial.js:67 TRACE 3305.000 Remaining data in serial buffer: 04              
01:55:32.173 webserial.js:67 TRACE 3305.000 command op:0x08 data len=36 wait_response=1 timeout=0.100 data=
    0707122055555555 5555555555555555 | ... UUUUUUUUUUUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    55555555                          | UUUU
01:55:32.174 webserial.js:67 TRACE 3306.000 Write 46 bytes: 
    c000082400000000 0007071220555555 | ...$........ UUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    5555555555555555 5555555555c0     | UUUUUUUUUUUUU.
01:55:32.174 webserial.js:67 TRACE 3306.000 Read 1 bytes: 00              
01:55:32.174 webserial.js:67 TRACE 3306.000 Read invalid data: 00              
01:55:32.174 webserial.js:67 TRACE 3306.000 Remaining data in serial buffer: 07              
01:55:32.175 webserial.js:67 TRACE 3307.000 command op:0x08 data len=36 wait_response=1 timeout=0.100 data=
    0707122055555555 5555555555555555 | ... UUUUUUUUUUUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    55555555                          | UUUU
01:55:32.175 webserial.js:67 TRACE 3307.000 Write 46 bytes: 
    c000082400000000 0007071220555555 | ...$........ UUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    5555555555555555 5555555555c0     | UUUUUUUUUUUUU.
01:55:32.175 webserial.js:67 TRACE 3307.000 Read 1 bytes: 07              
01:55:32.175 webserial.js:67 TRACE 3307.000 Read invalid data: 07              
01:55:32.175 webserial.js:67 TRACE 3307.000 Remaining data in serial buffer: 12              
01:55:32.176 webserial.js:67 TRACE 3307.000 command op:0x08 data len=36 wait_response=1 timeout=0.100 data=
    0707122055555555 5555555555555555 | ... UUUUUUUUUUUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    55555555                          | UUUU
01:55:32.176 webserial.js:67 TRACE 3308.000 Write 46 bytes: 
    c000082400000000 0007071220555555 | ...$........ UUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    5555555555555555 5555555555c0     | UUUUUUUUUUUUU.
01:55:32.176 webserial.js:67 TRACE 3308.000 Read 1 bytes: 20              
01:55:32.176 webserial.js:67 TRACE 3308.000 Read invalid data: 20              
01:55:32.176 webserial.js:67 TRACE 3308.000 Remaining data in serial buffer: 00              
01:55:32.842 installHook.js:1 NetworkError: Failed to execute 'setSignals' on 'SerialPort': Failed to set control signals.
overrideMethod @ installHook.js:1
$382e02c9bbd5d50b$var$connectButton.onclick @ index.ts:121Understand this error
02:11:01.083 Navigated to https://espressif.github.io/esptool-js/
02:11:02.329 xterm.min.js:7 [Violation] 'requestAnimationFrame' handler took 87ms
02:11:30.036  NetworkError: Failed to execute 'open' on 'SerialPort': Failed to open serial port.
overrideMethod @ installHook.js:1
$382e02c9bbd5d50b$var$connectButton.onclick @ typescript.285b9e74.js:8668Understand this error
02:11:34.954  Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true. See: https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently
t._drawToCache @ xterm.min.js:7
t.draw @ xterm.min.js:7
e._drawChars @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
t._forEachCell @ xterm.min.js:7
t._drawForeground @ xterm.min.js:7
t.onGridChanged @ xterm.min.js:7
t.renderRows @ xterm.min.js:7
t._renderRows @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
e._innerRefresh @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
requestAnimationFrame
e.refresh @ xterm.min.js:7
t.refreshRows @ xterm.min.js:7
t.refresh @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
e.fire @ xterm.min.js:7
t.parse @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
e._innerWrite @ xterm.min.js:7
(anonymous) @ xterm.min.js:7
setTimeout
e.write @ xterm.min.js:7
t.write @ xterm.min.js:7
e.writeln @ xterm.min.js:7
writeLine @ typescript.285b9e74.js:8633
write @ typescript.285b9e74.js:7077
info @ typescript.285b9e74.js:7094
$b9be20b2c9078c9b$export$b0f7a6c745790308 @ typescript.285b9e74.js:7065
$382e02c9bbd5d50b$var$connectButton.onclick @ typescript.285b9e74.js:8652Understand this warning
02:11:36.225 Navigated to https://espressif.github.io/esptool-js/
02:11:36.430 xterm.min.js:7 [Violation] 'requestAnimationFrame' handler took 63ms
02:12:47.323 installHook.js:1 Error reading from serial port: Error: Read timeout exceeded
    at webserial.js:159:91
overrideMethod @ installHook.js:1
readLoop @ webserial.js:172
await in readLoop
newRead @ webserial.js:187
_connectAttempt @ esploader.js:477
await in _connectAttempt
connect @ esploader.js:562
await in connect
detectChip @ esploader.js:589
main @ esploader.js:1110
$382e02c9bbd5d50b$var$connectButton.onclick @ index.ts:106Understand this error
02:13:29.007 webserial.js:67 TRACE 103476.000 command op:0x08 data len=36 wait_response=1 timeout=0.100 data=
    0707122055555555 5555555555555555 | ... UUUUUUUUUUUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    55555555                          | UUUU
02:13:29.008 webserial.js:67 TRACE 103477.000 Write 46 bytes: 
    c000082400000000 0007071220555555 | ...$........ UUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    5555555555555555 5555555555c0     | UUUUUUUUUUUUU.
02:13:29.011 webserial.js:67 TRACE 103480.000 Read 1 bytes: 01              
02:13:29.012 webserial.js:67 TRACE 103481.000 Read invalid data: 01              
02:13:29.013 webserial.js:67 TRACE 103482.000 Remaining data in serial buffer: 08              
02:13:55.488 webserial.js:67 TRACE 129957.000 command op:0x08 data len=36 wait_response=1 timeout=0.100 data=
    0707122055555555 5555555555555555 | ... UUUUUUUUUUUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    55555555                          | UUUU
02:13:55.489 webserial.js:67 TRACE 129958.000 Write 46 bytes: 
    c000082400000000 0007071220555555 | ...$........ UUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    5555555555555555 5555555555c0     | UUUUUUUUUUUUU.
02:13:55.491 webserial.js:67 TRACE 129960.000 Read 1 bytes: 04              
02:13:55.491 webserial.js:67 TRACE 129960.000 Read invalid data: 04              
02:13:55.492 webserial.js:67 TRACE 129961.000 Remaining data in serial buffer: 
    0007071220000000 00c0c00108040007 | .... ...........
    07122000000000c0 c001080400070712 | .. .............
    2000000000c0c001 0804000707122000 |  ............. .
    000000c0c0010804 0007071220000000 | ............ ...
    00c0c00108040007 07122000000000c0 | .......... .....
    c001080400070712 2000000000c0c001 | ........ .......
    0804000707122000 000000c0c0       | ...... ......
02:14:11.476 webserial.js:67 TRACE 145945.000 command op:0x08 data len=36 wait_response=1 timeout=0.100 data=
    0707122055555555 5555555555555555 | ... UUUUUUUUUUUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    55555555                          | UUUU
02:14:38.930 webserial.js:67 TRACE 173399.000 Write 46 bytes: 
    c000082400000000 0007071220555555 | ...$........ UUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    5555555555555555 5555555555c0     | UUUUUUUUUUUUU.
02:20:00.385 webserial.js:67 TRACE 494854.000 Read 1 bytes: 01              
02:20:00.386 webserial.js:67 TRACE 494855.000 Read invalid data: 01              
02:20:00.388 webserial.js:67 TRACE 494856.000 Remaining data in serial buffer: 
    0804000707122000 000000c0c0010804 | ...... .........
    0007071220000000 00c0c00108040007 | .... ...........
    07122000000000c0 c001080400070712 | .. .............
    2000000000c0c001 0804000707122000 |  ............. .
    000000c0c0010804 0007071220000000 | ............ ...
    00c0c00108040007 07122000000000c0 | .......... .....
    c001080400070712 2000000000c0c001 | ........ .......
    0804000707122000 000000c0c0010804 | ...... .........
    0007071220000000 00c0c00108       | .... ........
02:20:07.290 webserial.js:67 TRACE 501759.000 command op:0x08 data len=36 wait_response=1 timeout=0.100 data=
    0707122055555555 5555555555555555 | ... UUUUUUUUUUUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    55555555                          | UUUU
02:20:09.074 webserial.js:67 TRACE 503542.000 Write 46 bytes: 
    c000082400000000 0007071220555555 | ...$........ UUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    5555555555555555 5555555555c0     | UUUUUUUUUUUUU.
02:20:14.263 webserial.js:67 TRACE 508732.000 Read 1 bytes: 04              
02:20:14.264 webserial.js:67 TRACE 508733.000 Read invalid data: 04              
02:20:14.264 webserial.js:67 TRACE 508733.000 Remaining data in serial buffer: 
    0007071220000000 00c0c00108040007 | .... ...........
    07122000000000c0 c001080400070712 | .. .............
    2000000000c0c001 0804000707122000 |  ............. .
    000000c0c0010804 0007071220000000 | ............ ...
    00c0c00108040007 07122000000000c0 | .......... .....
    c001080400070712 2000000000c0c001 | ........ .......
    0804000707122000 000000c0c0010804 | ...... .........
    0007071220000000 00c0c00108040007 | .... ...........
    07122000000000c0 c001080400070712 | .. .............
    2000000000c0c001 0804000707122000 |  ............. .
    000000c0c0010804 0007071220000000 | ............ ...
    00c0c00108040007 07122000000000c0 | .......... .....
02:20:18.573 webserial.js:67 TRACE 513042.000 command op:0x08 data len=36 wait_response=1 timeout=0.100 data=
    0707122055555555 5555555555555555 | ... UUUUUUUUUUUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    55555555                          | UUUU
02:20:19.188 webserial.js:67 TRACE 513657.000 Write 46 bytes: 
    c000082400000000 0007071220555555 | ...$........ UUU
    5555555555555555 5555555555555555 | UUUUUUUUUUUUUUUU
    5555555555555555 5555555555c0     | UUUUUUUUUUUUU.
02:20:39.801 webserial.js:67 TRACE 534270.000 Read 1 bytes: c0              
02:21:02.396 webserial.js:67 TRACE 556865.000 Read 61 bytes: 
    0108040007071220 00000000c0c00108 | ....... ........
    0400070712200000 0000c0c001080400 | ..... ..........
    0707122000000000 c0c0010804000707 | ... ............
    122000000000c0c0 0108040007       | . ...........
02:21:50.534 webserial.js:67 TRACE 605003.000 Received full packet: 010804000707122000000000

Normal Non working Debug trace with Adafruit Funhouse (S2):

esptool.js
Serial port WebSerial VendorID 0x303a ProductID 0x2
Connecting...Debug: using Classic Serial Reset
Debug: _connect_attempt default_reset
Debug: Sync connect attempt 0
Debug: Sync
Debug: Sync err Error: Invalid head of packet (0x1): Possible serial noise or corruption.
Debug: Error at sync Error: Invalid head of packet (0x1): Possible serial noise or corruption.
Debug: Sync connect attempt 1
Debug: Sync
Debug: Sync err Error: Invalid head of packet (0x12): Possible serial noise or corruption.
Debug: Error at sync Error: Invalid head of packet (0x12): Possible serial noise or corruption.
Debug: Sync connect attempt 2
Debug: Sync
Debug: Sync err Error: Invalid head of packet (0x0): Possible serial noise or corruption.
Debug: Error at sync Error: Invalid head of packet (0x0): Possible serial noise or corruption.
Debug: Sync connect attempt 3
Debug: Sync
Debug: Sync err Error: Invalid head of packet (0x0): Possible serial noise or corruption.
Debug: Error at sync Error: Invalid head of packet (0x0): Possible serial noise or corruption.
Debug: Sync connect attempt 4
Debug: Sync
Debug: Sync err Error: Invalid head of packet (0x1): Possible serial noise or corruption.
Debug: Error at sync Error: Invalid head of packet (0x1): Possible serial noise or corruption.
Debug: _connect_attempt default_reset
Error: Failed to execute 'setSignals' on 'SerialPort': Failed to set control signals.

attempt 2

esptool.js
Serial port WebSerial VendorID 0x303a ProductID 0x2
Connecting...Debug: using Classic Serial Reset
Debug: _connect_attempt default_reset
Debug: Sync connect attempt 0
Debug: Sync
Debug: Sync err Error: Invalid head of packet (0x1): Possible serial noise or corruption.
Debug: Error at sync Error: Invalid head of packet (0x1): Possible serial noise or corruption.
Debug: Sync connect attempt 1
Debug: Sync
Debug: Sync err Error: Invalid head of packet (0x12): Possible serial noise or corruption.
Debug: Error at sync Error: Invalid head of packet (0x12): Possible serial noise or corruption.
Debug: Sync connect attempt 2
Debug: Sync
Debug: Sync err Error: Invalid head of packet (0x0): Possible serial noise or corruption.
Debug: Error at sync Error: Invalid head of packet (0x0): Possible serial noise or corruption.
Debug: Sync connect attempt 3
Debug: Sync
Debug: Sync err Error: Invalid head of packet (0x0): Possible serial noise or corruption.
Debug: Error at sync Error: Invalid head of packet (0x0): Possible serial noise or corruption.
Debug: Sync connect attempt 4
Debug: Sync
Debug: Sync err Error: Invalid head of packet (0x1): Possible serial noise or corruption.
Debug: Error at sync Error: Invalid head of packet (0x1): Possible serial noise or corruption.
Debug: _connect_attempt default_reset
Error: Failed to execute 'setSignals' on 'SerialPort': Failed to set control signals.

But in opera:

esptool.js
Serial port WebSerial VendorID 0x303a ProductID 0x2
Connecting...Debug: using Classic Serial Reset
Debug: _connect_attempt default_reset
Debug: Sync connect attempt 0
Debug: Sync
Debug: Sync err Error: No serial data received.
Debug: Error at sync Error: No serial data received.
Debug: Sync connect attempt 1
Debug: Sync
Debug: Sync err Error: No serial data received.
Debug: Error at sync Error: No serial data received.
Debug: Sync connect attempt 2
Debug: Sync
Debug: Sync err Error: No serial data received.
Debug: Error at sync Error: No serial data received.
Debug: Sync connect attempt 3
Debug: Sync
Debug: 538052359
Debug: Connect attempt successful.

Debug: Chip Magic 7c6
Detecting chip type... ESP32-S2
Chip is ESP32-S2FNR2 (revision v1.0)
Features: Wi-Fi,Embedded Flash 4MB,Embedded PSRAM 2MB,ADC and temperature sensor calibration in BLK2 of efuse V2
Crystal is 40MHz
MAC: 70:04:1d:f7:7b:46
Debug: In _post_connect using USB OTG ?true
Uploading stub...
Debug: mem_begin 4444 3 2048 40028000
Debug: check_command enter RAM download mode
Debug: check_command write to target RAM
Debug: check_command write to target RAM
Debug: check_command write to target RAM
Debug: mem_begin 160 1 2048 3ffe2bfc
Debug: check_command enter RAM download mode
Debug: check_command write to target RAM
Running stub...
Debug: check_command leave RAM download mode
Stub running...
Debug: check_command write target memory
Debug: check_command write target memory
Debug: check_command write target memory
Debug: check_command write target memory
Debug: check_command write target memory
Debug: check_command write target memory
Debug: check_command write target memory
Flash ID: 164020
Configuring flash size...
Debug: detectFlashSize
Debug: check_command write target memory
Debug: check_command write target memory
Debug: check_command write target memory
Debug: check_command write target memory
Debug: check_command write target memory
Debug: check_command write target memory
Debug: check_command write target memory
Auto-detected Flash size: 4MB
Detected flash size set to 4MB

tyeth avatar Dec 13 '25 02:12 tyeth

@brianignacio5 Seeing this on another ESP32-S2, would you be able to take a look?

brentru avatar Dec 15 '25 14:12 brentru

Hmm, the plot thickens. I think there are two situations going on here confusing my testing. A blocking connection situation from chrome where it will not free the connection properly for another tab to use until the device is rebooted. This seems to be when coming from a broken connection situation. It's fine swapping tabs and reusing the device if the connection attempt was successful.

  1. reboot device in dfu mode (w/boot button held)
  2. connect using esptool-js
  3. see issue connecting
  4. connect using espconnect or jasons webserial esptool fork: https://github.com/Jason2866/WebSerial_ESPTool/tree/development
  5. fails due to in use port, so refresh esptool-js tab
  6. webserial_esptool still fails
  7. Reboot device again in dfu mode
  8. webserial_esptool now works fine.
  9. now disconnect webserial_esptool and then use esptool-js site
  10. works
  11. reboot device, breaks esptool-js again (needs a good connection first from other sites).

Adding this.flushInput before this.sync seems to have resolved the connection for S2 in chrome for me: https://github.com/espressif/esptool-js/compare/main...tyeth:read-partitions-esptool-js:flushBeforeSync

Image

tyeth avatar Dec 15 '25 17:12 tyeth

Could you guys look into https://github.com/espressif/esptool-js/pull/228 ?

I feel that this re-write of the read protocol could really solve many of the timeout issues.

I've tested on master with ESP32-S2-DevKit-C-1 v1.0 and connection seems successful on MacOS Chrome v143.0.7499.41

brianignacio5 avatar Dec 16 '25 09:12 brianignacio5

Could you guys look into #228 ?

I feel that this re-write of the read protocol could really solve many of the timeout issues.

I've tested on master with ESP32-S2-DevKit-C-1 v1.0 and connection seems successful on MacOS Chrome v143.0.7499.41

can confirm #228 fixes the issue

terrafirma2021 avatar Dec 16 '25 12:12 terrafirma2021

Is it deployed anywhere?

On Tue, 16 Dec 2025, 12:34 terrafirma2021, @.***> wrote:

terrafirma2021 left a comment (espressif/esptool-js#227) https://github.com/espressif/esptool-js/issues/227#issuecomment-3660313474

Could you guys look into #228 https://github.com/espressif/esptool-js/pull/228 ?

I feel that this re-write of the read protocol could really solve many of the timeout issues.

I've tested on master https://espressif.github.io/esptool-js/ with ESP32-S2-DevKit-C-1 v1.0 and connection seems successful on MacOS Chrome v143.0.7499.41

can confirm #228 https://github.com/espressif/esptool-js/pull/228 fixes the issue

— Reply to this email directly, view it on GitHub https://github.com/espressif/esptool-js/issues/227#issuecomment-3660313474, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABTBZ4Y6XN3XQABLLSVVWVD4B735DAVCNFSM6AAAAACOS6SLLKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTMNRQGMYTGNBXGQ . You are receiving this because you commented.Message ID: @.***>

tyeth avatar Dec 16 '25 12:12 tyeth

Is it deployed anywhere?

https://www.makcu.com/en

here

terrafirma2021 avatar Dec 16 '25 12:12 terrafirma2021

It would be good to report this at https://issues.chromium.org/issues if it can be clearly described. They did fix the previous WebSerial issue, #206, first with a quick removal of the regression, and later more thoroughly. But I also agree making esptool-js more robust is a good idea.

I spent some time looking at recent Chromium commits, but could not find one that is clearly the cause.

dhalbert avatar Dec 16 '25 13:12 dhalbert

@dhalbert I see no issue with Chrome using my tool https://jason2866.github.io/WebSerial_ESPTool/ the bug is in esptool.js

Jason2866 avatar Dec 16 '25 14:12 Jason2866

@Jason2866 My impression is that it is a change in Chrome behavior in recent versions. Perhaps its behavior is still fine, and esptool-js is doing something wrong, but is it Chrome being more strict, or changing a timing requirement, or something like that?

dhalbert avatar Dec 16 '25 15:12 dhalbert