<br><br><div class="gmail_quote">On Wed, Sep 22, 2010 at 2:26 AM, Damjan Jovanovic <span dir="ltr">&lt;<a href="mailto:damjan.jov@gmail.com" target="_blank">damjan.jov@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">


<div><div></div><div>On Wed, Sep 22, 2010 at 1:52 AM, Tom Spear &lt;<a href="mailto:speeddymon@gmail.com" target="_blank">speeddymon@gmail.com</a>&gt; wrote:<br>
&gt; On Tue, Sep 21, 2010 at 1:41 PM, Damjan Jovanovic &lt;<a href="mailto:damjan.jov@gmail.com" target="_blank">damjan.jov@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; On Tue, Sep 21, 2010 at 8:07 PM, Tom Spear &lt;<a href="mailto:speeddymon@gmail.com" target="_blank">speeddymon@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; On Tue, Sep 21, 2010 at 11:04 AM, Damjan Jovanovic<br>
&gt;&gt; &gt; &lt;<a href="mailto:damjan.jov@gmail.com" target="_blank">damjan.jov@gmail.com</a>&gt;<br>
&gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Tue, Sep 21, 2010 at 5:04 PM, Tom Spear &lt;<a href="mailto:speeddymon@gmail.com" target="_blank">speeddymon@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt; Attached is the lsusb -v output, trimmed to only include the<br>
&gt;&gt; &gt;&gt; &gt; pedometer&#39;s<br>
&gt;&gt; &gt;&gt; &gt; info. I have many USB devices, so I didn&#39;t want to leave you to sort<br>
&gt;&gt; &gt;&gt; &gt; through<br>
&gt;&gt; &gt;&gt; &gt; a bunch of useless info.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; I don&#39;t have the webcam with me at the moment, but I will see if I<br>
&gt;&gt; &gt;&gt; &gt; can<br>
&gt;&gt; &gt;&gt; &gt; find<br>
&gt;&gt; &gt;&gt; &gt; it when I am at home soon.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Thanks<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Tom<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; On Tue, Sep 21, 2010 at 9:32 AM, Damjan Jovanovic<br>
&gt;&gt; &gt;&gt; &gt; &lt;<a href="mailto:damjan.jov@gmail.com" target="_blank">damjan.jov@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; Please send the output of &quot;lsusb -v&quot; first so I can see if it&#39;s<br>
&gt;&gt; &gt;&gt; &gt;&gt; useful.<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; Thank you for the offer<br>
&gt;&gt; &gt;&gt; &gt;&gt; Damjan<br>
&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; On Tue, Sep 21, 2010 at 3:58 PM, Tom Spear &lt;<a href="mailto:speeddymon@gmail.com" target="_blank">speeddymon@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; Now that I think about it, I have a webcam which the last<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; supported<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; windows<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; version was XP. I&#39;m not using it for anything since I have another<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; one<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; which<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; is supported in 7 and linux, but I don&#39;t know if it&#39;s picked up in<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; linux<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; either. I could send it your way too tho.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; Thanks<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; Tom<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; On Tue, Sep 21, 2010 at 8:54 AM, Tom Spear &lt;<a href="mailto:speeddymon@gmail.com" target="_blank">speeddymon@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; I have a USB pedometer that uploads the data to the internet. I<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; could<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; get<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; another one and the driver software for you to play with. You<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; have<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; to<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; be a<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; registered member for a monthly fee to get one otherwise, but my<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; job<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; sponsors anyone that wants to get/stay in shape that works for<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; them,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; so<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; getting an extra pedometer is fine by me. I have been hoping for<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; an<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; opportunity to mention that it doesn&#39;t work, and this seems like<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; as<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; good as<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; any. :-)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Thanks<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; Tom<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; On Tue, Sep 21, 2010 at 5:03 AM, Damjan Jovanovic<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; &lt;<a href="mailto:damjan.jov@gmail.com" target="_blank">damjan.jov@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; On Wed, Sep 15, 2010 at 1:39 AM, Eric Durbin<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &lt;<a href="mailto:eadurbin@gmail.com" target="_blank">eadurbin@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; On Tue, Sep 14, 2010 at 10:48 AM, Damjan Jovanovic<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; &lt;<a href="mailto:damjan.jov@gmail.com" target="_blank">damjan.jov@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; When last I heard from Alexander Morozov (October 2009), he<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; wasn&#39;t<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; working on those patches much, and had no interest in sending<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; them<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; to<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; wine-patches.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; I did some work on USB since then, and sent some patches<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; starting<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; from<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; around March 2010 (too many attempts to list, search for<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; them).<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Most<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; were rejected.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; The USB story goes as follows:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; My libusb patch was rejected IIRC because the libusb<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; situation<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; was<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; unclear. There&#39;s the old libusb-0.1 and the new more powerful<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; libusb-1.0. IIRC each *nix hacked up its own specific<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; variation<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; of<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; libusb that had to be detected specifically, and some *nixes<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; didn&#39;t<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; support the libusb-1.0 interface yet (libusb-1.0 itself only<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; supports<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Linux and MacOS when last I checked, and they were doing a<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Windows<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; port).<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; The ntoskrnl that Wine currently emulates is total bogus: one<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; process<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; per driver, drivers all in separate processes from each<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; other.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; On<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Windows there&#39;s a single address space for all drivers and<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; they<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; can<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; communicate amongst themselves. I don&#39;t think inter-driver<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; communication is that crucial initially, but it will be<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; eventually<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; (eg. last I heard, the iPod driver stacks on top of<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; USBSTOR.SYS,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; and<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; multi-function USB devices can use a different driver for<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; each<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; interface - these may communicate among themselves with<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; private<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; ioctl<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; requests). The big problem with the multi process situation<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; is<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; hardware sharing: how do you set it up so each driver<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; accesses<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; its<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; own<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; and only its own hardware?<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Drivers either start on system startup (Wine starts those<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; with<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; first process that starts), or get loaded on-demand as the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; hardware<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; is<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; plugged in. Most drivers should install themselves to be<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; loaded<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; on-demand. Who loads those and how?<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Windows uses USBHUB.SYS to do device I/O and load drivers on<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; demand.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Alexandre didn&#39;t want that dll because it exports nothing<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; (all<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; its<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; features are accessible via internal ioctls), and suggested<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; adding<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; features to USBD.SYS instead, which we already have and which<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; has<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; exports. Now USBD.SYS is linked to by most (but not all) USB<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; drivers<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; so (most of the time) it automatically gets loaded into each<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; one<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; great right? - but it has no idea which driver it got loaded<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; with,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; nor<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; a straightforward way to determine which device(s!) that<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; driver<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; wants<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; to drive. Also, since most drivers only load on-demand, the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; driver<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; will never load, and thus this won&#39;t work unless we load<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; those<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; drivers<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; on startup instead. The other approach, which I tried, was to<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; get<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Wine&#39;s mountmgr.sys to detect USB devices using HAL, then<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; pass<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; them<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; to<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; a loaded-on-startup instance of USBHUB.SYS using a<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Wine-private<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; ioctl,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; which would detect the driver for the device and launch a new<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; instance<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; of itself that would make a device object and load the driver<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; to<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; attach to it. This was all a bit a hack (USBHUB.SYS uses<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; environment<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; variables to tell the child which device and driver to run)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; and<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Alexandre also didn&#39;t the the Wine-private ioctls. Alexander<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Morozov&#39;s<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; patch did things the Windows way: all drivers in one ntoskrnl<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; process<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; - this won&#39;t work properly in Wine for years, if ever, since<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; ntoskrnl<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; is so incomplete and one bad driver will crash them all.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Another<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; possibility could be to keep drivers in separate processes,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; but<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; allow<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; inter-process communication, but I see serializing IRPs<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; between<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; processes as being complex and very slow.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Driver installation is also quite a mission. Windows detects<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; that<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; hardware doesn&#39;t have a driver installed, and then generates<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; device ID and compatible IDs and searches .INF files for one<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; that<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; can<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; support it. Our setupapi needs to be substantially improved<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; to<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; be<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; able<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; to do the same, and some newdev.dll and manual INF parsing<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; work<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; to<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; install the driver may also be necessary, and I can already<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; think<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; of<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; cases where even class installers will be necessary too :-(.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Wine only sends DeviceIoControl to drivers. For anything<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; non-trivial,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; other file-related user-space functions (at least ReadFile,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; WriteFile)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; need to go to the driver too. The infrastructure for this<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; does<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; not<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; even exist yet, and would probably affects wineserver as<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; well.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; Regression tests for ntosnkrl.exe and kernel drivers don&#39;t<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; exist,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; and<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; are difficult to come up with, since we&#39;d have to compile and<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; load<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; drivers on Windows and run tests that don&#39;t crash Windows<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; :-).<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; So the architecture for USB support is tricky to say the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; least.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; But<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; I&#39;d still like to resume work on my USB patches some time<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; soon,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; would<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;&gt; you like to help?<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; I&#39;d be willing to help if you want some assistance. I don&#39;t<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; know<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; much<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; about<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; &gt; the subject yet, but I&#39;m readingĀ  programming the wdm atm.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; Firstly I&#39;d like to find a cheap simple USB device that we can<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; actually get working quickly. Earlier I was experimenting with<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; my<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; Blackberry driver, but that&#39;s not going far quickly, since it&#39;s<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; a<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; multi-protocol device (modem, mass storage, and proprietary<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; protocols,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; etc.). I&#39;ve got a USB scanner that&#39;s unsupported by SANE, but<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; that<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; needs ReadFile/WriteFile which is a lot of work by itself. Same<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; with<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; USB flash sticks. I can get hold of an iPod but that&#39;s probably<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; most complex, needing to stack on top of USBSTOR.SYS IIRC.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; Ironically<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; drivers for the easy hardware (USB mice) are unnecessary anyway,<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; since<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; the Linux drivers are good enough, and the Windows drivers<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; probably<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; need to be driven from user-space by bits Wine doesn&#39;t have.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; Maybe<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; I<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; should give up and just get something partially working, add the<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; rest<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; later gradually. Any ideas?<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; Then it&#39;s largely a matter of design. I think Alexandre&#39;s idea<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; (process per driver, host all USB code in USBD.SYS) is good<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; enough<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; initially.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; Essentially the first steps would be:<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; 1. libusb integration<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; 2. driver loading hacks<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; 3. driver -&gt; devices lookup<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; 4. usb bus enumeration for devices<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; 5. create pdo and fdo for each device<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; 6. AddDevice to driver<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; 7. perform I/O for IRPs coming down from the driver using libusb<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; I/O<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; functions<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; That should get a very basic driver (that only uses the control<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; pipe)<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; working. I&#39;ll try to get some of this done later this<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; week/weekend.<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt; Damjan<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; It&#39;s a human interface device, 1 control pipe and 1 interrupt pipe.<br>
&gt;&gt; &gt;&gt; Looks pretty simple. You could also use &quot;winedump -j import&quot; on the<br>
&gt;&gt; &gt;&gt; driver to see if it has any dependencies.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I&#39;ll get working on the basics of USB first. If the device doesn&#39;t<br>
&gt;&gt; &gt;&gt; work on your tests after that, SSH access might be quicker and easier<br>
&gt;&gt; &gt;&gt; than intercontinental shipping.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Thank you<br>
&gt;&gt; &gt;&gt; Damjan<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; By driver, do you mean the wine-loaded driver, or whatever kernel module<br>
&gt;&gt; &gt; loads in linux?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Thanks<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Tom<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;&gt; The .sys file(s) used on Windows.<br>
&gt;&gt;<br>
&gt;&gt; Damjan<br>
&gt;<br>
&gt;<br>
&gt; Looking at device manager in windows 7, I see the device, but when I try to<br>
&gt; look at driver details, it says no driver files are required or have been<br>
&gt; loaded for this device. It is actively used, however. I&#39;m thinking the<br>
&gt; software to upload the data from the device interfaces with the device<br>
&gt; directly, based on that. I also checked a clean wine drive c with just the<br>
&gt; software for this pedometer installed, and didn&#39;t see anything that appeared<br>
&gt; to have been added, driver-wise, by the installer. However, the software<br>
&gt; cannot read the serial number of the device under wine, whereas it can under<br>
&gt; Windows.<br>
&gt;<br>
&gt; Thanks<br>
&gt;<br>
&gt; Tom<br>
&gt;<br>
<br>
</div></div>It could be using the generic human interface device driver provided<br>
by Microsoft, the older user-space USB IOCTLs, or the Windows XP and<br>
later UMDF (user mode driver framework).<br>
<br>
A +file trace on Wine would tell us what it&#39;s doing.<br>
<br>
Thanks<br>
<font color="#888888">Damjan<br>
</font></blockquote></div><br>I will try that when I get off of work. I&#39;m definitely curious to see 
how it is trying to read the serial number and other data from the 
pedometer itself. BTW, I have SSH setup already, as I remote in from 
work to monitor some things, but I prefer to use public keys, so if you 
don&#39;t already have one generated, you&#39;ll need one when it is time for 
you to login and tinker. ;-)<br>
<br>Results in the morning.<br><br clear="all">Thanks<br><br>Tom<br>