Hi.  I have a USB 2.0 bridge with a pl2501 chipset, which isn't
supported by Linux.  I am willing to do what I can to add
support/test/whatever needs done, but I don't quite understand how to
interpret the logs of usb traffic I have.

This device has vendor id 0x067b (Prolific), and product id 0x2501.  I
already got it added to the usb.ids table.

My first thought was just to add an entry to the products array of the
usbnet driver, initializing the entry the same as for the pl2301 and
pl2302 based devices.  No go.

Next I downloaded an Windows API [1] from Prolific, and wrote a program
to set the mode of the device from Windows.  The device can be set to
behave as any of the following: pl2301, pl2302, pl2501, pl2502.  When
the device is emulating a pl2301 it can still transmit at speeds higher
than USB 1.

I used one of the snoopy programs--I tried more than one, and I don't
remember which I ended up using, sorry--to log the following traffic:

8       out down        n/a     16.519  VENDOR_DEVICE           
URB Header (length: 80)
SequenceNumber: 8
Function: 0017 (VENDOR_DEVICE)
PipeHandle: 00000000

SetupPacket:
0000: 00 fa 01 00 00 00 00 00 
bmRequestType: 00
  DIR: Host-To-Device
  TYPE: Standard
  RECIPIENT: Device
bRequest: fa  
  unknown!


TransferBuffer: 0x00000000 (0) length
8       out up  n/a     16.520  CONTROL_TRANSFER        -       0x00000000
URB Header (length: 80)
SequenceNumber: 8
Function: 0008 (CONTROL_TRANSFER)
PipeHandle: feacf4f0

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


No TransferBuffer


That was the end of the log, and all other traffic happened before I
told the device to change modes.  If the log has extra line breaks, it
happened when I was saving it from Windows.  Sorry.  ;(

With this information I was able to create a libusb based program to
change the device mode [2].  It changes the device mode, but it has a
problem: usb_control_msg() returns -110 (Connection timed out).  Notice
any obvious problems in the following?

#define PL_RQST_SET_MODE 0xfa
usb_control_msg(pldev, USB_ENDPOINT_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 
PL_RQST_SET_MODE, mode, 0, NULL, 0, 10000);

Maybe the device is misbehaving by changing modes before returning a
status (which arguably could make sense)?

I don't really understand the information in the log anyway.  Why are
there two setup packets?  The first one (00 fa 01 00 00 00 00 00) looks
like crap to me.  We can't really have sent that, can we?

I am probably missing something obvious.  Hopefully someone can
straighten me out before I boot into Windows again, *shudder*, so that I
can spend as little time there as possible.  Next on my list is to add
code to usbnet.c to support the device in pl2501 mode.  Any tips on what
I should look for?

[1] http://tech.prolific.com.tw/visitor/fcabdl.asp?fid=24242774
[2] http://khadrin.com/kblog/archives/000056.html

-- 
Stephen J. Smith | [EMAIL PROTECTED] | http://khadrin.com/



-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to