<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>&gt;&gt;The process of capabilities discovery includes turning on isoc and the saa711x, and this results in a bunch of non-valid data packets</DIV></DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&nbsp;</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">David,&nbsp; you have load SAA7115 instead of the older SAA711X module right?</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&nbsp;</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt;&gt;I suspect the problem has shifted to where the chip is being asked to send more then the endpoint's actual packet size, or something in that area. Red herring?<SPAN class=Apple-converted-space>&nbsp;</SPAN></DIV>
<P><SPAN class=Apple-converted-space></SPAN>&nbsp;</P>
<P><SPAN class=Apple-converted-space>The packet size is this...&nbsp; #define USBVISION_MAX_ISOC_PACKET_SIZE 959 // NT1003 Specs Document says 1023 .</SPAN></P>
<P><SPAN class=Apple-converted-space>It's true, the NT100x spec docs say 1023 is the max, but the snoopy logfiles did say only 959 with any device which we had a snoppy log file from.&nbsp;&nbsp; Try changing this to the 895 and see.</SPAN></P>
<P><SPAN class=Apple-converted-space>I don't think it's going to help.&nbsp;&nbsp; But we should try it and see.</SPAN></P>
<P><SPAN class=Apple-converted-space></SPAN>&nbsp;</P>
<P><SPAN class=Apple-converted-space></SPAN>&nbsp;</P><SPAN class=Apple-converted-space>
<DIV style="MARGIN: 0px">&gt;&gt;As you did core_debug=36 (1&lt;&lt;2 (DBG_ISOC) + 1&lt;&lt;5 (DBG_FUNC)) you should see it. If not, this is a bug :)</DIV>
<DIV style="MARGIN: 0px">&gt;&gt;Do you have some windows usbsnoop dumps ? If so, we could analyze them to see which alternate is selected and which packet size is selected.</DIV>
<DIV style="MARGIN: 0px">&nbsp;</DIV>
<DIV style="MARGIN: 0px">The other devices have the similar packet size.&nbsp; Here is the URL.&nbsp;&nbsp; Looking through memory lane right now.</DIV>
<DIV style="MARGIN: 0px">&nbsp;</DIV>
<DIV style="MARGIN: 0px"><A href="http://sourceforge.net/forum/message.php?msg_id=3523937">http://sourceforge.net/forum/message.php?msg_id=3523937</A></DIV>
<DIV style="MARGIN: 0px">&nbsp;</DIV>
<DIV style="MARGIN: 0px">Here is an example of some digging into the usb code.</DIV>
<DIV style="MARGIN: 0px">&nbsp;</DIV>
<DIV style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Updated to kernel 2.6.14. Still get the -90 error. This is with usbvision 0.9.3 dated November.&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Looking in the code for urb.c it looks like all the ways of getting that error have to do with the size of the transfer_buffer. The size being passed is 30688 bytes (32*959). I notice the max size is 0x7FF if (dev-&gt;speed == &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; USB_SPEED_HIGH). This hardware only has USB1.1 so I am not sure if that has anything to do with it. </DIV>
<DIV style="MARGIN: 0px">&nbsp;</DIV>
<DIV style="MARGIN: 0px">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; The max limit on ISOC packet size being enforced by urb.c appears to come from hub.c doing some query against the hub. In my case the "hub" is the one on the VIA motherboard. It was working fine last year with a 2.4 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; kernel.&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; So as an experiment I just commented out the check in the usb_submit_urb routine in urb.c. It worked! No more -90 errors and I can grab frames with videodog. But I have no idea about the long term viability of this &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; quick fix. I don't have a set of 2.4 sources to compare with. <!-- google_ad_section_end --><BR><!-- google_ad_section_end --><BR><BR>The device did work in kernel 2.4.x and seemed to break in 2.6.x.&nbsp;&nbsp;&nbsp; </DIV></SPAN>
<P><SPAN class=Apple-converted-space></SPAN>&nbsp;</P>
<P><SPAN class=Apple-converted-space></SPAN>&nbsp;</P>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">Dwaine<BR><BR></DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">----- Original Message ----<BR>From: David Warman &lt;lanwolf@synapse.com&gt;<BR>To: video4linux-list@redhat.com<BR>Cc: Dwaine Garden &lt;dwainegarden@rogers.com&gt;; Thierry MERLE &lt;thierry.merle@free.fr&gt;<BR>Sent: Thursday, April 26, 2007 2:40:24 PM<BR>Subject: Re: Belkin USBView II<BR><BR>
<DIV>Hi Thierry,</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>No, that bit of code is correct, so my problem is not there. I think it is elsewhere entirely.
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>The process of capabilities discovery includes turning on isoc and the saa711x, and this results in a bunch of non-valid data packets. I turned on camorama's debug facility also, and it is complaining about VIDEOCGCAPS failing. IIRC, that is a v4l1 ioctls request, and the current system I am building is v4l2. I thought there was a compatibility layer, but it seems not to be working for camorama. Or for vlc, which I just downloaded and looks for v4l-vdev="/dev/video0", and complains "v4l demuxerls -al</DIV>
<DIV>&nbsp;error: cannot get capabilities (inval;id argument)".</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>I am looking for another imager program I can trust. gqcam connects but displays all 0's for camera details, as if it also failed the caps collection but decided to run with the empty struct instead of failing out. xawtv doesn't run. I am about to test with ffmpeg + ffserver; tho that is a more complex setup I trust ffmpeg more. I have the feeling that once I get connected properly, the system will work.</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>As always , thanks for your continuing help on this project. It looks like when I am done I may have a patch or two to submit.</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>Regards,</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV>David Warman</DIV>
<DIV><BR class=khtml-block-placeholder></DIV>
<DIV><BR>
<DIV>
<DIV>On Apr 25, 2007, at 9:56 PM, Thierry MERLE wrote:</DIV><BR class=Apple-interchange-newline>
<BLOCKQUOTE type="cite">
<DIV style="MARGIN: 0px">Hello David,</DIV>
<DIV style="MIN-HEIGHT: 14px; MARGIN: 0px"><BR></DIV>
<DIV style="MARGIN: 0px">David Warman a écrit :</DIV>
<BLOCKQUOTE type="cite">
<DIV style="MARGIN: 0px">Implemented the changes mentioned, made a little bit of progress.</DIV>
<DIV style="MIN-HEIGHT: 14px; MARGIN: 0px"><BR></DIV>
<DIV style="MARGIN: 0px">Now, running camorama with the modprobe usbvision debug flags set (video_debug=4 core_debug=36), I get a stream of full size packets with bad status (len=895, status=FFFFFFB5 - EOVERFLOW?), then a few null packets and then about 42 empty packets before power off completes and camorama abandons the attempt to start up. More than the dmesg buffer can hold, so I do not have the start-up end of the trace.</DIV>
<DIV style="MIN-HEIGHT: 14px; MARGIN: 0px"><BR></DIV>
<DIV style="MARGIN: 0px">Earlier, in the older v4l1 code,<SPAN class=Apple-converted-space>&nbsp; </SPAN>I noticed that the value from the USBVISION_ALTER_REG register was used to compute the packet size for the isoch urbs, but that the computation resulted in a packet size 64 bytes too large (regValue needed -- to get the matching value) when checked against the max packet size reported in the endpoint alternate selected. That particular line of code is no longer in usbvision_init_isoc, and I am hunting down the allocation code now. I suspect the problem has shifted to where the chip is being asked to send more then the endpoint's actual packet size, or something in that area. Red herring?<SPAN class=Apple-converted-space>&nbsp;</SPAN></DIV>
<DIV style="MARGIN: 0px">Any comments and/or pointers would be welcomed ....</DIV>
<DIV style="MIN-HEIGHT: 14px; MARGIN: 0px"><BR></DIV></BLOCKQUOTE>
<DIV style="MARGIN: 0px">The packet size is taken from the USB descriptor now.</DIV>
<DIV style="MARGIN: 0px">In usbvision-core.c:2455 (usbvision_set_alternate):</DIV>
<DIV style="MARGIN: 0px"><SPAN class=Apple-converted-space>&nbsp;&nbsp; </SPAN>if (dev-&gt;ifaceAlt != prev_alt) {</DIV>
<DIV style="MARGIN: 0px"><SPAN class=Apple-converted-space>&nbsp;&nbsp; &nbsp; &nbsp; </SPAN>dev-&gt;isocPacketSize = dev-&gt;alt_max_pkt_size[dev-&gt;ifaceAlt];</DIV>
<DIV style="MARGIN: 0px"><SPAN class=Apple-converted-space>&nbsp;&nbsp; &nbsp; &nbsp; </SPAN>PDEBUG(DBG_FUNC,"setting alternate %d with wMaxPacketSize=%u", dev-&gt;ifaceAlt,dev-&gt;isocPacketSize);</DIV>
<DIV style="MIN-HEIGHT: 14px; MARGIN: 0px"><BR></DIV>
<DIV style="MARGIN: 0px">As you did core_debug=36 (1&lt;&lt;2 (DBG_ISOC) + 1&lt;&lt;5 (DBG_FUNC)) you should see it. If not, this is a bug :)</DIV>
<DIV style="MARGIN: 0px">Do you have some windows usbsnoop dumps ? If so, we could analyze them to see which alternate is selected and which packet size is selected.</DIV>
<BLOCKQUOTE type="cite">
<DIV style="MIN-HEIGHT: 14px; MARGIN: 0px"><BR></DIV>
<DIV style="MARGIN: 0px">Regards,</DIV>
<DIV style="MIN-HEIGHT: 14px; MARGIN: 0px"><BR></DIV>
<DIV style="MARGIN: 0px">Davdid Warman</DIV>
<DIV style="MIN-HEIGHT: 14px; MARGIN: 0px"><BR></DIV>
<DIV style="MIN-HEIGHT: 14px; MARGIN: 0px"><BR></DIV></BLOCKQUOTE>
<DIV style="MIN-HEIGHT: 14px; MARGIN: 0px"><BR></DIV>
<DIV style="MARGIN: 0px">Cheers,</DIV>
<DIV style="MARGIN: 0px">Thierry</DIV></BLOCKQUOTE></DIV><BR>
<DIV><SPAN class=Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Helvetica; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; border-spacing: 0px 0px; orphans: 2; widows: 2">
<DIV>David Warman</DIV>
<DIV><A href="mailto:lanwolf@synapse.com" target=_blank rel=nofollow>lanwolf@synapse.com</A></DIV>
<DIV><BR class=khtml-block-placeholder></DIV><BR class=Apple-interchange-newline></SPAN></DIV><BR></DIV></DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif"><BR></DIV></div></body></html>