qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug 1871270] [NEW] [Feature Request] add usbredir device reset blacklis


From: Michael Lee
Subject: [Bug 1871270] [NEW] [Feature Request] add usbredir device reset blacklist options support to allow macOS guest to iOS device usbredir
Date: Tue, 07 Apr 2020 01:29:50 -0000

Public bug reported:

Description of problem:
Currently, when a iOS device is redirected to a macOS VM, it falls into a 
reset-not-found loop.
Version-Release number of selected component (if applicable):
latest
How reproducible:
100%
Steps to Reproduce:


Connect an iOS device to Ubuntu 18.04.2 LTS (I believe it is the same for any 
distro.)


Connect virt-manager/virt-viewer to a macOS VM through SPICE (I am using OSX 
10.15 Catalina)


Attempt to redirect the iOS device (iPad in my case) to the VM through usb 
redirection.


Actual results:
For any odd number of attempt, the guest macOS will send a reset to the iOS 
device which causes the host to reset the USB connection in the host side. In 
the UI, it will be displayed as a successful connection for a few seconds 
before it disconnects. After this, the iOS device will reconnect itself, but 
via a different device name /dev/bus/usb/x/y+1.
For any even number of attempt, when I select the iOS device in the 
virt-manager/virt-viewer UI, the connection will not success and instead a 
LIBUSB_ERROR_NOT_FOUND error will be provided. Then the UI will reload and get 
the new device name of the iOS device, falling into the behavior of the 
aforementioned odd number of attempt.
Expected results:
The macOS detects the iOS device and connects to it happily.
Additional info:
It seems that this bug has been first identified as in 
https://bugs.freedesktop.org/show_bug.cgi?id=100149, for a Samsung Android 
device, which the developers of SPICE applied a hotfix in 
https://gitlab.freedesktop.org/spice/usbredir/-/blob/master/usbredirhost/usbredirhost.c#L147.
 However, there were no settings available for users to fix it.
A similar bug that also consists of a macOS guest/iOS device pair, but instead 
of being usbredir, is usb-host, has been identified and patched in 
https://github.com/qemu/qemu/commit/ba4c735b4fc74e309ce4b2551d258e442ef513a5, 
which is further modified into 
https://github.com/qemu/qemu/blame/146aa0f104bb3bf88e43c4082a0bfc4bbda4fbd8/hw/usb/host-libusb.c#L1486.
 Following such patch, I have attempted to apply such patch at host-side in 
https://github.com/michaellee8/qemu/blob/master/hw/usb/redirect.c (not 
correctly formatted currently, pls ignore it atm), however I discovered that 
this is not enough since it is also a SPICE issue, which resolves to 
virt-manager/virt-viewer.
This is probably a cross-project issue between qemu, spice (usbredir) and 
virt-manager/virt-viewer, which would some effort to coordinate a solution. 
However a working solution for this problem would probably benefits a lot of 
users whom relies on connecting a mobile device into a VM, for purposes like 
easier mobile development. Considering the report for the Samsung Android 
Device on a PC use case, such issue is probably cross-OS/cross-device.

cross-references:
- https://bugzilla.redhat.com/show_bug.cgi?id=1821518
- https://bugzilla.redhat.com/show_bug.cgi?id=1821517
- https://gitlab.freedesktop.org/spice/usbredir/-/issues/10

** Affects: qemu
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1871270

Title:
  [Feature Request] add usbredir device reset blacklist options support
  to allow macOS guest to iOS device usbredir

Status in QEMU:
  New

Bug description:
  Description of problem:
  Currently, when a iOS device is redirected to a macOS VM, it falls into a 
reset-not-found loop.
  Version-Release number of selected component (if applicable):
  latest
  How reproducible:
  100%
  Steps to Reproduce:

  
  Connect an iOS device to Ubuntu 18.04.2 LTS (I believe it is the same for any 
distro.)

  
  Connect virt-manager/virt-viewer to a macOS VM through SPICE (I am using OSX 
10.15 Catalina)

  
  Attempt to redirect the iOS device (iPad in my case) to the VM through usb 
redirection.

  
  Actual results:
  For any odd number of attempt, the guest macOS will send a reset to the iOS 
device which causes the host to reset the USB connection in the host side. In 
the UI, it will be displayed as a successful connection for a few seconds 
before it disconnects. After this, the iOS device will reconnect itself, but 
via a different device name /dev/bus/usb/x/y+1.
  For any even number of attempt, when I select the iOS device in the 
virt-manager/virt-viewer UI, the connection will not success and instead a 
LIBUSB_ERROR_NOT_FOUND error will be provided. Then the UI will reload and get 
the new device name of the iOS device, falling into the behavior of the 
aforementioned odd number of attempt.
  Expected results:
  The macOS detects the iOS device and connects to it happily.
  Additional info:
  It seems that this bug has been first identified as in 
https://bugs.freedesktop.org/show_bug.cgi?id=100149, for a Samsung Android 
device, which the developers of SPICE applied a hotfix in 
https://gitlab.freedesktop.org/spice/usbredir/-/blob/master/usbredirhost/usbredirhost.c#L147.
 However, there were no settings available for users to fix it.
  A similar bug that also consists of a macOS guest/iOS device pair, but 
instead of being usbredir, is usb-host, has been identified and patched in 
https://github.com/qemu/qemu/commit/ba4c735b4fc74e309ce4b2551d258e442ef513a5, 
which is further modified into 
https://github.com/qemu/qemu/blame/146aa0f104bb3bf88e43c4082a0bfc4bbda4fbd8/hw/usb/host-libusb.c#L1486.
 Following such patch, I have attempted to apply such patch at host-side in 
https://github.com/michaellee8/qemu/blob/master/hw/usb/redirect.c (not 
correctly formatted currently, pls ignore it atm), however I discovered that 
this is not enough since it is also a SPICE issue, which resolves to 
virt-manager/virt-viewer.
  This is probably a cross-project issue between qemu, spice (usbredir) and 
virt-manager/virt-viewer, which would some effort to coordinate a solution. 
However a working solution for this problem would probably benefits a lot of 
users whom relies on connecting a mobile device into a VM, for purposes like 
easier mobile development. Considering the report for the Samsung Android 
Device on a PC use case, such issue is probably cross-OS/cross-device.

  cross-references:
  - https://bugzilla.redhat.com/show_bug.cgi?id=1821518
  - https://bugzilla.redhat.com/show_bug.cgi?id=1821517
  - https://gitlab.freedesktop.org/spice/usbredir/-/issues/10

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1871270/+subscriptions



reply via email to

[Prev in Thread] Current Thread [Next in Thread]