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