Hello,
I am connecting XIAO ESP32-S3 to Win11 host and using usbipd to connect with WSL2 Ubuntu. Everything works fine but can’t do neither board-info nor monitor as below. Please help me!
Ubuntu@T14G3:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 010: ID 2886:0059 Seeed Technology Co., Ltd. seeed-xiao-s3
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Unfortunately, I can’t do neither board-info nor monitor, it always says error likes this:
Ubuntu@T14G3:~$ espflash board-info
Use serial port ‘/dev/ttyACM0’ - seeed-xiao-s3? · yes
Remember this serial port for future use? · no
[2025-12-08T08:08:13Z INFO ] Serial port: ‘/dev/ttyACM0’
[2025-12-08T08:08:13Z INFO ] Connecting…
Error: × Error while connecting to device
Hi there,
Been a while 
So I had a similar issue using the New Seeed debugger in the WSL on Windows , Until that is “persistence”
Check out the demo thread on here were I set it up in both and what you need to do;
but basically in a nutshell. What espflash does under the hood is:
- Opens
/dev/ttyACM0.
- Toggles DTR/RTS to reset the ESP32-S3 into bootloader mode.
- The chip re-enumerates as a new USB device when the ROM bootloader comes up.
espflash then talks to that new bootloader endpoint.
On bare Linux that’s fine: the device drops, comes back, still owned by the same kernel, and /dev/ttyACM0 is usable again.
With WSL2 + usbipd, that reset looks like:
- Windows sees the USB device disconnect.
- New device appears (same VID/PID, but a fresh instance).
- Unless you told usbipd to auto-reattach/persist, that new instance never gets forwarded into WSL.
- So from inside Ubuntu,
espflash is now talking to a dead /dev/ttyACM0 that no longer maps to a real device → generic “Error while connecting to device”.
So it looks like a serial/board issue, but it’s actually usbipd losing the device on every reset.
You see in the video (TLDR)
I do this too;
Attach with persistence in Windows
On the Windows side (PowerShell as admin):
usbipd wsl list
Find the Xiao entry, note the BUSID (something like 1-10), then:
I show this also..
usbipd wsl attach --busid 1-10 --persist // FIX //
Newer usbipd releases also support --auto-attach; either way, the goal is:
- When the board disconnects/re-enumerates (reset into bootloader), WSL gets the new instance too, automatically.
Without that, espflash never sees the bootloader device and just times out.
HTH
GL
PJ 