Good day, Marc-Andre.
All USB redirection products on market have such component architecture:
1) USB provider side - host, which have physical USB ports and devices,
which connected into this ports.
2) USB consumer side - host, which doesn't have physical USB ports and
connect to USB Provider side for port virtualization.
So generally USB redirection must have 3 components:
1) virtual USB hub on consumer side
It does next things:
- receives URB ant IOCTL from USB provider and inject them into USB consumer
host USB stack
- receives URB ant IOCTL from USB consumer host USB stack and send them to USB
provider
2) virtual USB device on provider side
It does next things:
- receives USB URB and IOCTL from locally connected physical USB device and
send them to consumer host
- receives USB URB and IOCTL from USB consumer host and send them to locally
connected physical USB device
3) USB filter on provider side
It does next things:
- it detects new USB devices in provider USB stack and make decision for
device redirection - "To be or not to be?"
- for devices marked for redirection - it filters URB and IOCTL and send
them to virtual USB device
It's looks hard to implement all of this but most of all already done.
First component - virtual USB hub on consumer side - MS done in Windows 2008
R2 SP1 (thanks to Marc-Andre for information)
Second and third components on Linux are already done in such open source
projects.
- USB/IP (http://usbip.sourceforge.net/)
- USB Virtual Host Controller Interface (
http://sourceforge.net/projects/usb-vhci/)
And they have Windows side so we can take a look how they integrate windows
and linux USB stacks.
Best regards,
Roman Barabanov
On Sat, Jun 11, 2011 at 04:07, Marc-André Moreau <marcandre.mor...@gmail.com
> wrote:
> Hello FreeRDP developers,
>
> Since we are adding new features to FreeRDP at a fast pace, I was taking a
> look at RemoteFX USB redirection. There are still many features that are of
> higher priority than this one, but I would still like to get an idea of the
> effort required for its implementation. I have never developed USB drivers,
> and the kind of knowledge required to write a USB driver appears to be
> required for such work to be done.
>
> Nevertheless, I started gathering information regarding RemoteFX USB
> redirection on the wiki:
> http://www.freerdp.com/wiki/doku.php?id=usb_redirection
>
> I don't know much about USB, but there seems to be some similarities
> between the disk redirection extension and the usb redirection extension.
> Both appear to be using IRPs, or at least something that looks like it.
>
> The USB extension talks about URBs (USB Request Blocks) and IOCTLs. I found
> mentions of URBs in Linux API documentation, but they don't look like they
> match their Windows equivalents. Maybe they are different but still
> equivalent.
>
> Is there anyone knowledgeable of USB on the mailing list that could provide
> better insight on the difficulty associated with implementing RemoteFX USB
> redirection in FreeRDP?
>
> Best regards,
> - Marc-Andre
>
>
> ------------------------------------------------------------------------------
> EditLive Enterprise is the world's most technically advanced content
> authoring tool. Experience the power of Track Changes, Inline Image
> Editing and ensure content is compliant with Accessibility Checking.
> http://p.sf.net/sfu/ephox-dev2dev
> _______________________________________________
> Freerdp-devel mailing list
> Freerdp-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/freerdp-devel
>
>
------------------------------------------------------------------------------
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
_______________________________________________
Freerdp-devel mailing list
Freerdp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freerdp-devel