This feature is still experimental, it is not expected to work correctly under different client bandwidths, although it should not crash the server.

To enable:

export SPICE_DEBUG_ALLOW_MC=1
Then launch qemu vm as usual.

The stdout will contain an additional line:

spice: allowing multiple client connections
You can then launch clients as usual. A second client connection will not disconnect any of the previous clients. There is no set limit. The behavior of each channel in multiple client mode:

inputs – shared. All clients can supply mouse and keyboard.
display – shared. All clients receive display updates.
cursor – shared. All clients receive cursor updates.
playback – first connection after no connections. To do: make it shared.
record – first connection after no connections. To do: make it shared.
smartcard – first connection after no connections. To do: make it shared.
usbredir – first connection after no connections. To do: make it shared.
agent – ?
NB: The main channel is not on that list because it isn’t a user visible channel. Every client has it’s own main connection.

NB: First connection after no connections: To receive this channel you will have to connect after explicitly disconnecting all the previous clients. Otherwise you will easily reach a situation where none of the clients have any of those channels:

connect A
connect B (while A is connected)
disconnect A (B is still connected)
connect C
Now both B and C only have {inputs,display,cursor}, no one has any other (playback,cursor,smartcard) connection. Specifically, the server didn’t advertise those channels to clients B and C.

MultipleClientsImplementationNotes contains old design notes, not all implemented. To do: pick up notable notes from there over here.

-serial dev
Redirect the virtual serial port to host character device dev. The default device is "vc" in
graphical mode and "stdio" in non graphical mode.
This option can be used several times to simulate up to 4 serial ports.
Use "-serial none" to disable all serial ports.
Available character devices are:
vc[:WxH]
Virtual console. Optionally, a width and height can be given in pixel with
vc:800x600
It is also possible to specify width or height in characters:
vc:80Cx24C
pty [Linux only] Pseudo TTY (a new PTY is automatically allocated)
none
No device is allocated.
null
void device
/dev/XXX
[Linux only] Use host tty, e.g. /dev/ttyS0. The host serial port parameters are set according
to the emulated ones.
/dev/parportN
[Linux only, parallel port only] Use host parallel port N. Currently SPP and EPP parallel port
features can be used.
file:filename
Write output to filename. No character can be read.
stdio
[Unix only] standard input/output
pipe:filename
name pipe filename
COMn
[Windows only] Use host serial port n
udp:[remote_host]:remote_port[@[src_ip]:src_port]
This implements UDP Net Console. When remote_host or src_ip are not specified they default to
0.0.0.0. When not using a specified src_port a random port is automatically chosen.
If you just want a simple readonly console you can use "netcat" or "nc", by starting QEMU
with: "-serial udp::4555" and nc as: "nc -u -l -p 4555". Any time QEMU writes something to
that port it will appear in the netconsole session.
If you plan to send characters back via netconsole or you want to stop and start QEMU a lot of
times, you should have QEMU use the same source port each time by using something like
"-serial udp::4555@4556" to QEMU. Another approach is to use a patched version of netcat which
can listen to a TCP port and send and receive characters via udp. If you have a patched
version of netcat which activates telnet remote echo and single char transfer, then you can
use the following options to step up a netcat redirector to allow telnet on port 5555 to
access the QEMU port.
"QEMU Options:"
-serial udp::4555@4556
"netcat options:"
-u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
"telnet options:"
localhost 5555
tcp:[host]:port[,server][,nowait][,nodelay]
The TCP Net Console has two modes of operation. It can send the serial I/O to a location or
wait for a connection from a location. By default the TCP Net Console is sent to host at the
port. If you use the server option QEMU will wait for a client socket application to connect
to the port before continuing, unless the "nowait" option was specified. The "nodelay" option
disables the Nagle buffering algorithm. If host is omitted, 0.0.0.0 is assumed. Only one TCP
connection at a time is accepted. You can use "telnet" to connect to the corresponding
character device.
"Example to send tcp console to 192.168.0.2 port 4444"
-serial tcp:192.168.0.2:4444
"Example to listen and wait on port 4444 for connection"
-serial tcp::4444,server
"Example to not wait and listen on ip 192.168.0.100 port 4444"
-serial tcp:192.168.0.100:4444,server,nowait
telnet:host:port[,server][,nowait][,nodelay]
The telnet protocol is used instead of raw tcp sockets. The options work the same as if you
had specified "-serial tcp". The difference is that the port acts like a telnet server or
client using telnet option negotiation. This will also allow you to send the MAGIC_SYSRQ
sequence if you use a telnet that supports sending the break sequence. Typically in unix
telnet you do it with Control-] and then type "send break" followed by pressing the enter key.
unix:path[,server][,nowait]
A unix domain socket is used instead of a tcp socket. The option works the same as if you had
specified "-serial tcp" except the unix domain socket path is used for connections.
mon:dev_string
This is a special option to allow the monitor to be multiplexed onto another serial port. The
monitor is accessed with key sequence of Control-a and then pressing c. See monitor access
pcsys_keys in the -nographic section for more keys. dev_string should be any one of the
serial devices specified above. An example to multiplex the monitor onto a telnet server
listening on port 4444 would be:
"-serial mon:telnet::4444,server,nowait"
braille
Braille device. This will use BrlAPI to display the braille output on a real or fake device.
msmouse
Three button serial mouse. Configure the guest to use Microsoft protocol.

Proxmox VE : accessing COM port from the host in a VM

Posted on January 5, 2010

If you want to access the COM/serial port of your host machine from a KVM virtual machine in Proxmox VE, simply do the following :

What is Spice?

SPICE (the Simple Protocol for Independent Computing Environments) is a remote-display system built for virtual environments which allows users to view a computing “desktop" environment – not only on its computer-server machine, but also from anywhere on the Internet and using a wide variety of machine architectures.

about this wiki

With this wiki the Spice team hopes to make it easier to let contributors add their knowledge and help the Spice project. Feel free to edit or add new pages related to Spice, or just search for answer to your questions. This wiki is a source for users and developers documentation and everybody is welcome to improve it.

This Wiki is not intended for the asking of support questions. If you have questions, please refer the support page on Spice site.