arduino - 在 Arch Linux 上插入 Arduino 后立即无法打开端口错误

标签 arduino archlinux platformio

我正在使用 PlatformIO 进行编程,并使用 Arduino Mega 和 Arduino Uno。我通过串口将它们连接起来,所以每次我想对它们进行编程时,我都必须将它们彼此断开。我还将它们从计算机上拔下,以免在四处移动电线时不小心炸毁它们。

每次我重新插入一个或另一个并尝试立即对其进行编程时,我都会收到此错误消息:

*** [upload] could not open port /dev/ttyACM0: [Errno 16] Device or resource busy: '/dev/ttyACM0'

如果我等待大约一分钟再试一次,那么代码将没有问题地上传。可能是什么原因造成的?

最佳答案

ModemManager 可能是您遇到麻烦的原因。尝试禁用它,例如pkill -STOP ModemManager(使用 -CONT 继续该过程)。

ModemManager 是一款(神奇的)软件,可以让您的 3G 加密狗自动工作。因为 Arduino 显示为串行调制解调器,所以 ModemManager 试图控制它。

您可以通过将某个变量附加到您的设备来阻止 ModemManager 这样做。参见 the documentation了解详情。本质上,创建一个 udev 规则,例如/etc/udev/rules.d/99-ttyacms.rules 包含以下内容:

ATTRS{idVendor}=="0ca6"ATTRS{idProduct}=="a050", ENV{ID_MM_DEVICE_IGNORE}="1

当然,您需要使用您的 ID。使用 lsusb 查找这些值。

创建此文件后,使用类似sudo udevadm control --reload-rules

的方式重新加载 udev

关于arduino - 在 Arch Linux 上插入 Arduino 后立即无法打开端口错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53163998/

相关文章:

c++ - 如何创建 src/code 以及 lib/libraries 可访问的全局对象?

build - 使用 PlatformIO 自动增加内部版本号

c - 打印机模块的ESC/POS命令

linux - 架构Linux : make - no such file or directory

C++/Arduino 将函数作为参数传递

linux - 从 Sourcery CodeBench 去哪里 **LITE**

mysql - 如何在docker容器中启动mysql这样的服务?

java - Android发送蓝牙消息接收空格字符

c++ - 如何从 Arduino 正确接收和发送原始红外数据