Ever since the original IBM PC, personal computers have been equipped with one or two serial ports, also called COM ports by DOS and Windows. Serial ports were commonly used with modems, and some computer mice used to be connected to serial ports before USB became commonplace.
While serial ports are no longer as common as they used to be, there are still some important uses left for them. For example, serial ports can be used to set up a primitive network over a null-modem cable, in case Ethernet is not available. Also, serial ports are indispensable for system programmers needing to do kernel debugging, since kernel debugging software usually interacts with developers over a serial port. With virtual serial ports, system programmers can do kernel debugging on a virtual machine instead of needing a real computer to connect to.
If a virtual serial port is enabled, the guest OS sees a standard
16550A compatible UART device. Other UART types can be configured
using the
You can use either the Settings tabs or the
You can configure up to four virtual serial ports per virtual machine. For each device, you must set the following:
Port Number: This determines the serial port that the virtual machine should see. For best results, use the traditional values as follows:
COM1: I/O base 0x3F8, IRQ 4
COM2: I/O base 0x2F8, IRQ 3
COM3: I/O base 0x3E8, IRQ 4
COM4: I/O base 0x2E8, IRQ 3
You can also configure a user-defined serial port. Enter an I/O base address and interrupt (IRQ).
Port Mode: What the virtual port is connected to. For each virtual serial port, you have the following options:
Disconnected: The guest will see the device, but it will behave as if no cable had been connected to it.
Host Device: Connects the
virtual serial port to a physical serial port on your
host. On a Windows host, this will be a name like
Host Pipe: Configure
On a Windows host, data will be sent and received
through a named pipe. The pipe name must be in the
format
On a Mac OS, Linux, or Oracle Solaris host, a local
domain socket is used instead. The socket filename
must be chosen such that the user running
On Linux there are various tools which can connect to
a local domain socket or create one in server mode.
The most flexible tool is
In this case, you can configure whether
For a direct connection between two virtual machines, corresponding to a null-modem cable, simply configure one VM to create a pipe or socket and another to attach to it.
Raw File: Send the
virtual serial port output to a file. This option is very
useful for capturing diagnostic output from a guest. Any
file may be used for this purpose, as long as the user
running
TCP: Useful for forwarding serial traffic over TCP/IP, acting as a server, or it can act as a TCP client connecting to other servers. This option enables a remote machine to directly connect to the guest's serial port using TCP.
TCP Server: Deselect the Connect to Existing Pipe/Socket check box and specify the port number in the Path/Address field. This is typically 23 or 2023. Note that on UNIX-like systems you will have to use a port a number greater than 1024 for regular users.
The client can use software such as
TCP Client: To create
a virtual null-modem cable over the Internet or LAN,
the other side can connect using TCP by specifying
Up to four serial ports can be configured per virtual machine, but you can pick any port numbers out of the above. However, serial ports cannot reliably share interrupts. If both ports are to be used at the same time, they must use different interrupt levels, for example COM1 and COM2, but not COM1 and COM3.