Virtualbox Usb Serial Port

by
Virtualbox Usb Serial Port 4,3/5 2066 reviews
Active3 years, 8 months ago
  1. Usb Virtual Serial Port Driver
  2. Oracle Virtualbox Usb Serial Port
  3. Virtualbox Com Port
  4. Virtualbox Usb Com Ports

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. Virtualbox allows each VM to have two serial ports. I tried everything under the sun to get this to work on the first of these ports (Settings Serial Ports Port 1 tabbed page). Eventually I removed the check mark from 'Enable Serial Port' on port 1 and then tried Port 2 instead.

I'm trying to learn how to write C code that will read from the serial port in Linux. I've found what seems to be a good tutorial here.

I want to be able to test this code, so I think I need either a serial port, or a way to write to the serial port while the code from above is reading.

I'm running Ubuntu 10.04 as a virtual machine on my Mac using virtualbox. My idea was to set up a virtual serial connection and write from the host to the guest. Hopefully something as simple as cat 'Hello World' > /tmp/fake_serial in a host terminal, and for that to be read by the program in the link above.

Is this possible? I've tried adding a serial port using virtual box and when I try to do the above command I get an error saying I can't write to a socket.

The second option I thought of was using something like minicom inside the guest OS, to connect to say /dev/ttyS1 and write messages for my code to read at the same time. Again, assuming that the baud rates and other settings are OK, would this be possible?

I don't have a lot of experience working with serial ports, so I'd appreciate any suggestions about the best way to do this. Thanks in advance.

JamesJames
2,0101 gold badge23 silver badges57 bronze badges

3 Answers

So to get this working I just added another Ubuntu VM on VirtualBox, and connected the two together via a virtual serial port. My main, original VM, which I use for a lot of developing will be referred to as VM1. The new VM, with a small hardrive that will only be used for sending messages to VM1 will be called VM2. These are both Ubuntu 10.04 VMs.

In VirtualBox go to Settings for VM1, go to ports, and change the settings as follows:

Usb Virtual Serial Port Driver

Now go to VM2, and select settings, ports, then change as follows:

Now first you need to start VM1. When that's booted then boot VM2. Now you can open a terminal in VM1, and type screen /dev/ttyS0 38400 (you may need to run sudo apt-get install screen before this works). Then go to VM2, open a terminal, and type echo 'Hello' > /dev/ttyS0.

You should see Hello appear in the terminal open in VM1. When you're done running screen press ctrl-a k to kill it, otherwise if you try to do other stuff with the serial port you may get an error message saying that the port is busy.

JamesJames
2,0101 gold badge23 silver badges57 bronze badges

When I had to do some serial port testing from my real to virtual machine I ended up doing a 'loop back' type testing. I took two USB-Serial converters and a RS232 F-F adaptor and connected my machine to itself. Then in VirtualBox under Settings->USB you can route one of the two USB-Serial converters to be 'owned' by your VirtualBox.

Once you plug in the converters one will register with the Mac and one with the Ubuntu 'computer' then you can do serial communication as normal between the two machines.

You may also be able to emulate a virtual serial port using a pty ('pseudo-teletype' device), but I'm not positive on that one since I believe the ability to do that was locked down in newer kernels.

Community
MikeMike
31.6k22 gold badges88 silver badges159 bronze badges

I ran into a similar situation running a QNX guest using VirtualBox 5.0.10 on an Ubuntu 14.04 host.

My solution seems general enough to apply to the above-mentioned case. Stuffit expander 2010 mac.

I configured the guest VM in the same way that Kells1986 setup his VM1:

Under the 'Serial Ports'/'Port1' tab:

  • check 'Enable Serial Port'
  • set 'Port Number' to 'COM1'
  • set 'IRQ' to '4'
  • set 'I/O Port' to '0x3F8'
  • set 'Port Mode' to 'Host Pipe'
  • uncheck 'Connect to existing pipe/socket'
  • set 'Path/Address' to an accessible file-system path (e.g. '/home/safayet/vmSerialPipe')

According to the VirtualBox manual:

Oracle Virtualbox Usb Serial Port

You can tell VirtualBox to connect the virtual serial port to a software pipe on the host. .. On a Mac, Linux or Solaris host, a local domain socket is used .. 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 socat and is available as part of many distributions.

Virtualbox Com Port

A domain socket is an IPC mechanism on UNIX systems similar to a pipe.

Virtualbox Usb Com Ports

I connected to the 'pipe' end of the virtual serial port on the Ubuntu host using the socat command:

Safayet AhmedSafayet Ahmed

Not the answer you're looking for? Browse other questions tagged cserial-portvirtualbox or ask your own question.