PipeDream: Connecting serial hardware to virtual machines
If you are looking to connect serial hardware to virtual machines running under Hyper-V, PipeDream is the answer. PipeDream runs on the server that runs Hyper-V (the virtualization host) and acts as a bridge between a serial port and a virtual machine. PipeDream communicates data received from the serial hardware to a virtual serial port for the virtual machine, and vice-versa.
PipeDream runs on the server only without requiring any client side components. There is nothing to install on the virtual machine: no device drivers or other software. This maximizes compatibility with legacy operating systems and software, with operating systems such as XP or earlier readily supported.
With PipeDream, guest virtual machines can use serial ports on the virtualization host (or another computer). PipeDream works using Hyper-V's named pipe support, so it doesn't need a network to communicate: set the pipe name in Hyper-V, then run PipeDream to connect the serial device to the guest VM.
Disclaimer: PipeDream works with Microsoft's Hyper-V but is an independent software product. We are not affiliated with Microsoft, and our use of the term Hyper-V is not intended to indicate any endorsement from or affiliation with Microsoft Corporation.
Version 2.4 is now available for download - click the button below to download a time-limited and fully-functional trial.
Most recent operating systems include the required Microsoft files. If PipeDream fails to start under your host operating system, please first install the Microsoft redistributables that are available here.
Simply extract the downloaded zip file and run the PipeDream executable (pipedream .exe). If you get an error message about missing components, run vc_redist.x64.exe (included) first, then re-run PipeDream.
PipeDream requires administrative privileges to save its configuration. To configure the proper settings for your serial device right click the PipeDream icon and select "Run as administrator."
Serial device (link) settings
Every serial device is different and many are not plug-n-play. Getting your device to work properly requires knowing baud rate and flow control settings for your device. PipeDream defaults to 9600,N,8, 1 with DTR on and DSR enabled for both directions. If you have any trouble establishing or maintaining communication between the virtual machine and your serial device (such as data sitting in PipeDream's buffer without being sent to the device or PipeDream not reading serial data), we highly recommend checking that the serial settings for your device match the port settings in PipeDream. To do so, press the "Change Settings" button in PipeDream.
Important: in addition to baud, stop and data bits, parity, and flow control, pay attention to the DTR and DSR settings as well. Many devices list the baud rate and flow control settings but are silent regarding DTR and DSR sensitivity. You may need to experiment with different settings to find the ones for your device.
Configuring Hyper-V for PipeDream
You can usually perform this installation on a live virtual machine, without needing to halt or shut it down.
First, you need to setup a serial port for your guest virtual machine (vm).
Configuring for a Gen-1 virtual machine
Follow these steps if you are using a Gen-1 Hyper-V virtual machine:
- Start the Hyper-V Manager and bring-up the Settings for the guest vm where you want to connect the serial port.
- In the new window, select COM1 or COM2 from the hardware list on the left. This is the serial port where the virtual machine will be able to access your serial device. In other words, this port appears in the virtual machine and may be different from the physical serial port on the host.
- Attach the guest's serial port to a pipe named PipeDream, then press OK. To do this, click on Named pipe and enter "PipeDream" for the pipe name, as shown in the picture. If your serial device is on a remote computer, check the Remote computer checkbox and enter the computer name.
Configuring for a Gen-2 virtual machine
If your virtual machine if Gen-2, then the pipe settings shown above are not configurable via the GUI - you will need to use Powershell commands instead. Open a Powershell session and then:
- Execute Get-VM, then copy the name of the virtual machine you want to connect to the serial port.
- Execute Set-VMComPort -Number <1 or 2, for serial port COM1 or COM2> -Path \.pipePipeDream
To confirm the pipe was created, use Get-VMComPort. See the example screenshot below, for a virtual machine named SillyRabbit
Please contact us at firstname.lastname@example.org to obtain the full version of PipeDream.