7

I'm working with a linux application which needs to talk with a remotely-located serial (rs-232) device. I've worked out how to use socat on the remote end to send the device's serial data over an IP connection, but how do I then convert that IP stream back into a (pseudo) serial device character device (e.g. /dev/fakesocatserial0) on the other side?

Alex G
  • 386
  • 1
  • 4
  • 13

2 Answers2

3

have you tried sshfs? You can simply mount remote:/dev into somewhere like local:/remote/dev and point to the actual character device

  • 1
    Well, the remote device is an embedded board with no SSH, so I'm trying to avoid changing its configuration if at all possible. – Alex G May 01 '12 at 17:00
  • ah, then @mgorven 's socat method is the way to go – platinummonkey May 01 '12 at 17:41
  • This wouldn't have worked anyway -- if you mount the remote /dev locally, it will still be the local kernel that translates the major and minor device numbers of devices into a driver entry point; that is, a /dev/ttyS0 node would still refer to the local serial port, not the remote one, even if the device node happens to be on a remote filesystem. – András Korn Feb 21 '23 at 12:36
2

You should be able to use the PIPE address type of socat to create a Unix pipe to connect to, for example (assuming that the device with the real serial device creates the network connection):

socat PIPE:/dev/fakesocatserial0 TCP-LISTEN:1234
mgorven
  • 30,615
  • 7
  • 79
  • 122
  • Maybe something like this? `socat PTY,link=/dev/fakeserial0,raw,echo=0,wait-slave TCP4:remote-board:1723` – Alex G May 01 '12 at 17:00