You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PopOS系统下Arduino上传程序失败问题求助

PopOS下RP2040 Arduino上传失败排查与解决

问题现象

  • 主机系统为PopOS,插入Arduino(RP2040)后设备正常识别:
    $ ls /dev | grep -i -E 'acm|usb'
    ttyACM0
    usb
    
  • 默认Blink程序运行正常,电源指示灯闪烁正常。
  • Arduino IDE能检测到设备,但上传简易程序时出错:
    Performing 1200-bps touch reset on serial port /dev/ttyACM0
    "/home/$USER/.arduino15/packages/arduino/tools/rp2040tools/1.0.6/rp2040load" -v -D "/tmp/$USER/sketches/A5EA0D0CAA8498593C6DBE39B6DE9B19/sketch_sep11a.ino.elf"
    rp2040load 1.0.6 - compiled with go1.16.2
    .....................
    Failed uploading: uploading error: exit status 1
    
  • 上传失败后设备消失:
    ls /dev | grep -i -E 'acm|usb'
    usb
    
  • Blink程序停止运行,但电源指示灯仍亮,文件管理器出现挂载的RPI-RP2SD卡,按下硬件重置按钮可复现问题。

怀疑原因

PopOS自动挂载RPI-RP2引导分区,导致IDE完成上传前TTY设备被移除。

相关日志

dmesg输出

[11623.779472] usb 1-6: USB disconnect, device number 34
[11624.098516] usb 1-6: new full-speed USB device number 35 using xhci_hcd
[11624.259724] usb 1-6: New USB device found, idVendor=2e8a, idProduct=0003, bcdDevice= 1.00
[11624.259734] usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[11624.259738] usb 1-6: Product: RP2 Boot
[11624.259740] usb 1-6: Manufacturer: Raspberry Pi
[11624.259743] usb 1-6: SerialNumber: E0C9125B0D9B
[11624.263943] usb-storage 1-6:1.0: USB Mass Storage device detected
[11624.264150] scsi host8: usb-storage 1-6:1.0
[11625.275162] scsi 8:0:0:0: Direct-Access     RPI      RP2              3    PQ: 0 ANSI: 2
[11625.275576] sd 8:0:0:0: Attached scsi generic sg1 type 0
[11625.275929] sd 8:0:0:0: [sdb] 262144 512-byte logical blocks: (134 MB/128 MiB)
[11625.276389] sd 8:0:0:0: [sdb] Write Protect is off
[11625.276391] sd 8:0:0:0: [sdb] Mode Sense: 03 00 00 00
[11625.276755] sd 8:0:0:0: [sdb] No Caching mode page found
[11625.276755] sd 8:0:0:0: [sdb] Assuming drive cache: write through
[11625.282206]  sdb: sdb1
[11625.282535] sd 8:0:0:0: [sdb] Attached SCSI removable disk

lsof输出

$ lsof /dev/ttyACM0 
COMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
serial-mo 28185    $USER    3u   CHR  166,0      0t0 1814 /dev/ttyACM0
$ ps auxww | grep 28185
$USER   28185  0.0  0.0 1075580 4160 ?        Sl   19:52   0:00 /home/$USER/.arduino15/packages/builtin/tools/serial-monitor/0.13.0/serial-monitor

解决建议

  1. 关闭自动挂载RPI-RP2分区:

    • 临时方案:在文件管理器中找到RPI-RP2挂载卷,右键选择“卸载”,再尝试重新上传程序。
    • 永久方案:创建udev规则禁用自动挂载:
      创建文件/etc/udev/rules.d/99-rp2040-no-auto-mount.rules,添加内容:
      SUBSYSTEM=="block", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0003", ENV{UDISKS_IGNORE}="1"
      
      执行sudo udevadm control --reload-rules && sudo udevadm trigger使规则生效。
  2. 关闭串口监视器再上传:
    从lsof输出可见,串口监视器进程占用了/dev/ttyACM0,上传前务必关闭Arduino IDE的串口监视器,避免设备被占用导致重置后无法正常通信。

  3. 手动进入引导模式上传:

    • 按住Arduino上的BOOTSEL按钮,再按重置按钮,设备进入引导模式(此时RPI-RP2会挂载)。
    • 将编译生成的.uf2文件直接拖入RPI-RP2挂载卷,设备会自动重启并运行新程序。

内容的提问来源于stack exchange,提问作者iridian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 20:25:58