FreeBSD blocks on BOCHS serial port

Eugene Grosbein eugen at grosbein.net
Mon Aug 13 19:36:46 UTC 2018


13.08.2018 20:52, Alexander Lochmann wrote:

> Hi folks!
> 
> We are doing some automatic experiments using FreeBSD running in a
> virtual machine.
> To control the experiment from the outside, we use serial ports to
> communicate with an userspace program.
> The communication via serial does work with QEMU. However, it does not
> work with BOCHS which is our desired emulator.
> Even simple operations like 'echo FOO | tee /dev/ttyu1' or 'cat
> /dev/ttyu1' do not work. Both commands block 'forever'.
> It does not matter whether we use ttyu0 (file backend) or ttyu1 (tcp
> socket).
> I put some debug output in sys/dev/uart/uart_dev_ns8250.c. The output
> suggests that the driver more or less reads and writes to the serial
> ports. At least it does something...
> 
> Do you have any hints how we can further analyze this problem?
> Did anyone came across a similar problem?

This could be modem control line "Carrier Detection" (CD) or flow control problem:
emulators can have distinct default settings for serial ports.

You should not rely on defaults and make sure you disable modem control/CD
either explicitly (using stty(1) etc.) or implicitly by switching to /dev/cuau0
instead of /dev/ttyu0. Flow control settings should match too, for both sides
of virtual port.




More information about the freebsd-stable mailing list