KVM guest VM does not reattach a throughpassed USB printer from Host after switching printer off and on

Bug #1377095 reported by 123p
16
This bug affects 3 people
Affects Status Importance Assigned to Milestone
QEMU
Expired
Undecided
Unassigned

Bug Description

Host OS: Gentoo, all packages built 2014-10-01

qemu version 2.1.0-r1

Linux kernel 3.14.14 x86_64 Intel(R) Core(TM) i3-3220T CPU @ 2.80GHz GenuineIntel GNU/Linux

Guest VM: Debian 7 (Wheezy) Linux 3.2.0 686

Start command:
/usr/bin/qemu-system-i386 -enable-kvm -name wheezy -k de -serial null -parallel null -hda /var/kvm/wheezy.kvm-img -daemonize -net nic,macaddr=02:00:00:00:01:31 -net tap,ifname=tap3,script=no,downscript=no -m 512 -pidfile /var/run/kvm/wheezy.pid -usb -usbdevice tablet -runas myuser -vnc 127.0.0.1:3 -usbdevice host:04e8:3242

Problem:
USB printer pass-through from KVM host to guest vm only works if I start the qemu kvm when the USB printer (vendor/product ID 04e8:3242) is switched on and therefore shown in lsusb on the host. Then it is available in the started VM.

But when I switch the usb printer attached to the host off, it disappears in lsusb both on the host and the VM (as expected) but when I switch the USB printer on again, it is shown on the host and also on the QEMU Monitor (Crtl Alt Shift 2 -> info usbhost), but in the VM lsusb does not show it again- so USB pass-through / hot plugging does not work. It worked with a previous Version of qemu (1.0 or something).

That is very annoying, because every time I want to print something, I need to shutdown the VM, start the printer, and then start the VM (which runs cups as printer server).
But after printing, I do not want the printer to keep running, so I switch it off.

Revision history for this message
123p (123p) wrote :

This is a very annoying bug, and it is still not solved after six months, last versions tested with the bug:

KVM host qemu version 2.2.1

KVM host Linux version 3.14.37

Please fix this.

Revision history for this message
123p (123p) wrote :

This is a very annoying bug, and it is still not solved after 2.7 years.
Last versions tested and affected by this bug:

KVM host qemu version 2.9.0

KVM host Linux version 4.9.6 x86_64

Please fix this.

Revision history for this message
Thomas Huth (th-huth) wrote :

I guess switching the printer off and on again is like attaching a new USB device to your host (so it only shows up in the host, of course, and not in the guest). Have you already tried to do a new "device_add usb-host,..." in the QEMU monitor to attach it to the guest again while the VM is running?

Revision history for this message
123p (123p) wrote :

Thanks Thomas for Your suggestion. Unfortunately I cannot achieve the reconnection:

KVM runs with following parameters:

-usb -device usb-host,vendorid=0x04e8,productid=0x3242,id=drucker -monitor unix:qemu-monitor-socket,server,nowait

With the Unix socket, I can now pipe commands to the qemu monitor. This info command works:

echo 'info status' | socat - unix-connect:/qemu-monitor-socket
QEMU 4.2.0 monitor - type 'help' for more information
(qemu) info status
VM status: running

What I have is this:
- disconnect USB printer (Product Samsung ML-1510_700)
- stop KVM
- connect USB printer
- start KVM

echo 'info usb' | socat - unix-connect:/qemu-monitor-socket
QEMU 4.2.0 monitor - type 'help' for more information
(qemu) info usb
  Device 0.1, Port 1, Speed 12 Mb/s, Product QEMU USB Tablet
  Device 0.2, Port 2, Speed 12 Mb/s, Product QEMU USB Hub
  Device 0.3, Port 2.1, Speed 12 Mb/s, Product Samsung ML-1510_700, ID: drucker

Printer works.
- disconnect printer

echo 'info usb' | socat - unix-connect:/qemu-monitor-socket
QEMU 4.2.0 monitor - type 'help' for more information
(qemu) info usb
  Device 0.2, Port 1, Speed 12 Mb/s, Product QEMU USB Tablet
  Device 0.3, Port 2, Speed 12 Mb/s, Product QEMU USB Hub
  Device 0.4, Port 2.1, Speed 12 Mb/s, Product Samsung ML-1510_700, ID: drucker

USB Info still shows the printer, allthough it is disconnected.

Remove device from KVM:

echo 'device_del drucker' | socat - unix-connect:/qemu-monitor-socket

Printer is removed from the device list:

info usbdrucker' | socat - unix-connect:/qemu-monitor-socket
QEMU 4.2.0 monitor - type 'help' for more information
(qemu) info usb
  Device 0.2, Port 1, Speed 12 Mb/s, Product QEMU USB Tablet
  Device 0.3, Port 2, Speed 12 Mb/s, Product QEMU USB Hub

-connect printer

printer is not shown:

echo 'info usb' | socat - unix-connect:/qemu-monitor-socket
QEMU 4.2.0 monitor - type 'help' for more information
(qemu) info usb
  Device 0.2, Port 1, Speed 12 Mb/s, Product QEMU USB Tablet
  Device 0.3, Port 2, Speed 12 Mb/s, Product QEMU USB Hub

Add printer device:

echo 'device_add usb-host,vendorid=0x04e8,productid=0x3242,id=drucker ' | socat - unix-connect:/qemu-monitor-socket
QEMU 4.2.0 monitor - type 'help' for more information
(qemu) device_add usb-host,vendorid=0x04e8,productid=0x3242,id=drucker

echo 'info usb' | socat - unix-connect:/qemu-monitor-socket
QEMU 4.2.0 monitor - type 'help' for more information
(qemu) info usb
  Device 0.2, Port 1, Speed 12 Mb/s, Product QEMU USB Tablet
  Device 0.3, Port 2, Speed 12 Mb/s, Product QEMU USB Hub
  Device 0.0, Port 2.2, Speed 1.5 Mb/s, Product USB Host Device, ID: drucker

Device is shown, but not like when KVM is started with connected printer: Speed only 1.5 Mb/s, no vendor and product info.

Printer does _not_ work.

Revision history for this message
Thomas Huth (th-huth) wrote : Moved bug report

This is an automated cleanup. This bug report has been moved to QEMU's
new bug tracker on gitlab.com and thus gets marked as 'expired' now.
Please continue with the discussion here:

 https://gitlab.com/qemu-project/qemu/-/issues/110

Changed in qemu:
status: New → Expired
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.