如何通过USB在线进行串口连接?

如何通过USB在线进行串口连接?

我希望能够通过串行控制台从 Ubuntu 18.04 笔记本电脑建立到无头 Ubuntu 18.04 服务器的连接,以避免显卡消耗服务器的能源。

主板是 ASRock X99 Extreme3​​。它的 UEFI 有一个选项可以启用/禁用串行端口,我将其设置为启用 - 我很聪明 - 并选择3F8h/IRQ43E8h/IRQ4选择“串行端口地址”,我最初选择的是这个地址,3F8h/IRQ4但不知道这些值代表什么。

在服务器上,我将 RS232 转 D-Sub 连接器 (DB9) 连接到主板的串行端口,并插入性别转换器。它转换

-------------                 -----------
\ 5 4 3 2 1 /       to       / 5 4 3 2 1 \
 \ 9 8 7 6 /                /   9 8 7 6   \
  ---------                 ---------------

笔记本电脑没有串行端口,因此我使用串行 USB 适配器,这会导致

[ 4303.030466] pl2303 3-1.1:1.0: pl2303 converter detected
[ 4303.031471] usb 3-1.1: pl2303 converter now attached to ttyUSB0

dmesg插入后打印。
在服务器端,输出dmesg | grep tty

[ 0.218803] printk: console [tty0] enabled
[ 2.079815] 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A

我读到了关于为 GRUB 指定串行控制台的可能性以及相关的内核参数,但是我没有找到任何明确的说明,说明在系统启动后是否有必要进行连接(我暂时不需要能够连接到 GRUB 的控制台)。

当我尝试使用

sudo minicom -D /dev/ttyUSB0

或者putty,我明白了

CTRL-A Z for help | 115200 8N1 | NOR | Minicom 2.7.1 | VT102 | Offline | ttyUSB0 

在前者的页脚中,两个终端都不接受任何输入。我注意将要连接的设备文件与打印的设备文件进行匹配dmesg

我怀疑除了在 UEFI 中打开串行端口外,我不需要在服务器端安装或配置任何东西。这样对吗?

也许波特率不是自动协商的,需要配置,但我不知道如何找出正确的值。我运行了配置minicom,但只能选择默认值,因为我找不到很好的解释——在所有教程中,连接似乎在之后就神奇地起作用了minicom -s。也许连接有效,但我错过了连接的最后一步。

我将桌面用户帐户和根用户添加到组dialout和中uucp

我可以提供服务器和笔记本电脑的所有必要信息。

答案1

一些好的读物可以从Ubuntu 官方文档

替代串行客户端:screen

GNU screen 实际上是一个非常强大的串行终端。

安装:

sudo apt-get install screen

开始:

sudo screen /dev/ttyUSB0 n

其他一些建议:
1. 调整n至您需要的:

  • 第一次尝试时无需输入数字;它可能会完美地自动协商
  • 然后使用 115200、57600、38400、19200、9600、4800、2400、1200,并在开始工作时停止。
  • 如果你是纯粹主义者并且不喜欢使用sudo此功能或需要将其分发给没有访问权限的用户sudo,请将他们添加到dialout组中。

要结束会话,请使用Ctrl-AShift- K

答案2

[ 2.079815] 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A

内核在上面检测到的链接16550 通用异步收发器它提供了一个 ttyS0 端口以及分配给它的一些资源(0x3f8 IO地址中断请求 4)。

在服务器端, 确保

  1. 串行已连接到 USB 端口。使用以下命令进行检查:

    $lsusb
    

    输出应该是这样的:

    Bus 003 Device 001: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
    
  2. 默认权限如下ttyS*

    crw-rw---- 1 root dialout ... /dev/ttyS0
    

    您已经是该群组的成员dialout,并可添加:

     $sudo adduser $USER dialout
    

    让 Minicom 可以使用以下命令访问 ttyUSB*:

    $sudo chmod 0777 /dev/ttyUSB0
    crwxrwxrwx 1 root dialout ... /dev/ttyS0

下一步,设置 Minicom 应该是这样的:

$sudo minicom -s
    +-----[configuration]------+                                     
    | Filenames and paths      |                                     
    | File transfer protocols  |                                     
    | Serial port setup        |                                     
    | Modem and dialing        |                                     
    | Screen and keyboard      |
    | Save setup as dfl        |
    | Save setup as..          |
    | Exit                     |
    | Exit from Minicom        |
    +--------------------------+

选择“串行端口设置”​​菜单,然后根据需要进行配置并将设置保存为 dfl。最后重新启动 Minicom。

    +-----------------------------------------------------------------------+
    | A -    Serial Device      : /dev/ttyUSB0                              |
    | B - Lockfile Location     : /var/lock                                 |
    | C -   Callin Program      :                                           |
    | D -  Callout Program      :                                           |
    | E -    Bps/Par/Bits       : 115200 8N1                                |
    | F - Hardware Flow Control : Yes                                       |
    | G - Software Flow Control : No                                        |
    |                                                                       |
    |    Change which setting?                                              |
    +-----------------------------------------------------------------------+
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+

在笔记本电脑端,打开串行客户端,screen例如putty

  1. 使用screen序列号:

    $screen /dev/ttyUSB0 115200, cs8, -parenb, -cstopb

    或者

  2. 使用putty序列号:

    $sudo putty /dev/ttyUSB0 -serial -sercfg 115200,8,n,1,N

希望这可以帮助。

相关内容