我正在尝试通过串行通信将我的树莓派与我的 ubuntu 笔记本电脑一起使用,如下所示这教程。
我已确保:
- 我的树莓派中的 /boot/config.txt
enable_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!)