On Wednesday 25 November 2009 05:43:37 Ramesh Rajagopal wrote:
> > On Wednesday 11 November 2009 12:43:38 Ramesh Rajagopal wrote:
> > >
> > > Thank you for the reply. The webcam  is linux based and I am using the
> > > UVC gadget driver of linux kernel 2.6.10.
> > > In this kernel I don't see any example doing UVC bulk transfer. It is
> > > working perfectly with ISOC.
> > > Can you please let me know, if there is any example code that does UVC
> > > bulk transfer ? I couldn't find it any.
> >
> > The UVC gadget driver I wrote uses isochronous transfers. It should be
> > possible to use bulk transfers by modifying the driver, but there's no
> > code sample that I'm aware of.
> 
> Does this mean, I have to change the musb gadget driver code? I changed my
> driver which registers with musb. I didn't chane anything on the musb gadget
> driver.

You shouldn't need to change the musb gadget driver code (unless there's a 
bulk-specific bug in the musb gadget driver of course). You will need to 
change the UVC gadget driver code though.

> > > The uvc specification is not clear enough to distinguish ISOC and BULK
> > > transfer atleast from my understanding.
> > >
> > > While doing ISOC transfer, we have an alternate Interface Setting, when
> > > we get a SET_INTERFACE we start transferring the UVC header first alone
> > > to start the transfer. There after each IN token from host will carry
> > > the frames if any, otherwise header alone goes.
> > >
> > > In case of BULK, with alternate settings, the host machine hangs.
> > > SET_INTERFACE (alternateSetting set 1), Why is it like that?
> >
> > According to the UVC specification, streaming interfaces with bulk
> > endpoints don't use alternate settings.
> >
> > This is actually a problem, as the UVC specification doesn't provide any
> > way for bulk devices to detect when the host starts and stops streaming.
> 
> Do you aware when do I start sending packets to the host? In case of ISOC,
> we start sending packets when get SET_INTERFACE (enabling the alternate
> setting) request. Please let me know.

I don't know, and that's the real problem. I think you should start sending 
data when you receive the first bulk packet. I'm not sure if there's a way to 
be notified of that though. You could then stop the stream when no bulk packet 
is received for some time.

> > > So I removed alternate settings and till enumeration it is proper. Then
> > > After I get VS_PROBE_COMMIT from the host, I start transferring exactly
> > > same like ISOC, but I don't see any video on the host and no more
> > > proceedings from here. The data is not going from the FIFO, hence I am
> > > not getting any more TX interrupt from my device.
> > >
> > > I am attaching my devices descriptor as well as host side logs. Please
> > > find the attachment. Please let me know, is there any link talk about
> > > BULK transfer or example.
> >
> > The descriptors look correct at first glance. The log shows that the
> > driver doesn't receive any bulk packet (assuming the trace parameter has
> > been set to 255). This seems to indicate a low-level problem, probably on
> > the device side.
> > My guess is that the device doesn't sent bulk packets. That would be easy
> > to verify if you have access to a USB analyzer. If the assumption is
> > correct, the problem is on the device side.
> 
> I see the packets are on the wire. USB Analyzer  shows me the data and even
> I verified the header data, it looks correct, Now I am not getting back the
> ACK from the host. Thanks for your Reply.

You're welcome.

-- 
Regards,

Laurent Pinchart
_______________________________________________
Linux-uvc-devel mailing list
Linux-uvc-devel@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/linux-uvc-devel

Reply via email to