Results 1 to 3 of 3

Thread: Need help interpreting a short set of USB transfers logged with SnoopyPro

  1. #1
    Join Date
    Feb 2008
    Location
    Pasadena, CA
    Beans
    5
    Distro
    Ubuntu 7.04 Feisty Fawn

    Need help interpreting a short set of USB transfers logged with SnoopyPro

    Hey all,

    I'm trying to write a Linux driver for a USB device that I recently purchased. I have a Windows driver for the product, but the company does not offer a Linux driver, and their documentation does not describe the USB interface to the device. I'm trying to reverse-engineer a Linux driver by snooping the USB connection in Windows using SnoopPro. I've gotten it to the point where I can configure the device, claim the USB port, and initialize the USB interface in Linux. It looks like there are only about three transfers that are sent from the computer to the device before the device is fully initialized. I've reproduced the logs for those transfers below:

    9 out down n/a 18.518 VENDOR_DEVICE -
    URB Header (length: 80)
    SequenceNumber: 9
    Function: 0017 (VENDOR_DEVICE)
    PipeHandle: 00000000

    SetupPacket:
    0000: 00 00 ff ff 00 00 f4 83
    bmRequestType: 00
    DIR: Host-To-Device
    TYPE: Standard
    RECIPIENT: Device
    bRequest: 00
    GET_STATUS


    No TransferBuffer

    9 out up n/a 18.519 CONTROL_TRANSFER - 0xc0000004
    URB Header (length: 80)
    SequenceNumber: 9
    Function: 0008 (CONTROL_TRANSFER)
    PipeHandle: 84aef180

    SetupPacket:
    0000: 40 00 ff ff 00 00 00 00
    bmRequestType: 40
    DIR: Host-To-Device
    TYPE: Vendor
    RECIPIENT: Device
    bRequest: 00


    No TransferBuffer

    10 out down n/a 18.519 VENDOR_DEVICE -
    URB Header (length: 80)
    SequenceNumber: 10
    Function: 0017 (VENDOR_DEVICE)
    PipeHandle: 84aef180

    SetupPacket:
    0000: 00 02 02 00 00 00 00 00
    bmRequestType: 00
    DIR: Host-To-Device
    TYPE: Standard
    RECIPIENT: Device
    bRequest: 02
    reserved for future use!!


    No TransferBuffer

    10 out up n/a 18.520 CONTROL_TRANSFER - 0x00000000
    URB Header (length: 80)
    SequenceNumber: 10
    Function: 0008 (CONTROL_TRANSFER)
    PipeHandle: 84aef180

    SetupPacket:
    0000: 40 02 02 00 00 00 00 00
    bmRequestType: 40
    DIR: Host-To-Device
    TYPE: Vendor
    RECIPIENT: Device
    bRequest: 02


    No TransferBuffer

    11 ??? down n/a 18.520 BULK_OR_INTERRUPT_TRANSFER -
    URB Header (length: 72)
    SequenceNumber: 11
    Function: 0009 (BULK_OR_INTERRUPT_TRANSFER)
    TransferFlags: 0x00000003

    No TransferBuffer

    Basically, I just need to know how to create and send these packets using the libusb API in Ubuntu. Any help with this would be greatly appreciated .

  2. #2
    Join Date
    Mar 2006
    Beans
    199

    Re: Need help interpreting a short set of USB transfers logged with SnoopyPro

    Did you look at the documentation for libusb? http://libusb.sourceforge.net/doc/

    The packets in your trace each have a 'function'. Those match up to the APIs in the libusb guide...

  3. #3
    Join Date
    Feb 2008
    Location
    Pasadena, CA
    Beans
    5
    Distro
    Ubuntu 7.04 Feisty Fawn

    Re: Need help interpreting a short set of USB transfers logged with SnoopyPro

    I looked through the libusb documentation when I started writing the program I'm working on, and it's pretty obvious what values to use for the "requesttype" and "request" parameters in the messages (and what message type to use) because the SnoopyPro log writes those values out explicitly in the log.

    What I was looking for help with are the "index" and "value" parameters. How would I determine what those should be? And what's a "Transfer Flag", and how would I set it?
    Last edited by robotool; February 26th, 2008 at 08:00 PM.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •