qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] Large USB patch


From: nix . wie . weg
Subject: Re: [Qemu-devel] Large USB patch
Date: Fri, 21 Apr 2006 07:59:12 +0200
User-agent: Mail/News 1.5 (X11/20060228)

Hello Lonnie,

First,  thank you for the answer.

Lonnie Mendez wrote:
> address@hidden wrote:
>
>> printer was not even detected under qemu. So I started to work on it.
>>
>   Are you sure such vast changes are necessary?  What was it exactly
> that happened when you attached the printer/scanner?  I'd be
> interested in seeing a packet log without all the changes that seem to
> "break stuff."
Yes I am absolutly sure we need this changes. The usb protocoll is a
very sophisticated work. There is an exactly defined sequence in which
packets are send. (I have made some small documentation about this:
http://217.20.126.200/tino/usb-order-of-events.pdf
http://217.20.126.200/tino/usb-order-of-events.odg)
If you do not keep track of this, you will never be able to get most
devices running. The qemu-specialcase-1.patch is the result of ignoring
these sequence. At the moment I'm not even sure, if we have to implement
the states in which a device is in (I mean default state, adress state
... USB Spec. 1.1 chapter 9).
>
>> changed the handling of special messages like usb_reset or usb_attach
>> 8. I made the necessary changes to usb-hid.c and usb-hub.c
>> 9. I wrote a lot of source comments
>>  
>>
>   I'm in favor of a new api but with only one controller there is
> almost no point in doing this yet.  
Sorry I can't agree on that point with you. We will get more
controller/devices if we can provide an easy api for implementing them.
I would really be interrested  to see an EHCI Controller - maybe I will
even implement it by myself.
> It may make more sense to either be able to specify either grabbing
> all or a few interfaces to proxy to the guest.  Also, libusb is ok for
> a generic handler, but there is no way you'll get someone to jump
> through all the hoops necessary to get usb working under windows with
> libusb-win32 or even mac os x.  On win32 host you have to manually
> create an inf file with the PID/VID and then install that for every
> device you try to use.  It's not a good idea to use the filter driver
> unless the corresponding host driver is unbinded (especially for mass
> storage).  On mac os x you would supposedly creates codeless kernel
> extensions with the PID/VID to unbind the device.  That could be done
> through scripts, but none exist.
>
On that point you have probably misunderstood me. I dont want to
liquidate any native usb-host files. On the contrary, with that patch it
is easier to get more such native interfaces running. We could even
implement on some platforms more than one interface. I for instance
would like it, if I could have libusb and linux native support enabled
at the same time so I could make such things like:
$ qemu -usb controller=uhci -usb device=libusb:002:003,addto=001:001
-usb device=linux:001:002,addto=001:002
and it should now not be so difficult to implement.
>   Also keep in mind the people here probably don't know about the
> all-in-one patch on my webserver.  I've never posted about it here
> except for on the user forums.
>> this patch breaks some things:
>>
>   I'll try to look at the patch this weekend.
Thanks
>> known problems:
> The reset function in libusb causes the device to have a new address
> when it reconnects therefore forcing you to rescan and open the device
> again.  Perhaps this is the problem.
Yes I know this and I implemented it. But it does still not work. We get
a STALL on the devices when the code is enabled.


With kind regards
Tino H. Seifert




reply via email to

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