Use local USB when connected via SSH
Solution 1:
This assumes you are running Linux on both sides. If you are running Windows, there are possibilities (like putty
and CygWin
), but it is a bit more difficult to do.
Yes, you probably can. But this is very likely not want want to do:
If you are flashing, what happens if the network connection breaks?
Do you really want to allow a cloud to "infect" your local USB?
Serial port
If your local USB device has something like a serial port for flashing, you perhaps can use some local port forwarding and socat
to connect to the serial line. Provided that your development environment allows to flash
using a TCP port. Like follows:
On your local machine: ssh -R1234:localhost:1234 [email protected]
This opens port 127.0.0.1:1234
on remote.example.com
which then connects to 127.0.0.1:1234
on your local machine.
Now you use socat
to connect to the serial line of your USB
:
On your local machine: socat -d -d -d tcp-listen:1234,reuseaddr,fork,bind=127.0.0.1 /dev/ttyUSB0
TCP -> Pipe
On the other side, if the software cannot use TCP but wants to talk to a pipe or tty, you can use socat
again to provide that:
On the remote: socat -d -d -d unix-listen:.mypipe tcp-connect:127.0.0.1:1234
Now let your remote software connect to .mypipe
and it is transparently connected to /dev/ttyUSB0
on your local computer.
But your mileage may vary. It depends heavily what your software in the cloud needs.
Special USB drivers
For example it may be that you need to create some special stub, which talks to USB
. Luckily this can be forked of by socat as well:
On the local side: socat -d -d -d tcp-listen:1234,reuseaddr,fork,bind=127.0.0.1 exec:/path/to/program
The remote side is more difficult, because if it expects to talk to USB
, you probably need to create some dummy USB driver for the Linux kernel and load it there. Not easy to manage, sorry.
To sum it up
SSH
in combination with socat
is able to provide nearly all the interconnection between your local machine and "the cloud" you might think of.
However connecting to a local USB
may or may not need some special treatment, on both sides. The problematic part is not SSH
or socat
, it is how to allow the remote software to talk over such a tunnel to your local USB.
Perhaps somebody else knows some plug and play USB emulator
for Linux, but I never came across such a beast. And I do Linux for nearly 20 years now ..
As a starting point, perhaps look at that answer