如何使用 tty0tty 设置虚拟串行端口(Linux 空调制解调器模拟器)

如何使用 tty0tty 设置虚拟串行端口(Linux 空调制解调器模拟器)

我想在 Linux 中设置虚拟串行端口模拟器。我希望端口是永久的,这样每次重启时都可以使用它们。我尝试使用索卡特为了这个目的,

socat -d -d pty,raw,echo=0 pty,raw,echo=0

但是我在测试程序中使用这些 VSP(虚拟串行端口)时经常遇到“端口繁忙”问题。此外,我发现很难创建永久/持久的 VSP。

我现在想尝试使用 tty0tty 来实现我的目的。但我找到的关于如何使用它的文档很少。有人能告诉我吗?如果还有任何针对 socat 的解决方案,请发表评论。

答案1

安装

  1. 从以下来源之一下载 tty0tty 包:

  2. 提取它:

    tar xf tty0tty-1.2.tgz
    
  3. 从提供的源构建内核模块:

     cd tty0tty-1.2/module
     make
    
  4. 将新的内核模块复制到内核模块目录中:

     sudo cp tty0tty.ko /lib/modules/$(uname -r)/kernel/drivers/misc/
    
  5. 加载模块:

     sudo depmod
     sudo modprobe tty0tty
    

    /dev/您应该会在( ls /dev/tnt*)中看到新的串行端口

  6. 赋予新的串口适当的权限:

     sudo chmod 666 /dev/tnt*
    

您现在可以访问串行端口/dev/tnt0(1、2、3、4 等)。请注意,连续端口是互连的。例如,/dev/tnt0/dev/tnt1就像使用直接电缆一样连接。

跨引导持久化

编辑文件/etc/modules(Debian)或/etc/modules.conf

sudo nano /etc/modules.conf

并添加以下行:

tty0tty

警告

注意此方法不会使模块在内核更新后继续存在所以如果您更新内核,请确保再次构建 tty0tty 并重复该过程。

如果您不移动模块,每次内核更新systemctl --failed都会返回服务systemd-modules-load.service已结束“ failed”的信息。同样在journalctl -xe | grep "Failed to find"

相关内容