On 12/02/2015 01:29 PM, Rogan Dawes wrote:
On Tue, Dec 01, 2015 at 06:17:54PM -0800, Greg KH wrote:
On Wed, Dec 02, 2015 at 01:02:28AM +0000, Rogan Dawes wrote:
Thanks Greg.
At a high level, what is needed to implement a new type of USB device gadget,
such as a display link device?
A lot of work :)
Heh! Ok, as a non C-programmer, I'm looking for the easiest way, then :-D
I assume there is a small kernel portion that simply relays data to user space,
and a user space component that processes that data and replies appropriately?
The files Documentation/usb/gadget* should give you an idea of what is
needed here. But first, I suggest you read up on how USB works, it's a
lot more complex than I think you realize it is...
I'm sure it is more complex that I realise, which is why I'm asking questions first.
To explain what I am trying to achieve, and possibly the way in which I can go about it, to my understanding:
As mentioned originally, I'm trying to come up with an IP KVM, as inexpensively as possible. Realising that the approach that I am following will not allow me to interact with any layers prior to a successfully booted operating system, what I am hoping to do is, at a minimum, be able to observe the DisplayLink traffic flowing from an external computer (i.e. not a VM) over the USB.
If I understood your idea correctly you would like to do something like
rdp over USB, am I right?
If yes then I'm currently running a project with students from Warsaw
University of Technology and they are doing exactly this:)
What we would like to do:
- Use FunctionFS to emulate DisplayLink device
- Use f_hid to pass input events
- Maybe use f_ecm to share clipboard, file copy etc.
Unfortunately currently we have only some very basic proof of concept.
We have ffs daemon and ConfigFS config to setup and act like a display
link with 640x480 monitor. So on a host side we see another monitor and
on the device side we have an window in which we can see image from host.
There are several problems. The most important one is display link host
driver and protocol documentation. We have implemented our function
based on open source display link driver (udl). Unfortunately the
performance is very poor 1280x1024 is absolutely max what we can get if
we don't want to have a slide show. udl driver itself has also some
problems and NULL ptr dereferences. Moreover, Linux driver implements
only very limited set of encodings while Windows driver has much more of
them and it's very easy to see when you compare usb bandwidth used by
widnows and linux driver.
That's why we will try to improve udl driver. Currently we try to setup
machine at university which will run linux and then windows in virtual
machine. We would like to connect dl to this computer, pass it to
virtual machine and then use usbmon + wireshark and try to figure out
new encodings used by windows driver and add them to udl driver but
probably it will take a lot of time...
Best regards,
--
Krzysztof Opasiak
Samsung R&D Institute Poland
Samsung Electronics
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html