我这里的环境为Windows11, Ubuntu为Windows子系统版本的ubuntu-24.04.3-wsl-amd64.wsl
如果仅需要wsl + esp-idf的环境,只需要查看此官方教学: https://idf.espressif.com/zh-cn/index.html跳过下面内容即可。
一、配置WSL + ESP-IDF + vscode环境
安装vscode的插件
- 在 Windows 上安装 Visual Studio Code。
- 在 Windows的VS Code 中安装插件:
- WSL(记得重启一下wsl,否则输入code .没用)
- C/C++ Extension Pack
- ESP-IDF Extension
- Chinese Language Pack
配置Ubuntu环境
记得适用管理员命令窗口输入WSL进入Ubuntu中,以免不必要的麻烦。
- 建立开发目录,并进入esp这个目录:
- 安装依赖包(Ubuntu 下必备):
- 在 Linux 系统里安装 VS Code 编辑器,并打开 ESP 开发目录
(使用非root用户来开发esp,防止出现其他情况)进入esp目录后使用
code .这里WSL就会调用Windows的vscode,.则代表在当前位置打开vscode。第一次调用时,会下载一些vscode的支持包
下载的并不是vscode本体,WSL只是复用了本地电脑的Vscode,所以他们的环境是隔离开的。
如果遇到网络问题可以先临时改
/etc/resolv.conf,然后继续尝试code .在WSL调用的本地VsCode里进行ESPIDF环境的配置
- 安装插件:
- C/C++
- C/C++ Extension Pack
- Chinese (Simplified) Language Pack
- CMake Tools
- ESP-IDF

- 一键配置ESPIDF环境(选择IDF版本,直接安装就行,在esp目录下)
我这里之前在Linux中配置过了,就直接选择ESP-IDF的目录即可,自己下载的方法具体查看这个链接https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32c6/get-started/linux-macos-setup.html

将 Windows 的串口分配给 WSL2
默认情况下,WSL 无法直接访问 Windows 的 COM 口,需要借助
usbipd-win 工具。- 在 Windows PowerShell(管理员)执行安装:
- 查看 USB 设备列表:
找到 ESP32 的 USB 串口设备(通常是
CP210x、CH340等),记下BUSID- 绑定设备:
这里的6-3只是我的串口号,大家要根据自己实际的串口号进行修改
注:解除绑定步骤为:分离+解除:
usbipd detach --busid 6-3、usbipd unbind --busid 6-3- 将设备挂载到 WSL:
- 在 Ubuntu 下确认是否识别到串口:
在vscode中加载好espidf插件之后, 在窗口下面的串口配置图标,如果能看到
/dev/ttyUSB0 或者ttyACM0,说明成功。- 添加用户
lzj访问串口/dev/ttyUSB0的权限。 - 查看串口所属的组
ls -l /dev/ttyUSB0 - 将用户添加到该组
- 完全注销并重新登录系统(注意VsCode也要关掉然后重新
code .打开)(或许会usb掉,记得重新绑定)
输出通常类似:
crw-rw---- 1 root dialout 188, 0 Dec 2 14:30 /dev/ttyUSB0这里的
dialout 就是串口所属的组。之后在 VS Code 的 ESP-IDF 插件中配置串口为
/dev/ttyUSB0,即可直接下载调试。没有 /dev/ttyACM0,解决办法
现象
- Windows 里
usbipd list显示设备 Attached
- WSL 里却没有
/dev/ttyACM0
- 只有手动执行
sudo modprobe cdc_acm才会出现串口
根因
WSL 默认 没启用 systemd/udev(
ps -p 1 显示 init(...)),导致设备 attach 后不会自动加载内核模块 cdc_acm,所以不会自动创建 /dev/ttyACM0。
另外 WSL 下 /dev/ttyACM0 常见默认权限偏紧,需要把用户加入 dialout 并用 udev 规则持久化。解决办法
1. 启用 systemd(让模块自动加载/udev 生效)
在 WSL(Ubuntu)执行:
回到 Windows(管理员 PowerShell)重启 WSL:
重新进入 WSL,确认:
应输出:
systemd2. 设置 cdc_acm 开机自动加载(避免每次手动 modprobe)
WSL 执行:
- 作者:L_Z_J
- 链接:https://www.mcoi.top/article/Post-wsl-ubuntu24-esp32-vscode-idf
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。







