Cause:
This issue is caused by improper installation and uninstallation of USB drivers.
Consequence:
After a remote-viewer client is closed while a USB device is connected to a client machine, it becomes impossible to use the USB device on the client machine.
Fix:
A new package, usbclerk, temporary installs usb drivers on a per-session basis. When the session is concluded, usbclerk uninstalls the usb drivers.
Result:
USB drivers no longer remain installed on client machines after remote-viewer clients are closed, and client machines regain access to their USB drives at the conclusion of a remote-viewer session.
DescriptionMarian Krcmarik
2012-08-02 10:08:09 UTC
Description of problem:
I believe we need to handle situation when usb device connected to a guest is not ejected/unmount properly better. In a situation when a user closes the remote-viewer client with usb device connected to the guest displayed by remote-viewer WinUSB driver remains to be installed on client machine which prevents users to use the USB device on the client machine.
I believe we should at least try to remove winusb driver on remote-viewer closure and consider to bring a solution for removal of winusb driver when active remote-viewer session is closed/crashed.
The Use case is for example following:
A user shuts the VM with a USB device connected down gracefully from inside of guest. The result is that winsusb driver is still installed and the user cannot use it on client machine. Workaround is to uninstall USB device from client machine including winusb driver and let Windows install a generic one again.
The true is that Users could be educated to unmount/eject USB devices properly but that would cost a lot of effort and bug reports.
Version-Release number of selected component (if applicable):
usbclerk-win-0.1-4
How reproducible:
Always
Steps to Reproduce:
1. Get a remote-viewer session to a guest with Any USB device connected to the guest.
2. Close remote-viewer while USB redirection is active.
3. Try to use the USB device on the client machine anyhow.
Actual results:
It's not possible to use USB device anyhow until you remove winusb driver and install a generic one.
Expected results:
winusb driver should be removed so Windows installs automatically a generic one -> user can use USB device on the client machine.
Additional info:
Comment 1Marc-Andre Lureau
2012-08-02 10:56:05 UTC
Looks like usbclerk should be tracking the requestors, and un-redirect when they are gone (crashed or quit normally). Arnon?
(In reply to comment #1)
> Looks like usbclerk should be tracking the requestors, and un-redirect when
> they are gone (crashed or quit normally). Arnon?
It can be handled by keeping the pipe opened (currently it's opened & closed per install/remove transaction) and cleanuping the specific devices upon pipe close. It also requires another small change in the pipe handling as it currently supports a single connection at a time.
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.
http://rhn.redhat.com/errata/RHEA-2012-1527.html