<br><br><div class="gmail_quote">On Mon, Aug 31, 2009 at 3:24 PM, Neil Sutton <span dir="ltr">&lt;<a href="mailto:swift_gti@msn.com">swift_gti@msn.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi All,<br><br>I have been bashing my head against the keyboard all day trying to make my little USB relay work under Linux (Ubuntu Jaunty if it matters)<br>I don&#39;t have a great deal of experience with linux but after some reading I discovered that the best way to talk to the relay (which detects as a HID device) was to use the libhid library.<br>

<br></blockquote><div><br>In your reading, did you run across the USBSnoop program:<br><a href="http://www.pcausa.com/Utilities/UsbSnoop/">http://www.pcausa.com/Utilities/UsbSnoop/</a><br><br>This was tremendously helpful for me when I was trying to write my driver.  Once you start monitoring, look for the BULK_OR_INTERRUPT_TRANSFER to your output endpoint (as you&#39;ve reported by lsusb, this is endpoint 1).  Here&#39;s a sample, and some info on dissecting it:<br>
<br>1 [43094 ms]  &gt;&gt;&gt;  URB 11 going down  &gt;&gt;&gt; <br>2 -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:<br>3   PipeHandle           = e79e99c8 [endpoint 0x00000001]<br>4  TransferFlags        = 00000002 (USBD_TRANSFER_DIRECTION_OUT, USBD_SHORT_TRANSFER_OK)<br>
5   TransferBufferLength = 00000040<br>6   TransferBuffer       = e51f12da<br>7   TransferBufferMDL    = 00000000<br>8     00000000: 03 08 81 00 00 00 00 00 00 00 00 00 00 00 00 00<br>9    00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>
10    00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>11    00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br>12  UrbLink              = 00000000<br>13 [43096 ms] UsbSnoop - MyInternalIOCTLCompletion(e2d37ddc) : fido=ff503830, Irp=ff4719b0, Context=e7<br>
<br><br>In my case, on line 3, the PipeHandle shows that the destination is endpoint 0x01, the transfer buffer length is 0x40 bytes (64 bytes), and the TransferBufferMDL raw data shows the information sent.  It turns out that I had to send a control byte, length, and address as the first, second and third byte before sending data (as described in the device datasheet).<br>
<br>Perhaps by snooping and replaying the traffic you can discover the operation of the device?  Or perhaps find the manufacturers datasheet for the part and see how the bus is used?<br><br>Wingnut<br></div></div>