串行端口

串行端口

有没有什么方法可以让我通过 SSH 连接到远程机器时访问插入本地机器 USB 端口的设备?

我想要做的是在云中建立一个开发环境,并将程序刷入通过 SSH 连接的微控制器。

答案1

假设您在两边都运行 Linux。如果您运行的是 Windows,则有可能(如puttyCygWin),但这样做有点困难。

是的,你也许可以。但这很可能不是你想要做的:

  • 如果你正在闪烁,网络连接中断会发生什么情况?

  • 您真的想允许云“感染”您的本地 USB 吗?

串行端口

如果您的本地 USB 设备有类似串行端口的东西用于刷新,您也许可以使用一些本地端口转发并socat连接到串行线。前提是您的开发环境允许flash使用 TCP 端口。如下所示:

在本地机器上:ssh -R1234:localhost:1234 [email protected]

这将打开端口127.0.0.1:1234remote.example.com然后连接到127.0.0.1:1234您的本地机器。

现在您可以使用socat连接到您的串行线USB

在本地机器上:socat -d -d -d tcp-listen:1234,reuseaddr,fork,bind=127.0.0.1 /dev/ttyUSB0

TCP -> 管道

另一方面,如果软件不能使用 TCP 但想要与管道或 tty 通信,则可以socat再次使用来提供:

在遥控器上:socat -d -d -d unix-listen:.mypipe tcp-connect:127.0.0.1:1234

现在让您的远程软件连接到.mypipe并且它透明地连接到/dev/ttyUSB0您的本地计算机。

但您的里程可能会有所不同。这在很大程度上取决于您的云软件需要什么。

特殊 USB 驱动程序

例如,你可能需要创建一些特殊的存根,用于与 对话USB。幸运的是,这也可以通过 socat 分叉:

在本地方面:socat -d -d -d tcp-listen:1234,reuseaddr,fork,bind=127.0.0.1 exec:/path/to/program

远程端更难,因为如果它希望与 对话USB,你可能需要为 Linux 内核创建一些虚拟 USB 驱动程序并将其加载到那里。管理起来并不容易,抱歉。

把它们加起来

SSH结合起来socat能够提供您本地机器和您可能想到的“云”之间的几乎所有互连。

但是连接到本地USB可能需要或不需要双方进行一些特殊处理。问题的部分不是SSHsocat,而是如何允许远程软件通过这样的隧道与本地 USB 进行通信。

也许其他人知道一些plug and play USB emulatorLinux 的东西,但我从未遇到过这么难的东西。我使用 Linux 已经近 20 年了……

作为起点,也许看看这个答案

相关内容