使用 Raspberry Pi 通过串行端口进行 ssh

使用 Raspberry Pi 通过串行端口进行 ssh

我正在尝试通过串行通信将我的树莓派与我的 ubuntu 笔记本电脑一起使用,如下所示教程。

我已确保:

  • 我的树莓派中的 /boot/config.txtenable_uart=1底部有一行
  • 接线正确(TX 电缆连接到 raspi 的 RX,反之亦然)
  • Raspi 正在启动,绿灯闪烁
  • 我可以通过 wifi 使用 ssh 访问我的 pi
  • 我的笔记本电脑上安装了屏幕和 minicom

我尝试在笔记本电脑上查找哪些 USB 端口正在工作(dmesg | grep tty)我得到了这个返回结果,这让我相信我的 raspi 已连接到 /dev/ttyUSB0:

console [tty0] enabled ttyS4 at I/O 0x4060 (irq = 19, base_baud = 115200) is a 16550A pl2303 converter now attached to ttyUSB0 ttyS5 at MMIO 0x4010002000 (irq = 20, base_baud = 7500000) is a 16550A pl2303 converter now disconnected from ttyUSB0 pl2303 converter now attached to ttyUSB0

问题:

当我打开屏幕 ( sudo screen /dev/ttyUSB0 115200) 时,出现一个空白的终端屏幕,没有任何变化。我尝试按 Enter 键,然后重新连接 raspi。我也尝试使用 minicom,结果相同。

尝试时cat /dev/ttyUSB0,我收到device or resource busy错误

另外,我在笔记本电脑上使用 ubuntu 20.04,在树莓派上使用 raspian

有人对如何处理这个问题有什么建议吗?解决这个问题(例如使用以太网电缆或 wifi)不是一个选择,因为我使用的是 Raspberry Pi Zero(并在 Pi 4 上测试)并尝试通过 GPIO 引脚进行有线连接。

答案1

十年前,我使用零调制解调器电缆(不同于普通串行数据电缆)进行了类似的串行登录。以下是我当时关于如何成功建立串行连接的笔记。希望它们能有所帮助:

在无头机器(服务器)上,打开串行端口并保持打开状态。

# getty -L ttyS0 115200 vt100

在具有串行端口(客户端)的笔记本电脑上,安装屏幕应用程序,然后将其用作终端仿真器通过串行端口进行连接。

# apt-get install screen
# screen /dev/ttyS0 115200
  (Hit return once or twice)

完成屏幕操作后,使用命令退出(CTRL+ A,然后Backslash

您应该能够从客户端登录到服务器。

如果您遇到问题:

  • 确保您没有启动多个屏幕会话(它们会造成干扰)
  • 确保没有一台机器在同一个端口上同时运行 getty 和 screen(它们会相互干扰)。一台机器应该运行 getty,另一台应该运行 screen。
  • 确保双方使用相同的速度 (115200)。此调制解调器设置不会自动协商速度!
  • 尝试改变首先启动的服务。每次尝试后,终止 screen 和 getty 服务(但只终止在该端口上运行的 getty!)

相关内容