为什么我可以通过屏幕打开串口但无法通过minicom打开?

为什么我可以通过屏幕打开串口但无法通过minicom打开?

我通过串口进行 arduino 通信/dev/ttyACM0,我可以通过屏幕打开它:

$ screen /dev/ttyACM0 115200

但由于某种原因,我没有权限通过 minicom 打开它:

$ minicom /dev/ttyACM0 -b 115200
minicom: cannot open /dev/tty8: Άρνηση πρόσβασης

我的用户在dialout组中:

$ groups
pcmagas adm dialout cdrom sudo dip plugdev lpadmin sambashare wireshark kvm docker
$ whoami
pcmagas

有什么想法吗? AFAIK arduino使用FTDI芯片,内核使用的模块是cdc_acm

$ udevadm info --query=all --name=/dev/ttyACM0
P: /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/tty/ttyACM0
N: ttyACM0
S: android0
S: serial/by-id/usb-Arduino__www.arduino.cc__0043_7533131313335170A061-if00
S: serial/by-path/pci-0000:00:14.0-usb-0:3:1.0
E: DEVLINKS=/dev/serial/by-id/usb-Arduino__www.arduino.cc__0043_7533131313335170A061-if00 /dev/android0 /dev/serial/by-path/pci-0000:00:14.0-usb-0:3:1.0
E: DEVNAME=/dev/ttyACM0
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3:1.0/tty/ttyACM0
E: ID_BUS=usb
E: ID_MM_CANDIDATE=1
E: ID_MODEL=0043
E: ID_MODEL_ENC=0043
E: ID_MODEL_FROM_DATABASE=Uno R3 (CDC ACM)
E: ID_MODEL_ID=0043
E: ID_PATH=pci-0000:00:14.0-usb-0:3:1.0
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_3_1_0
E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI
E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller
E: ID_REVISION=0001
E: ID_SERIAL=Arduino__www.arduino.cc__0043_7533131313335170A061
E: ID_SERIAL_SHORT=7533131313335170A061
E: ID_TYPE=generic
E: ID_USB_CLASS_FROM_DATABASE=Communications
E: ID_USB_DRIVER=cdc_acm
E: ID_USB_INTERFACES=:020201:0a0000:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=Arduino__www.arduino.cc_
E: ID_VENDOR_ENC=Arduino\x20\x28www.arduino.cc\x29
E: ID_VENDOR_FROM_DATABASE=Arduino SA
E: ID_VENDOR_ID=2341
E: MAJOR=166
E: MINOR=0
E: SUBSYSTEM=tty
E: TAGS=:systemd:
E: USEC_INITIALIZED=9517655754

虽然通过将-D参数传递到 minicom 确实打开了:

minicom -D /dev/ttyACM0 -b 115200

但我不明白为什么-D需要参数。这是因为plugdev使用了设备组吗?

ll /dev/ttyACM0
crw-rw---- 1 root plugdev 166, 0 Αυγ  11 13:05 /dev/ttyACM0

答案1

minicom如果没有该选项,实际上并不接受命令行上的设备名称-D。如果指定了非选项参数,它将用作 Minicom 配置文件的后缀。

如果您指定,它实际上会尝试读取或minicom /dev/ttyACM0处的配置文件。/etc/minicom/minirc./dev/ttyACM0~/.minirc./dev/ttyACM0

预期用途是这样的:

  1. 在设置模式下启动 Minicom,为新配置指定所需的名称,例如minicom -s arduino。或者,您可以使用其他选项在此处指定端口和速度,例如minicom -D /dev/ttyACM0 -b 115200 -s arduino
  2. 转至Serial port setup菜单,将“串行设备”(项目A)更改为/dev/ttyACM0,并将 BPS/奇偶校验/位(项目E)更改为 115200 8N1(或您的设备所需的任何内容。还根据需要设置硬件和软件流控制(项目FG)。
  3. 按Esc键返回配置菜单,选择Save setup as arduino,然后选择Exit from Minicom
  4. 现在 Minicom 已配置完毕,您可以使用您保存的端口、速度和流量控制设置来启动它,只需minicom arduino.

如果您以 root 身份进行配置,设置将保存到/etc/minicom/minirc.arduino,并且系统上的所有用户都可以使用(假设/etc/minicom所有人都可读);如果您以普通用户身份执行此操作,设置将被保存到~/.minirc.arduino该用户帐户中并且仅可供该用户帐户使用。

答案2

minicom 的手册页解释了-D命令行选项:

-D, --device
        Specify the device, overriding the value given in the configuration file.

minicom是一个严重受其配置文件控制的程序,并且在您的计算机上,配置文件没有/dev/ttyACM0.该screen程序可以在其命令行上获取设备的名称,但minicom期望以不同的方式指定设备,除非您提供正确的命令行选项。在这种情况下-D

相关内容