在 Linux 主机之间建立直接连接(USB-串行-USB)时无需登录

在 Linux 主机之间建立直接连接(USB-串行-USB)时无需登录

我的目标是使用两端集成 USB 串行转换器的 FTDI 零调制解调器电缆(FTDI-nmc),作为一种简单方便的方法,偶尔登录到各种无头设备,如服务器、SCB 和开发板。

我的无头设备都有两个共同点:USB 端口和 Linux 操作系统。为简单起见,我们将它们称为“服务器”。我使用笔记本电脑或 SBC,例如 RPi3(我们将它们称为“客户端”)通过 FTDI-nmc 登录无头设备。两者也都在 Linux 上运行。出于各种原因,我不想为此使用网络连接,串行连接对我来说就足够了。

我对 Linux 的了解,尤其是串行连接方面的了解非常有限。毫不奇怪,我最初几次尝试将 Linux 机器(Ubuntu 18.04 桌面)连接到 SCB(RPi3 最新 Raspbian)和 Tinkerboard(最新 Debian Tinker OS)均以失败告终。我总是在客户端上使用 Putty(现在仍然如此)尝试登录服务器。几次配置更改之后,我很幸运地得到了登录提示并成功登录,但出于某种原因,我只在第一次插入 FTDI-nmc 时才收到登录提示。断开连接并再次插入总是会导致连接失败,即不会出现登录提示。不幸的是,我很失望(而且很愚蠢),没有记下当时所做的配置更改。那是一个错误。

另一方面,它促使我寻找和阅读有关该主题的更多信息,希望这能让我更好地理解整个问题。总的来说,以下是我更改/修改/测试过但不再认为是核心问题一部分的内容:

  1. 内核命令行,添加 console=ttyUSB0 (服务器是,客户端否)就足够了
  2. [电子邮件保护](在服务器上启用,在客户端上禁用)可能没问题ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 115200,38400,9600 %I $TERM
    (或者最好用 vt102 或 xterm 替换 $TERM ?)
  3. 默认 udev 规则不变(至少在服务器上,不确定在客户端上)
  4. 权限(尝试了所有可能的方法,但均未成功)

然而,无论我如何更改配置,结果到目前为止都是一样的:
如果我在客户端启动 Putty 并打开与串行端口 (/dev/ttyUSB0) 的连接,只会弹出一个空白、无响应的终端窗口。它只显示一个光标,并且无法在此终端窗口中输入任何内容。但是,似乎可以通过串行端口进行某种形式的访问,因为 Putty 不会抱怨或抛出任何错误消息。

终端窗口一片空白,没有任何文本,这让我相信该过程甚至还没有到达应该切换到程序的点login,即必须输入密码的点。如果这是真的,是否也意味着该过程卡住了,因为串行连接的通信参数出了问题。可能是串行线两端不匹配?我最好的猜测是波特率不匹配。如果波特率正确,至少应该有一个登录提示要求输入用户名吗?如果我理解正确,agetty 使用登录名的前几个字符来确定奇偶校验。但显然,在我的情况下,该过程甚至没有走到这一步。因此,我怀疑波特率不匹配。但为什么我至少看不到乱码文本,而不仅仅是一个空白的终端窗口。

不用说,我在 Putty 设置中尝试了各种波特率,但都无济于事。(我在 Putty 类别“会话 - 速度”和“连接串行”中使用相同的波特率。“连接 - 数据”类别中的波特率选择也很重要吗?)

我如何验证实际波特率?stty -F /dev/ttyUSB0 -a应该是适合这项工作的工具,但它给出的结果似乎与我根据其他设置所期望的任何结果都不相关。例如,如果我在服务器的内核命令行上使用 console=ttyUSB0,115200 并重新启动,stty 仍会显示 9600。但使用 stty 报告的波特率 (9600) 作为客户端上 Putty 的速度似乎也没有任何效果。

我是否正确地假设流量控制设置并不重要,因为 FTDI-nmc 将自动适应 Putty 中的设置(假设我不使用内核命令行或 systemd 的 serial-getty 服务中的流量控制参数设置)。换句话说,Putty 中的任何流量控制设置都不应该导致 FTDI 芯片出现错误,对吗?

最后,我需要提到我能从上面提到的一次成功登录中回忆起的一件事。客户端上的设备文件 /dev/ttyUSB0 端口的权限和 (owner:group) 与现在不同。第一次插入 FTDI-nmc 时,它最终为 (root:tty),权限为 620。在这些条件下,登录提示出现,并且通过 Putty 登录成功。但是,关闭 Putty 会话、拔下并重新连接 FTDI-nmc 总是导致 /dev/ttyUSB0 具有 (root:dialout) 和 660 权限(这与我到目前为止在所有后续登录尝试中获得的结果相同),并且出现了空白 Putty 终端窗口和缺少登录提示的问题。我一点也不知道这是怎么可能的。正如之前提到的,尝试各种关于组成员资格和权限的不同设置都无助于解决问题。不幸的是,我不记得那次成功登录的任何其他配置细节(我可以在不改变设置的情况下重复该效果几次,因此“单数”在“一个特定参数配置”的意义上)。好吧,至少这个观察似乎表明电缆本身没有故障。

任何关于此的建议都非常感谢。我确信我遗漏了一些显而易见的东西,但我没有主意了。

答案1

核心问题似乎是漏洞与内核版本 4.12+ 系统中的绑定/解除绑定内核事件以及 systemd/udev 守护进程处理这些事件的困难有关。在我看来,这显然产生了以下影响:[电子邮件保护]仅在第一次插入 FTDI-nmc 时有效。一旦拔出,服务将不会在重新插入 USB 设备时自动生成新的 getty。我不明白所有的技术细节,但据我所知,这个错误尚未解决。

相关内容