如何解决STM32WB55 USB Dongle在Linux下无法被STM32CubeProgrammer识别的问题?
解决STM32WB55 USB Dongle ST-Link枚举失败问题
根据你描述的情况,核心问题在于48引脚Dongle的ST-Link无法被工具正常识别,单独连接时/dev下没有生成对应的stlink设备节点,大概率是udev规则未覆盖该设备的VID/PID,结合你的lsusb输出,我整理了以下分步解决方案:
1. 配置自定义udev规则
Linux下ST-Link设备的识别依赖udev规则,你的Dongle单独连接时未生成stlink节点,说明默认规则没有匹配到它的USB设备ID。
- 首先创建udev规则文件:
sudo nano /etc/udev/rules.d/99-stlink.rules - 将以下内容写入文件(覆盖你
lsusb中显示的两个ST设备ID):# ST-Link/V2.1 设备规则 SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", MODE="0666", GROUP="plugdev" # STM32WB55 Dongle MCU USB设备规则 SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", MODE="0666", GROUP="plugdev" # 串口设备节点权限配置 SUBSYSTEM=="tty", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", MODE="0666", GROUP="plugdev" SUBSYSTEM=="tty", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", MODE="0666", GROUP="plugdev" - 保存退出后,重新加载udev规则并触发设备识别:
sudo udevadm control --reload-rules && sudo udevadm trigger - 确保当前用户属于
plugdev组(避免权限问题):
执行后注销再重新登录,让组权限生效。sudo usermod -aG plugdev $USER
2. 更新ST-Link固件与驱动
ST-Link DLL错误可能是固件版本不兼容导致的:
- 先连接能正常识别的64引脚Nucleo板,打开STM32CubeProgrammer,在"ST-Link"菜单中选择"Firmware Update",将ST-Link固件更新到最新版本。
- 更新完成后,单独连接Dongle,再次尝试用STM32CubeProgrammer识别设备。
- 如果问题仍存在,可手动更新系统中的ST-Link驱动(从ST官方获取最新的ST-Link/V2.1驱动包,解压后安装对应Linux版本的驱动)。
3. 硬件连接排查
- 更换一条带数据传输功能的USB线(很多廉价USB线只有充电功能,无法传输数据)。
- 尝试将Dongle连接到电脑的USB 2.0接口(USB 3.0偶尔会出现兼容性问题)。
- 检查Dongle上的ST-Link模式开关(如果有的话),确保切换到ST-Link调试模式,而非MCU独立运行模式。
4. 验证设备识别
重新插拔Dongle后,通过以下命令检查内核日志和设备节点:
- 查看USB识别日志:
如果看到"STLink v2.1"相关的加载信息,说明驱动已正常识别。dmesg | grep -i stlink - 查看生成的设备节点:
此时应该能看到ls /dev/stlink* /dev/ttyACM*/dev/stlinkv2-1_*类的设备节点,而非仅/dev/ttyACM0。
完成以上步骤后,再尝试用STM32CubeProgrammer或TrueStudio烧录Dongle的BLE程序,应该就能和64引脚板正常通信了。
内容的提问来源于stack exchange,提问作者Chandran Goodchild
相关产品推荐
相关产品推荐

