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
解决建议
关闭自动挂载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使规则生效。
- 临时方案:在文件管理器中找到
关闭串口监视器再上传:
从lsof输出可见,串口监视器进程占用了/dev/ttyACM0,上传前务必关闭Arduino IDE的串口监视器,避免设备被占用导致重置后无法正常通信。手动进入引导模式上传:
- 按住Arduino上的BOOTSEL按钮,再按重置按钮,设备进入引导模式(此时
RPI-RP2会挂载)。 - 将编译生成的
.uf2文件直接拖入RPI-RP2挂载卷,设备会自动重启并运行新程序。
- 按住Arduino上的BOOTSEL按钮,再按重置按钮,设备进入引导模式(此时
内容的提问来源于stack exchange,提问作者iridian
相关产品推荐
相关产品推荐

