Alan Stern wrote:
> On Sun, 11 Mar 2007, Phil Dibowitz wrote:
> 
>> So I went back and "fixed" the remote by updating on my mac and noticed the
>> software "initializes" it before it "uploads" (generic terms in the GUI),
>> and looking back at the log from the windows box, it sends a few
>> CONTROL_TRANSFERs before it starts up the INTERRUPT_TRANSFERs. So there's
>> one thing I think I'm missing - I don't know what those CONTROL TRANSFERS 
>> are.
> 
> They could be the standard Windows enumeration sequence.

With a bit of help, I've found the device has a handful of standard "Vendor"
control commands. But when I try to send them with usb_control_msg(), I'm
getting back 'Broken pipe'.

The only thing I can think of is that I'm not assembling my requestType
right, but it seems right to me. I'm doing this (keep in mind I'm using
libusb, not in-kernel USB... but for usb_control_msg() they should be the
same except for request and requestType are switched in order of parameters):

        int retval;
        int len = 100;
        int timeout = 1000;
        char buf[len];
        retval = usb_control_msg(udev,
                USB_ENDPOINT_IN + USB_TYPE_VENDOR + USB_RECIP_INTERFACE,
                COMMAND_GET_VERSION, 0, DEVICE_INT, buf, len, timeout);

I've also tried that with USB_RECIP_DEVICE and USB_RECIP_ENDPOINT.
COMMAND_GET_VERSION is a #define for 0x10. DEVICE_INT is a #define for 0.

This fails and usb_strerror() is "Broken pipe"... however, I can do
"standard" commands like:

        int retval;
        int len;
        len = 2;
        char buf[len];
        retval = usb_control_msg(udev,
                GET_STATUS_TYPE, GET_STATUS,0,0,buf,len,1000);

GET_STATUS_TYPE is 0x80 (or USB_ENDPOINT_IN + USB_TYPE_STANDARD +
USB_RECIP_DEVICE) and GET_STATUS is 0x00, as found in several drivers in the
USB kernel tree.

Am I doing something obviously wrong here? If not, I'm probably
misunderstanding how the device works, but before I spin my wheels too long,
I thought I'd see if I was making some obvious mistake.

Thanks!
-- 
Phil Dibowitz                             [EMAIL PROTECTED]
Open Source software and tech docs        Insanity Palace of Metallica
http://www.phildev.net/                   http://www.ipom.com/

"Never write it in C if you can do it in 'awk';
 Never do it in 'awk' if 'sed' can handle it;
 Never use 'sed' when 'tr' can do the job;
 Never invoke 'tr' when 'cat' is sufficient;
 Avoid using 'cat' whenever possible" -- Taylor's Laws of Programming


Attachment: signature.asc
Description: OpenPGP digital signature

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to