全新安装 Ubuntu 后,我尝试使用 Arduino IDE v1.8.16(使用.deb
从网络下载的文件安装)上传草图。
An error occurred while uploading the sketch avrdude: ser_open(): can't open device "/dev/ttyACM0": Device or resource busy
在新 Linux 机器上首次安装 Arduino IDE 后需要成为成员:sudo usermod -a -G dialout $USER
并注销、登录,但这并没有按预期发生改变。
因此我尝试chmod
连接端口/dev/ttyUSB0
,但这并没有改变错误消息(顺便说一下,在 USB1 和 ACM0 上,当我尝试上传到时也得到了相同的输出Nano
)。
现在我收到此错误:
esptool.py v3.0
Serial port /dev/ttyUSB0
Connecting........_____....._____....._____....._____....._____....._____....._____
Traceback (most recent call last):
File "/home/guy/.arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/upload.py", line 66, in <module>
esptool.main(cmdline)
File "/home/guy/.arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/esptool/esptool.py", line 3552, in main
esp.connect(args.before, args.connect_attempts)
File "/home/guy/.arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/esptool/esptool.py", line 529, in connect
raise FatalError('Failed to connect to %s: %s' % (self.CHIP_NAME, last_error))
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
为了验证这不是 IDE 错误,我尝试使用它esptool.py
来擦除闪存,但得到了相同的结果Connecting........_____....._____....._____....._____....._____....._____....._____
答案1
这发生在最新的 ubuntu 上,它有最新的内核和几个版本的 arduino-ide(从 snap、从 apt install,甚至从 arduino 网站安装的最新版本),尝试了几个主板版本,尝试了改装的 esptool,尝试了未改装的 esptool,尝试了多条(不是仅充电)电缆,尝试了几个 esp32 主板和 esp32 供应商(wemos、nodemcu 等)
我认为串行驱动程序可能有问题?所有电路板在 Windows 上运行良好,所有版本的 arduino-ide 均在 Ubuntu 20.04 上测试过,并且使用相同的电缆。我排除了与软件 (ide)、电缆、电路板相关的任何可能问题。
我们将对此进行更深入的研究。
LE:找到问题了!看来 ch340/ch341 的内核驱动程序中有一个错误。我安装了一个旧内核(5.9.x),这个内核可以正常工作。这让我在互联网上进行了一些搜索 :) 因此这里这是
Bug ID: 214131 Summary: ch341 communication problem Product: Drivers Version: 2.5
内核版本:5.14-rc5 硬件:全部 操作系统:Linux 树:主线 状态:新 严重性:正常 优先级:P1 组件:USB
在我看来,从内核 5.10.x 到 5.14-rc5 都存在这个错误。
祝编码愉快,伙计们
答案2
ESP 板的解决方法:
上传草图之前的设置:
- 主板类型:通用 ESP8266
- 闪存大小:4MB
- 重置方法:“dtr(又名nodemcu)”(默认)
然后:
- 更改重置方法为:“无 dtr (又名 ck)“(工具 -> 重置方法)
- 然后按 Flash 按钮
- 短按重置
- 然后释放 Flash
- 在 Arduino IDE 中上传草图
来源:https://forum.manjaro.org/t/manjaro-21-1-0-und-esp8266-sketch-upload-doesnt-work-anymore/79712/2
注意:在 ESP8266 (NodeMCU) 上测试
更新:
最新内核版本已修复该问题,请更新内核后再测试。
答案3
使用内核 linux-image-5.4.0-87-generic @ ubuntu 18.04 我遇到了完全相同的问题(运行最新的 arduino、板定义和 libz),当我重新启动到 5.4.0-86-generic 时它又可以工作了,不知道为什么,但是今天花了一个小时才发现发生了什么变化(因为我在这台电脑上使用 arduino 很长时间了,一切都运行顺利……)
因此尝试启动较旧的内核,也许有帮助
答案4
谢谢,这个解决方法对我有用!!
5.4.0-89-generic #100-Ubuntu SMP 2021 年 9 月 24 日星期五 14:50:10 UTC x86_64 x86_64 x86_64 GNU/Linux
视频编号:1A86 PID:7523