Monday, October 6, 2008

Piped Serial Port on VirtualBox

There is another very cool feature on Linux and VirtualBox which might solve compatibilities of old softwares that require serial connections. It's the host pipe serial-port. On VirtualBox, enable Serial port and select "Host Pipe", check "Create Pipe" and in "port path" textbox, type /tmp/com1_sock.

When my Windows XP is runnning, it recognizes the COM1 and is able to communicate. The byte-streams are actually piped to /tmp/com1_sock (if we don't do anything, it just acts as a dummy). If we want to forward it as a listening port (e.g, as a tcp server so remote systems are able to communicate with the COM1 via TCP/IP), on Linux host's shell type: socat UNIX-CONNECT:/tmp/com1_socket TCP-LISTEN:. We can pick any available tcp port, for example 8040.

Here's the example:

socat UNIX-CONNECT:/tmp/com1_socket TCP-LISTEN:8040

From another terminal (either local machine or remote machine) we can telnet to this port. For example, from our own Linux host, we can communicate to the Hyperterminal running under Windows-XP guest via this virtual serial port by telnetting to the port:

telnet localhost:8040

Voila! Our Linux machine will display anything we type on Hyperminal. This opens up a lot of experiments for us.


  1. Thanks for that tip, very useful one.

  2. Very interesting, I'm looking forward to try this with old DOS multiplayer games!