Bug 1018567

Summary: [SPICE] - spice-usb-share - usb device is not auto-share with guest (Legacy)
Product: Red Hat Enterprise Linux 6 Reporter: David Botzer <dbotzer>
Component: spice-usb-shareAssignee: Default Assignee for SPICE Bugs <rh-spice-bugs>
Status: CLOSED WONTFIX QA Contact: Desktop QE <desktop-qa-list>
Severity: high Docs Contact:
Priority: unspecified    
Version: 6.3CC: acathrow, cfergeau, codong, dblechte, dyuan, lcui, mzhan, pstehlik, tzheng, uril, zsong
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-06-16 14:49:35 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
engine none

Description David Botzer 2013-10-13 11:48:08 UTC
Created attachment 811735 [details]
engine

Description of problem:
[SPICE] - spice-usb-share - usb device is not auto-share with guest (Legacy)

Version-Release number of selected component (if applicable):
3.3/is17.1
spice ver. see below 

How reproducible:
always

Steps to Reproduce:
1.Install Win7 or WinXP vm
2.Edit VM, advanced prop. set in console -> USB Support "Legacy"
3.Open spice console on either VM, Focus on the console
4.Connect USB device - diskOnKey, smartphone, mouse, keyboard, etc

Actual results:
Device doesnt appear in Spice console

Expected results:
Device should appear in Spice console, and be accessible to the user.

Additional info:
--------------------
virt-viewer-0.5.2-9.el6.x86_64

spice-glib-devel-0.11-11.el6.x86_64
spice-gtk-0.11-11.el6.x86_64
kmod-kspiceusb-rhel60-4.9-14.el6.x86_64
spice-vdagent-0.8.1-3.el6.x86_64
spice-glib-0.11-11.el6.x86_64
spice-gtk-devel-0.11-11.el6.x86_64
spice-server-devel-0.10.1-10.el6.x86_64
spice-gtk-tools-0.11-11.el6.x86_64
spice-common-devel-0.4.2-7.el6.x86_64
spice-xpi-2.7-22.el6.i686
spice-client-0.8.2-15.el6.x86_64
spice-gtk-python-0.11-11.el6.x86_64
spice-usb-share-4.9-9.el6.x86_64
spice-xpi-2.7-22.el6.x86_64
spice-server-0.10.1-10.el6.x86_64
spice-protocol-0.10.1-5.el6.noarch
-----------------
It seems rhevm sends command
spice-foreign -f -1,-1,-1,-1,0 -a
0 = block

After running it manully with 1, instead, the log shows allowed,
But still the device is not shown, nor accessible

Comment 2 David Botzer 2013-10-13 11:58:24 UTC
Uri Suggest from his environment:
 2013-10-13 14:44:37,492 INFO  nsPluginInstance::ExecuteUsbRdrCtrl: Launching /usr/bin/usbrdrctrl Win7-tst-tcms 32023 -c /tmp/spicec-OjcCAG/spice-foreign   -f -1,-1,-1,-1,0 -a

0 = disabled

root      8616  0.2  0.0 405908  1752 pts/0    Sl   14:24   0:03 spiceusbsrvd
dbotzer   9674  0.0  0.0 106092  1200 ?        S    14:44   0:00 /bin/sh /usr/libexec/spice-xpi-client
dbotzer   9678  0.0  0.9 682136 34708 ?        Sl   14:44   0:00 remote-viewer --spice-controller
dbotzer   9679  0.0  0.0 100888   668 ?        S    14:44   0:00 logger -t spice
dbotzer   9682  0.0  0.0 277280  2036 ?        Sl   14:44   0:00 /usr/bin/usbrdrctrl 10.35.3.11 32023 -c /tmp/spicec-pYcp8T/spice-foreign   -f -1,-1,-1,-1,0 -a

Proto Recv-Q Send-Q Local Address               Foreign Address             State      
unix  2      [ ACC ]     STREAM     LISTENING     198336 /tmp/spicec-pYcp8T/spice-foreign
unix  3      [ ]         STREAM     CONNECTED     198531 /tmp/spicec-pYcp8T/spice-foreign
====================
usb_device_descriptor: 0x00000001, USB Device: Broadcom Bluetooth Device  Broadcom Corp  - USB Wireless Radio Frequency Bluetooth Device, USB port: 1-1.4, Class: 0xe0 (Wireless) VendoreID: 0x0a5c Product ID: 0x217f Revision: 0x0000, Status: 0x0000 (USB Device is connected to your computer.), Properties: 0x0000 (Standard USB Device.), Timeout: 0
usb_device_descriptor: 0x00000002, USB Device: Integrated Camera  Chicony Electronics Co., Ltd.  - Composite USB Device, USB port: 1-1.6, Class: 0x00 (Device) VendoreID: 0x17ef Product ID: 0x480f Revision: 0x0000, Status: 0x0000 (USB Device is connected to your computer.), Properties: 0x0000 (Standard USB Device.), Timeout: 0
usb_device_descriptor: 0x0000000e, USB Device: U3 Cruzer Micro  SanDisk Corporation  - USB Mass Storage Device, USB port: 2-1.1, Class: 0x08 (Storage) VendoreID: 0x0781 Product ID: 0x5406 Revision: 0x0000, Status: 0x0000 (USB Device is connected to your computer.), Properties: 0x0000 (Standard USB Device.), Timeout: 0
usb_device_descriptor: 0x0000001d, USB Device: USB Optical Mouse  Logitech  - USB Human Interface - Mouse Device, USB port: 1-1.5.3, Class: 0x03 (HID) VendoreID: 0x046d Product ID: 0xc05a Revision: 0x0000, Status: 0x0000 (USB Device is connected to your computer.), Properties: 0x0000 (Standard USB Device.), Timeout: 0
usb_device_descriptor: 0x0000001e, USB Device: NaturalĀ® Ergonomic Keyboard 4000  Microsoft  - Composite USB Device, USB port: 1-1.5.4, Class: 0x00 (Device) VendoreID: 0x045e Product ID: 0x00db Revision: 0x0000, Status: 0x0000 (USB Device is connected to your computer.), Properties: 0x0000 (Standard USB Device.), Timeout: 0
remove_items: Removing all existing foreign menu items.
is_share_allowed: Device 0x00000001 Action: Allow
add_item: Adding foreign menu item: Broadcom Bluetooth Device  Broadcom Corp  - USB Wireless Radio Frequency Bluetooth Device
is_share_allowed: Device 0x00000002 Action: Allow
add_item: Adding foreign menu item: Integrated Camera  Chicony Electronics Co., Ltd.  - Composite USB Device
is_share_allowed: Device 0x0000000e Action: Allow
add_item: Adding foreign menu item: U3 Cruzer Micro  SanDisk Corporation  - USB Mass Storage Device
is_share_allowed: Device 0x0000001d Action: Allow
add_item: Adding foreign menu item: USB Optical Mouse  Logitech  - USB Human Interface - Mouse Device
is_share_allowed: Device 0x0000001e Action: Allow
add_item: Adding foreign menu item: NaturalĀ® Ergonomic Keyboard 4000  Microsoft  - Composite USB Device

Comment 3 David Botzer 2013-10-13 12:11:38 UTC
also the default usb-filter  from rhev-m is -1,-1,-1,-1,0 and that we killed usbrdrctrl and started it manually with -1,-1,-1,-1,1

Comment 4 RHEL Program Management 2013-10-18 10:14:15 UTC
This request was not resolved in time for the current release.
Red Hat invites you to ask your support representative to
propose this request, if still desired, for consideration in
the next release of Red Hat Enterprise Linux.

Comment 5 CongDong 2013-10-25 08:24:40 UTC
I can reproduce this with:
virt-viewer-0.5.6-8.el6-x86_64

Steps:
Prepare guest win7 on rhevm.
1.  Install SPICE packages on client
On your Linux client machine, install the following packages:

    spice-usb-share
    kmod-kspiceusb-rhel60 for Red Hat Enterprise Linux 6

# yum install spice-usb-share kmod-kspiceusb

2.   Run SPICE USB services
Start the spiceusbsrvd service and load the kspiceusb module. Run:

# service spiceusbsrvd start
# modprobe kspiceusb

3. Install RHEV-Tools on guest
Install "rhev-guest-tools-iso" in win7

4. Turn off firewall on client and guest, or can configure firewall on both sides, allow connections on TCP port 32023 on any firewalls between the guest machine and the client machine

5.  Enable USB Auto-Share
On the User Portal, select your guest machine. Ensure that you have enabled SPICE USB Auto-Share on the guest machine. 

6.  Attach USB device
Connect to your guest machine. Place the SPICE console window of your guest desktop in focus, then attach a USB device to the client. 


Result:
The device come out on client, not the guest.

Comment 7 Christophe Fergeau 2014-03-12 16:02:15 UTC
Not sure this is the correct component, if I'm not mistaken remote-viewer does not have any code related to USB redirection. Uri, can you confirm?

Comment 8 Uri Lublin 2014-03-12 17:21:43 UTC
(In reply to Christophe Fergeau from comment #7)
> Not sure this is the correct component, if I'm not mistaken remote-viewer
> does not have any code related to USB redirection. Uri, can you confirm?

Moving to spice-usb-share (the component legacy usb redirection).

Actually, remote-viewer does have some support for legacy usb redirection, by implementing the foreign-menu interface.

It seems there are two bugs here, so we may split it later:
1. USB filter disables all devices (likely in RHEV-M, if not in spice-xpi).
2. Reporter mentions that even when starting usbrdrctrl manually with USB filter enabling all devices, usb-sharing with the guest fails.