Here are some fragments of my (1.try) code:

I used some professional USB sniffer (CATC USBChief) to get an idea what
the computer says to the camera and vice versa.
Then I replayed the packets (at least I hope so) to 
achieve the same behaviour.
As I mentioned the TOC works. 

--------- snip -----------
#define USB_REQ_RESERVED 0x04
static unsigned char TOC[10*512];               // some buffers
static unsigned char ThumbNail[5*0x1000];       // Thumbnail buffer

static int sx330z_open(struct inode *inode,struct file *file)
{
-snip
// some ususal checkings 
-snip
// Don't know what this is for ? some initialization I think
 pipe=usb_rcvctrlpipe(sx330z->dev,0);
 res=usb_control_msg(sx330z->dev,
                pipe,
                USB_REQ_RESERVED,               // traveler hack : 0x04???  
                USB_DIR_IN | USB_DIR_VENDOR,    // 0xc0 
                0x0001,
                0x0000,
                buf,16,HZ);
 printk("sx330z : 0x0001 (%d) : (%02x %02x.. 
%02x)\n",res,buf[0],buf[1],buf[8]);

// This one works fine 
 pipe=usb_rcvctrlpipe(sx330z->dev,0);
 res=usb_control_msg(sx330z->dev,
                pipe,
                USB_REQ_RESERVED,               // traveler hack ???
                USB_DIR_IN | USB_DIR_VENDOR,    //  
                0x0002,                         // get TOC size ??
                0xd000,
                buf,16,HZ);
 TOCSize=(((buf[9]<<8)+buf[8]));
 printk("sx330z : Get TOCsize (%d)  ",res);
 printk("sx330z : TOCSize %d \n",TOCSize);


// now read the TOC
 res=usb_control_msg(sx330z->dev,
                pipe,
                USB_REQ_RESERVED,               // traveler hack ??
                USB_DIR_OUT | USB_DIR_VENDOR,
                0x0003,                         // read TOC
                0xd000,
                &trq,32,HZ);
 printk("sx330z : ReqTOCPage %d (%d) : (%02x)\n",TOCPage,res,buf[0]);
res=usb_bulk_msg(sx330z->dev,usb_rcvbulkpipe(sx330z->dev,2),buf,512,&length,2*HZ);
 // Get 16Byte Ack 
res=usb_bulk_msg(sx330z->dev,usb_rcvbulkpipe(sx330z->dev,2),buf,16,&length,2*HZ);

// Next : request ThumbNail
 res=usb_control_msg(sx330z->dev,
                usb_sndctrlpipe(sx330z->dev,0),
                USB_REQ_RESERVED,               // traveler hack ?????
                USB_DIR_OUT | USB_DIR_VENDOR,
                0x0004,
                0xd000,
                &trq,32,2*HZ);

        // res has positive value here (shouldn't be?)
 printk("sx330z : 0x0004  (%d) : \n",res);

//Here my error appears 
res=usb_bulk_msg(sx330z->dev,usb_rcvbulkpipe(sx330z->dev,2),ThumbNail,4096,&length,2*HZ);
 printk(KERN_INFO "sx330z : read TN (%d,%d bytes) \n", res,length);

// get 16 Byte Ack 
res=usb_bulk_msg(sx330z->dev,usb_rcvbulkpipe(sx330z->dev,2),&buf,16,&length,2*HZ);
 printk(KERN_INFO "sx330z : read ack? (%d,%d bytes)\n",res,length);

}
/* (kernel log file)
Apr  1 23:30:05 doku kernel: sx330z : read TOC (0,512 bytes) : 00 ... 30
Apr  1 23:30:05 doku kernel: sx330z : read ack? (0): 16 bytes
Apr  1 23:30:05 doku kernel: sx330z : 0x0004 (32) 
Apr  1 23:30:05 doku kernel: uhci.c: d400: host system error, PCI problems?
Apr  1 23:30:09 doku kernel: usb_control/bulk_msg: timeout
Apr  1 23:30:09 doku kernel: sx330z : read TN (-110,0 bytes) 
*/

------ snip ----------

These calls are made during the "open" fop on character device (180,65) 
!only for testing!  

Are the HZ parameters OK ? does it mean 1sec max blocking ?

the comment before usb_control_msg says, that it will return 0 or a negative 
number, but I get positve numbers. Is this unusual?


How does the libusb work? Are there any howtos? 
My understanding problem is : 
I modprobe the UHCI module plug my camera in the USB 
(Double A Cable <- forbidden according to the USB Spec)
and the lowlevel driver searches for an appropriate driver, that
claims the device (interface), but how does the libusb work with 
this ? Does it have some "universal" kernel module that claims any
device? 


Thank you for your effort.

Dominik

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to