On Fri, Aug 21, 2026 at 19:44:06 +0000, bd730c5053df9efb via Users wrote:
Hi all!
I have a slackware64-15.0 linux host running libvirt-11.10.0 with qemu 10.2.2 and a windows XP guest. I'm trying to have the gustes COM1 port redirected to the hosts /dev/ttyUSB0 device. I have not found a direct way of doing this in virt-manager since the only options for a serial device are "Output to a file", "Pseudo TTY" or a "UNIX socket". I have managed to modify the domains XML adding the following
<commandline xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> <arg value='-chardev'/> <arg value='serial,path=/dev/ttyUSB0,id=hostserial0'/> <arg value='-device'/> <arg value='pci-serial,chardev=hostserial0'/> </commandline>
Use of qemu:commandline is at your own risk because libvirt can't know what host resources the VM needs access for.
When I start the VM with this I get an error that says
Could not open '/dev/ttyUSB0': Operation not permitted
So this is not surprising, because ...
I checked the device's permissions which are u+rw,g+rw and qemu is being executed with root permissions, I added o+rw to /dev/ttyUSB0 just in case but got the same error. I also tried with /dev/tty0 but got the same error.
... libvirt creates a private /dev/ filesystem (via a mount namespace) that is populated *only* by devices that the XML requests. As qemu:commandline directly manipulates the commandline libvirt doesn't know that you need access to /dev/ttyUSB0. Said that there is no reason to do qemu:commandline backdoor as host character devices are directly supported: <serial type='dev'> <source path='/dev/ttyUSB0'/> <target port='0'/> </serial> https://www.libvirt.org/formatdomain.html#host-device-proxy