Gnu-Screen

為什麼我可以通過螢幕打開串口但不能通過minicom打開?

  • August 11, 2022

我有一個通過串口的 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

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該使用者帳戶並且僅可用於該使用者帳戶。

引用自:https://unix.stackexchange.com/questions/713274