화면을 통해서는 직렬 포트를 열 수 있지만 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

minicom에 매개변수를 전달하면 -D열리지 만:

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.

루트로 구성하면 설정이 저장되어 /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.

관련 정보