Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign upPV USB #531
Comments
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
Modified by marmarek on 17 Apr 2012 12:59 UTC |
marmarek
self-assigned this
Mar 8, 2015
marmarek
added this to the Release 2 milestone
Mar 8, 2015
marmarek
added
bug
C: core
P: minor
enhancement
and removed
bug
labels
Mar 8, 2015
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
marmarek
Mar 8, 2015
Member
Comment by marmarek on 3 Oct 2012 23:25 UTC
Some related info: https://groups.google.com/group/qubes-devel/browse_thread/thread/e002ae940061d897
|
Comment by marmarek on 3 Oct 2012 23:25 UTC |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
Modified by joanna on 8 Oct 2012 09:31 UTC |
marmarek
modified the milestones:
Release 2 Beta 1,
Release 2
Mar 8, 2015
marmarek
added
P: major
and removed
P: minor
labels
Mar 8, 2015
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
marmarek
Mar 8, 2015
Member
Comment by marmarek on 8 Nov 2012 03:00 UTC
qvm-usb code done by Alexandre Bezroutchko merged into master branch.
Kernel frontend/backend drivers are still unstable, but this isn't the scope of this ticket.
|
Comment by marmarek on 8 Nov 2012 03:00 UTC |
marmarek
closed this
Mar 8, 2015
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
marmarek
Mar 8, 2015
Member
Comment by joanna on 8 Feb 2013 12:53 UTC
We're still waiting for a working pvusb backend...
|
Comment by joanna on 8 Feb 2013 12:53 UTC |
marmarek
modified the milestones:
Release 1 Beta 3,
Release 2 Beta 1
Mar 8, 2015
marmarek
reopened this
Mar 8, 2015
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
Modified by joanna on 8 Feb 2013 13:03 UTC |
marmarek
modified the milestones:
Release 2 Beta 3,
Release 1 Beta 3
Mar 8, 2015
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
Modified by joanna on 1 Aug 2013 11:56 UTC |
marmarek
modified the milestones:
Release 3,
Release 2 Beta 3
Mar 8, 2015
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
Modified by joanna on 20 Apr 2014 17:07 UTC |
marmarek
added
C: xen
and removed
C: core
labels
Mar 8, 2015
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
Modified by marmarek on 20 Apr 2014 17:25 UTC |
marmarek
added
C: kernel
and removed
C: xen
labels
Mar 8, 2015
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
marmarek
Mar 8, 2015
Member
Comment by marmarek on 24 Oct 2014 12:01 UTC
USBIP in 3.17 kernel (uploaded to unstable repo) is moved out of "staging" tree. Its architecture/interface looks good in terms of usability in Qubes: network connection is established in userspace, then single file descriptor (socket) is passed to the kernel.
Based on that, I've managed to run it over qrexec (minor change in qrexec was required - to use sockets instead of pipes). Tested on USB stick and webcam - looks pretty good. Test on internal bluetooth adapter failed (oops in backend), but also had problems with this device without USBIP in the middle. All with UsbVM of course.
Some remaining problems:
- Performance - in R2 qrexec is pretty slow, also produces a lot of CPU usage in dom0. Hopefully will work much better in R3. But still, even in R2 it was enough for webcam.
- Connection workflow - VM-VM qrexec services are normally initiated by one VM to another. In qvm-usb we'd like to dom0 arrange the VM-VM connection. In R2 it is rather simple to work around, as the connection always goes through dom0, but in R3 it will be somehow more tricky - but still doable of course. Or perhaps we should implement it without qrexec, just plain vchan?
|
Comment by marmarek on 24 Oct 2014 12:01 UTC Some remaining problems:
|
This was referenced Mar 8, 2015
marmarek
modified the milestones:
Release 3.1,
Release 3.0
May 13, 2015
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
adrelanos
Nov 4, 2015
Member
Can you please elaborate on the usability impact of PV USB? So once we have the USB VM and PV USB... Does it mean, that even if USB printer, USB input devices, USB phone connection, etc. are all connected to same internal USB controllers, that Qubes could selectively assign arbitrary devices to different VMs? The VMs would not have access to the real USB stack, but only a virtualized one?
|
Can you please elaborate on the usability impact of PV USB? So once we have the USB VM and PV USB... Does it mean, that even if USB printer, USB input devices, USB phone connection, etc. are all connected to same internal USB controllers, that Qubes could selectively assign arbitrary devices to different VMs? The VMs would not have access to the real USB stack, but only a virtualized one? |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
marmarek
Nov 4, 2015
Member
Yes, exactly. Of course still compromised USB VM could provide malicious
device to the target VM (instead of genuine one) and sniff all the
communication, but this would be much better than having full USB stack
in target VM (or even dom0).
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
|
Yes, exactly. Of course still compromised USB VM could provide malicious Best Regards, |
adrelanos
referenced this issue
Nov 4, 2015
Closed
USB connected android phone does not show up as USB block device #1375
marmarek
modified the milestones:
Release 4.0,
Release 3.1
Feb 8, 2016
This was referenced Mar 21, 2016
marmarek
added
the
help wanted
label
Mar 21, 2016
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
marmarek
Mar 21, 2016
Member
Generally there are multiple implementations possible here:
- Xen-specific PV USB drivers - project was dormant for a long time, but recently got some attention. Initially it was based on USBIP kernel driver. But currently backend driver is considered as part of qemu - haven't checked if that would work with driver domains (i.e. USB controllers in some USB VM instead of dom0).
- USBIP - not Xen specific and since Linux ~3.19 moved out of "staging" tree to normal driver. This driver uses userspace tools for TCP communication and then pass socket FD to the kernel - it is possible to use qrexec socket instead of TCP.
- OpenXT drivers - Windows frontend and Linux backend. Linux frontend is work in progress.
USBIP seems to be the easiest and the most mature implementation, available in mainline Linux. I have some work in progress scripts for setting it up ("the backend part"). Will push it somehow this week. Probably needs help on frontend part (updating qvm-usb tool, adding Qubes Manager options etc).
cc @caschulz88
|
Generally there are multiple implementations possible here:
USBIP seems to be the easiest and the most mature implementation, available in mainline Linux. I have some work in progress scripts for setting it up ("the backend part"). Will push it somehow this week. Probably needs help on frontend part (updating cc @caschulz88 |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
caschulz88
Mar 21, 2016
Hey, thanks for posting the possible implementation options here. For me also USBIP sounds the best way to go for an implementation. I'm looking forward to grab your code and work with it. Of course I'm also willing to support you and help on working on the backend and frontend part.
Please let me know as soon as it's online somewhere.
caschulz88
commented
Mar 21, 2016
|
Hey, thanks for posting the possible implementation options here. For me also USBIP sounds the best way to go for an implementation. I'm looking forward to grab your code and work with it. Of course I'm also willing to support you and help on working on the backend and frontend part. Please let me know as soon as it's online somewhere. |
marmarek
referenced this issue
Mar 27, 2016
Closed
Support a single qrexec service argument, available to qrexec policy #1876
added a commit
to QubesOS/qubes-app-linux-usb-proxy
that referenced
this issue
Mar 27, 2016
added a commit
to QubesOS/qubes-app-linux-usb-proxy
that referenced
this issue
Mar 27, 2016
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
marmarek
Mar 27, 2016
Member
Here: https://github.com/QubesOS/qubes-app-linux-usb-proxy
It requires: #1876 (both dom0 and VM parts)
You can workaround that by editing /etc/qubes-rpc/qubes.USB in backend doman and hardcoding some device there (just for testing).
|
Here: https://github.com/QubesOS/qubes-app-linux-usb-proxy |
marmarek commentedMar 8, 2015
Reported by marmarek on 17 Apr 2012 12:59 UTC
PV USB with Linux 3.x works fine, but needs some work to integrate with Qubes:
2a. This includes some script in backend VM (in some/most cases not dom0) that bind USB device to usbback driver - /usr/lib/qubes/unbind_pci_device.sh equivalent.
Migrated-From: https://wiki.qubes-os.org/ticket/531