|
From: <ti...@pr...> - 2009-04-27 05:51:49
|
On Mon, Apr 27, 2009 at 01:03:31AM +0200, Francisco Escarpa wrote: > > I', trying to interface with an astronomic camera (still image, long > exposure) based on Micron MT9M001 and cypress cy7c68013, on Opensuse > 11.1(X86-64) > > The manufacturer provided me with the firmware. As soon I plug the device, I > load the firmware with fxload, and then the camera is reset. I got some > error messages about invalid maxpacket. Did you actually buy this as a finished product? If so, this manufacturer is deserving of a lawsuit. > lsusb provided no abnormal data (as far I see): > > Bus 006 Device 014: ID 0547:1002 Anchor Chips, Inc. Python2 WDM Encoder > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 2.00 > bDeviceClass 0 (Defined at Interface level) > bDeviceSubClass 0 > bDeviceProtocol 0 > bMaxPacketSize0 64 > idVendor 0x0547 Anchor Chips, Inc. > idProduct 0x1002 Python2 WDM Encoder > bcdDevice 0.00 > iManufacturer 1 Cypress > iProduct 2 EZ-USB FX2 > iSerial 0 0547/1002 is the VID/PID exposed by an unconfigured FX2. It is a number that belongs to Cypress. Manufacturers are SPECIFICALLY PROHIBITED by the Cypress license to release products that use this number. They are supposed to change it to their own ID numbers. It's not hard to do. > bNumConfigurations 1 > Configuration Descriptor: > bLength 9 > bDescriptorType 2 > wTotalLength 32 > bNumInterfaces 1 > bConfigurationValue 1 > iConfiguration 0 > bmAttributes 0x80 > (Bus Powered) > MaxPower 100mA > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 0 > bNumEndpoints 2 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 0 > bInterfaceProtocol 0 > iInterface 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x01 EP 1 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0040 1x 64 bytes > bInterval 0 That's invalid. A bulk endpoint in a high-speed device MUST have a max packet size of 512. There is no other choice. > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x82 EP 2 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0400 1x 1024 bytes > bInterval 0 This ALSO is invalid. You can't use 64, and you can't use 1024. The ONLY valid choice for a bulk endpoint is 512. The 64-byte endpoint might be made to work, but 1024 certainly cannot. Also, there are no alternate settings in these descriptors. If there are supposed to be alternate settings, then my guess is that your firmware load did not work. -- Tim Roberts, ti...@pr... Providenza & Boeklheide, Inc. |