爱编程的斯蒂芬 2026-03-07 14:05 采纳率: 33.3%
浏览 12
已结题

WSL 下执行 make flash 报错 could not open port /dev/ttyUSB0: No such file or directory

我在 Ubuntu(WSL2)环境下编译 安信可科技的aipi-palchatv1 工程(工程基于BL602芯片),编译成功后运行 make flash 烧录固件,但终端提示:

[Errno 2] could not open port /dev/ttyUSB0: [Errno 2] No such file or directory: '/dev/ttyUSB0'

环境说明
操作系统:Windows 11 + WSL2(Ubuntu 20.04)

开发板:

  1. 安信可科技的AiPi-PalChatV1(BL602 模组),通过 USB 转 TTL(CH340)连接到电脑。
  2. 在 Windows 下可以用烧录工具(如 Bouffalo Lab Dev Cube)正常烧录,说明硬件和驱动没问题。
  3. WSL 中已安装必要的编译工具链,编译过程无报错。

已尝试的解决方法:

  • 打开window终端查看模组链接端口,我的是COM3

img

  • 子系统执行 ls /dev/tty*查看端口号

img

  • 在window终端里面执行命令usbipd attach --wsl --busid 1-8,将开发板占用串口分享并添加到WSL

img

  • 在子系统执行命令 ls /dev/tty*看多了哪一个串口,就是开发板的串口例如 /dev/tty/USB0

    img

结果是: /dev目录下多了/dev/tty/USB0串口,但是重新拔插后,ls /dev/tty*查看端口号 这个/dev/tty/USB0没有了

  • 写回答

2条回答 默认 最新

  • 爱编程的斯蒂芬 2026-03-07 17:32
    关注

    如何让 WSL2 永久“记住”USB 设备?
    每次都要手动绑定确实很烦人,但好消息是,通过一些简单的配置,完全可以实现设备插入后自动连接到 WSL2。

    1. 确保 WSL2 内核模块自动加载
      这是实现自动连接的基础。请先在 WSL2 终端中执行以下命令,确保必要的内核模块在系统启动时自动加载:
    # 创建并配置 usbip-core 模块
    echo "usbip-core" | sudo tee /etc/modules-load.d/usbip-core.conf
    
    # 创建并配置 vhci-hcd 模块
    echo "vhci-hcd" | sudo tee /etc/modules-load.d/vhci-hcd.conf
    

    配置完成后,重启 WSL2 终端使配置生效
    2. 启用 Windows 端的自动连接功能 可以使用图形化工具WSL USB Manager
    需要安装两个软件,一个是基础的 usbipd-win,另一个就是我们要用的图形界面

    • 安装 usbipd-win (如果还没装)
      以管理员身份打开 PowerShell。输入以下命令并按回车,它会自动下载并安装好这个核心工具
      winget install --interactive --exact dorssel.usbipd-win
      
    • 安装 WSL USB Manager
      在同一个 PowerShell 中,输入以下命令安装图形界面工具
      winget install --id=nickbeth.wsl-usb-manager -e
      

    WSL USB Manage网址 https://winget.ragerworks.com/package/nickbeth.wsl-usb-manager

    安装完后使用 WSL USB Manager 配置自动连接,在列表中找到你的设备,点击旁边的 Bind 按钮。这一步是在 Windows 层面标记这个设备可以被共享出去。

    1. 配置自动连接(最关键的一步):在工具界面上方或菜单中找到 Auto-attach profiles (自动连接配置) 功能。
    2. 点击创建新配置,然后从设备列表中选择你刚才绑定的那个设备(通常通过 Bus ID 或硬件ID来指定)。
    3. 保存这个配置。这个操作的本质是让工具在后台为你自动执行** usbipd attach --auto-attach** 命令。配置完成后,你可以拔掉开发板再重新插上。此时,打开你的 WSL2 Ubuntu 终端,运行 ls /dev/tty*,就能直接看到 /dev/ttyUSB0 了,无需再运行任何命令!🎉

      img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月15日
  • 已采纳回答 3月7日
  • 修改了问题 3月7日
  • 修改了问题 3月7日
  • 展开全部