【发布时间】:2017-04-18 12:23:41
【问题描述】:
我是 Linux Mint 用户。我正在处理 Arduino Yun。我正在编译 Arduino 程序。之后我正在上传到 Arduino Yun。然后我收到这些错误。你能帮帮我吗?
【问题讨论】:
标签: linux arduino linux-mint
我是 Linux Mint 用户。我正在处理 Arduino Yun。我正在编译 Arduino 程序。之后我正在上传到 Arduino Yun。然后我收到这些错误。你能帮帮我吗?
【问题讨论】:
标签: linux arduino linux-mint
您首先需要确保您拥有正确的读/写权限,如here 所述,基本上输入以下命令:
$ sudo adduser <username> dialout
$ sudo chmod a+rw /dev/ttyACM0
'/dev/ttyACM0' 是你的 arduino 连接的端口,它应该列在你根目录的 /dev 文件夹中。
第二个:在您确定了 arduino 连接到哪个端口并为此端口设置了正确的权限后,您需要运行以下命令。我不确定它的作用,我不确定它是否真的需要,但它使上传多次为我工作
$ sudo udevadm trigger
和第三,您会发现上传有时是时间和运气的挑战。继续按下重置(有时非常连续两次),同时按下你的 arduino 草图的上传按钮。在某个时刻,它会起作用。在不断更改代码中的小片段时我更幸运,所以当我推送“上传”时,它必须先编译代码。
https://www.arduino.cc/en/Guide/Troubleshooting#upload
在某些计算机上,您可能需要按下重置按钮
我从来没有弄乱过引导加载程序,也没有弄乱过 ICSP 引脚之类的东西(幸运的是)
还可以查看Arduino forum 或链接provide by yourself
【讨论】:
我的 Leonardo 板和 Ubuntu 确实有问题。添加规则告诉 ModemManger 忽略提到的链接中的所有 USB 设备对我不起作用。然而,实际上删除了modemmanager。
sudo apt-get purge modemmanager
【讨论】:
确保您的 USB 数据线已牢固插入。因为这个,我的突然停止了工作。出现“/dev/ttyACM0 not found”消息是因为除非插入设备,否则不会创建设备。
【讨论】:
对我有用的解决方案始终是转到Tools -> Port -> /dev/ttyACMx 并再次单击所选端口。
IDE 上传代码后没有问题。
【讨论】:
Ctrl+U - 有助于 [x]。点击Ctrl+U 快速将IDE 运行到ConcurrentMidificationException - 这解决了问题 - 有助于[x]。 PS:在草图上传期间打开Serial Monitor 总是会打开串行监视器并总是将其连接到正确的端口/设备 - 帮助 [x]。
使用
sudo arduino
这将修复一次
【讨论】:
sudo chmod a+rw /dev/ttyACM0
第一次上传时运行以下命令
【讨论】:
当一个进程连接到我试图用于加载代码的端口时,我收到此消息,例如screen 或 gtkterm。
试试这个命令:
lsof /dev/ttyACM3
为您的设备使用 ACM
screen 8610 elm 5u CHR 166,3 0t0 5599015 /dev/ttyACM3
然后杀死PID:
kill 8610
清除正在使用端口的进程。
【讨论】:
只是添加一个对我有用的新解决方案(也在 Linux Mint 下) 我打开了串行监视器(从打开的 4 个 arduino IDE 之一)并关闭它就可以了(可能与上面描述的过程问题有关)
【讨论】:
我不认为更改端口的权利是一个好主意。我找到了更好的解决方案。它是用 sudo 运行 Arduino。这是如何做到这一点的指南。首先,找到 Arduino 的 .desktop 文件。它可能位于/usr/share/applications/ 或~/.local/share/applications/。名称也可能不同,但肯定会包含“arduino”。对我来说是/usr/share/applications/arduino.desktop。然后用sudo nano <your arduino.desktop file> 打开它。 sudo nano /usr/share/applications/arduino.desktop 为我工作。它将包含类似的内容:
[Desktop Entry]
Type=Application
Name=Arduino IDE
GenericName=Arduino IDE
Comment=Open-source electronics prototyping platform
Exec=arduino %U
Icon=arduino
Terminal=false
Categories=Development;IDE;Electronics;
MimeType=text/x-arduino;
Keywords=embedded electronics;electronics;avr;microcontroller;
StartupWMClass=processing-app-Base
现在找到以Exec= 开头的行。对我来说是Exec=arduino %U。 Exec= 之后的所有内容都是启动 Arduino 的命令。对我来说是arduino %U。我们需要用 sudo 启动这个命令。然后在该命令之前输入echo "<your password>" | sudo -S。并使用Ctrl+O 保存文件。现在Exec 行将类似于Exec=echo "blahblah" | sudo -S arduino %U,其中 blahblah 是您的密码。它已经完成了!现在它应该可以工作了。如果没有,请尝试重新启动。但是还有一个问题。现在,Arduino IDE 默认将草图保存在/root/Arduino/(它应该将草图保存在/home/<username>/Arduino/)。这不好。但它可以在 Arduino 的设置中轻松修复。现在您还可以使用 Arduino IDE 编辑系统中的几乎每个文件。所以要小心,不要破坏任何东西。
编辑:我错了。 sudo usermod -a -G uucp $USER 或 sudo usermod -a -G dialout $USER 和 reboot 效果更好。
【讨论】:
我的 Genuine Arduino Mega 2560 尝试使用本地编译的 Arduino IDE 版本 1.8.16 从 Ubuntu 18.04.5 LTS 机器连接到它时遇到了这个问题。我能够在我的情况下修复它,所以在这里发布以分享提示。
遇到了几个报告相同症状的其他论坛主题(尽管并非所有主题都是 Mega 且并非都在 Linux 上):
经过几个小时的故障排除后,我能够可靠地连接到我的 Mega。事实证明,有多个问题阻碍了它的工作,必须理解和解决,当我意识到它们是什么时,我简直不敢相信自己的眼睛。
建议确保配置 udev 规则以防止 ModemManager 占用 Mega 设备,从而使其对 Arduino IDE 不可用的发帖人走在了正确的轨道上。所以我检查了我的/etc/udev/rules.d/70-snap.core.rules,确实确认已经有一条规则让 ModemManager 忽略 USB 供应商 ID 为 2341 的设备,即正版 Arduino:
...
ATTRS{idVendor}=="2341", ENV{ID_MM_DEVICE_IGNORE}="1"
...
但是,当我执行tail -f /var/log/syslog 并插入 Mega 时,我不敢相信自己的眼睛看到 ModemManager 仍在尝试与它交谈:
Dec 9 22:09:58 hostname ModemManager[999]: <info> [device /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2] creating modem with plugin 'Generic' and '1' ports
Dec 9 22:09:58 hostname ModemManager[999]: <warn> Could not grab port (tty/ttyACM0): 'Cannot add port 'tty/ttyACM0', unhandled serial type'
Dec 9 22:09:58 hostname ModemManager[999]: <warn> Couldn't create modem for device '/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2': Failed to find primary AT port
ModemManager 似乎仍在尝试将其作为非 USB TTY 设备连接。
问题更加严重,因为 Arduino IDE 没有优雅地处理这个问题,并且即使在我从 USB 上拔下 Mega 后,它仍然挂起并尝试连接到 Mega。尽管如此,我还是做了一个快速的ps -ef | grep ModemManager 然后kill [PID],等到 Arduino IDE 停止尝试连接到断开连接的 Mega,然后重新插入,通过“工具”->“端口”指定端口,然后再次尝试上传,它就像一个魅力。 (相反,如果我只是等待观看 /var/log/syslog 让 ModemManager 放弃并释放设备 Arduino IDE 可能在没有我明确杀死 ModemManager 的情况下也可以工作。这可能解释了为什么它偶尔会工作。)
然后我认为我解决了所有问题并开始将 Mega 固定到我的设备中。我拧紧连接紧固件,再次无法相信自己的眼睛再次停止工作。把 Mega 拿出来,松开整个电路板的螺栓,现在它可以工作了,用螺栓把它插回去,它就停止了工作。几轮后,将在引脚 A6 旁边的孔上使用黄铜支架与导致此问题相关联。我推测金属支架短路或以某种方式干扰了非常靠近该孔的 PCB 走线。所以不再用螺栓固定在那个孔中,Mega 开始正常工作,组装到我的设备中。
所以在我的例子中,有两个问题是阻止 Mega 工作并且 PC 无法通过 USB 连接到它:
(1) 尽管有 udev USB 规则,ModemManager 会在插入设备后立即占用设备。解决方案-杀死ModemManager(仍然需要研究修改系统配置,这样我就不必每次都杀死它)。
(2) 金属立管的硬件问题会干扰引脚 A6 旁边孔附近的 PCB 走线。解决方案 - 停止在那个孔中螺栓。
希望这有帮助。
【讨论】: