Breaking

Serial Port Debugging Between two Virtual Machines in VMware Fusion

In the course of our virtualization research, we came across a certain technical issue we couldn’t find an easy solution on knowledge bases and the like. However, as we found the question several times on the web, the following post gives just a short hint on a technical detail.

If you want to connect two virtual machines in VMware Fusion using a serial port (e.g. for debugging purposes), Fusion doesn’t provide you an GUI option to configure that. However, if you just add the following config to the debugger system’s VMX file:

serial0.present = “TRUE”
serial0.fileType = “pipe”
serial0.fileName = “/path/to/pipe”
serial0.yieldOnMsrRead = “True”
serial0.pipe.endPoint = “client”

and the following lines to the debuggee system’s VMX file:

serial0.present = “TRUE”
serial0.fileType = “pipe”
serial0.fileName = “/path/to/pipe”
serial0.yieldOnMsrRead = “True”

you can use the serial port as in the Linux or Windows VMware Workstation — even though the GUI will show you an “unsupported custom setting”:
vmware_unsupported_setting

HTH & have a good one,
Matthias

Comments

  1. Hello,
    thanks for the post I did not get the whole debugging working already, but this was of a great help already.

    I needed to take extra steps to get this working: Add the SerialPorts from GUI first, pointing them to the same file (you will be prompted to overwrite the file, accept). Then edit the vmx file according to this post.

    Whu I just added the lines to the file and deleted all other lines starting with Serial0 it did not work.

  2. Thanks man! This was of huge help and definitely saved me a lot of hours of hair pulling. Got the kernel debugging working right off the bat!

    –Svetlio

  3. I’m doing this w/ Fusion 6, I’m not having much luck. I did follow the add serial port from the GUI first, shut down, and then modify the .vmx.

    After that, in Windbg and via bcdedit, you reference the corresponding COM port correct? COM1 for serial0, COM2 for serial1, etc? I never see any file created at the path I specified.

    1. Hi Brian,

      there is one more important aspect: There must be no LPT port present in the virtual machine. To ensure that, the VMX file must not include any LPT devices _and_ the LPT port must be disabled in the BIOS of the virtual machine (yes, also when there is no LPT configured for the VM).

      The windbg settings are correct, COM1 for serial0, COM2 for serial1 (in the default settings. You should also check the assignments of the COM ports in the device manager).

      However, the file that you specified in the vmx settings should be created in any case (no depending on any settings in the VM), so this is definitely weird behavior. Feel free to post the vmx settings here or we can get in contact via mail.

      Best,
      Matthias

Comments are closed.