Arduino工具>串口灰色

57

我正在运行 Debian 7 (Linux Crunchbang),希望使用Arduino IDE来编程我的Arduino UNO。为了达成这个目的,我安装了 arduino 包。当我启动Arduino时,要求我将我的用户添加到 dialout 组中。因此我使用 sudo usermod -a -G dialout <my-username> 添加了用户。

然而,当我使用命令行中的 arduino 启动Arduino IDE时,IDE打开但我无法将程序加载到Arduino上。出现错误消息“找不到串口COM1。你在工具 > 串口菜单中选择了正确的串口吗?”当我尝试选择串口时,“工具 > 串口”选项被禁用。

我认为这是因为我没有授予我的USB端口(ttyACM0)读写权限。所以我执行了sudo chmod a+rw /dev/ttyACM0 但选项仍然被禁用。


https://dev59.com/qV8e5IYBdhLWcg3wd6M6#36327968 - Entree
18个回答

46

在我的Debian系统(Proxmox)下,chdmod可正常工作:

# chmod a+rw /dev/ttyACM0

安装Arduino IDE的步骤:

# apt-get install arduino arduino-core arduino-mk

将用户添加到拨号组:

# gpasswd -a user dialout

重新启动Linux。

尝试在"文件" > "示例" > "01.基础" > "Blink"中更改2个延迟时间为delay(60),然后点击上传按钮,在Arduino上进行测试,LED必须闪烁得更快。 ;)


每次我重启Linux,都需要运行这些命令。 有任何想法原因是什么? - Seanny123
更改/dev文件的权限听起来是一个“好”解决方案,但实际上并不是。这样做会允许任何应用程序访问设备,而且这种权限也不是永久性的。 - Braiam
@Seanny123 这就是为什么^ - Braiam
1
在我的情况下:sudo chmod a+rw /dev/ttyS0 - Gianmar
1
在我的情况下:将用户添加到 dialout 组并重新启动。 - user3451822
我的情况是USB端口只提供了电源,但没有USB内核事件LOL。当我进一步推动时,sudo udevadm monitor向我展示了ttyACM0。一旦它出现,就不需要进行chmod操作。为了保险起见,我使用了gpasswd,但不确定它是否有帮助。谢谢。 - juanmf

7

sudo arduino是我在ubuntu 12.04(64)上获得Arduino IDE工作(串行端口和上传)的唯一方法。 实际上,在我的情况下要使用的串行端口是/dev/ttyACM0。 而另外两个(ttyS4和ttyS0)在尝试上传到Uno时会出现错误。 祝你玩得开心。


1
这可能是因为您没有加入正确的组并以root身份运行arduino。当您尝试直接编辑、复制、剪切或删除文件时,这肯定会让您头疼,因为它们归root所有。正确的解决方案是将自己添加到该组中,并注销并重新登录。 - Braiam
哇,谢谢你。我真的已经挣扎了一个小时,试图让它工作。只需要sudo就可以了。 - Rudi Strydom
从终端启动Arduino IDE并使用“sudo”也为我解决了问题。我猜这是必要的,因为IDE需要以root权限运行,以便可以访问驱动程序目录。 - mewi
这个答案应该被接受。 救了我的一天。 非常感谢。 - Shanki Bansal

3
关闭所有的Arduino IDE实例,打开~/.arduino/preferences.txt文件并查找以下行:
serial.port=<not your port>

并将其更改为您选择的端口:

serial.port=/dev/ttyACM0

您可能需要注销才能使其生效。


3

尝试断开 USB 并重新插入。它之所以灰色,是因为 IDE 找不到已连接到 uno 的任何 com 端口。

另一种解决方案是尝试所有的 com 端口,看哪一个可用。

最后,如果所有方法都失败了,请尝试重新启动计算机。


3
如果有人需要帮助,我在Ubuntu 22.04上遇到了这个问题。问题的根源是:
  • apparmor(apparmor拒绝错误,使用dmesg进行日志记录)
  • brltty(ch34x转换器现在从ttyUSB0断开连接)
通过删除以下内容来解决它: 您可以禁用apparmor,然后它应该可以工作,但是这会使诸如firefox之类的应用程序无法使用。我的建议是完全删除它。

2

在我的情况下,这是一个坏的USB集线器。

可以使用“lsusb”命令显示所有已识别的设备。如果未插入该单元,则设置速度的选项将被禁用。

如果您的设备被识别,lsusb命令应该输出类似于字符串“Future Technology Devices International, Ltd Bridge(I2C / SPI / UART / FIFO)”。我的是RFDuino。


2

打开文本编辑器中的$arduinoHome/arduino,并修改最后一行代码:

java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel processing.app.Base "$@"

to

java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dgnu.io.rxtx.SerialPorts="/dev/ttyACMN" processing.app.Base "$@"

将属性gnu.io.rxtx.SerialPorts设置为/dev/ttyACMN,其中ttyACMN是您使用的串口名称。

这可能是rxtx库中的一个临时修复bug的方法。它帮助我在arduino1.0.5 IDE上上传了sketch。

也许对某些人有帮助。


如何在文本编辑器中打开 $arduinoHome/arduino? - Bhoomika Sheth
(Windows)通过上下文菜单->“打开方式...”或 (Linux)从终端输入类似于gedit $arduinoHome/arduino的命令 - Sild

2
在我的情况下,我通过卸载通过apt-get安装的Arduino版本,并改为通过官方网站安装,解决了这个问题。使用最新版本的Arduino,我在Ubuntu 18.04上没有遇到所描述的问题。"Original Answer"翻译成"最初的回答"。

1

安装Java的RX-TX库,请在终端中运行以下命令。

sudo apt-get install librxtx-java -y

输出端口
sudo usermod -aG dialout $USER 
sudo apt-get install gnome-system-tools 

帮助识别USB设备


1

所以我使用 sudo usermod -a -G dialout <我的用户名>

当你将自己添加到一个组后,需要注销并重新登录才能应用这些更改。只需注销并重新登录,菜单就会可用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接