Alan Stern wrote:
> On Wed, 13 Dec 2006, Garrett D'Amore wrote:
>
>
>> I've done some more debugging. I've not had success in getting a debug
>> kernel built that will boot my system (Ubuntu) yet, and I don't know why
>> _that_ is a problem, but it takes ~4 hours per attempt (compiling Linux
>> is _slow_ on this Via 1GHz system), so I took a different tack.
>>
>
> You know, you don't need to recompile an entire kernel from scratch every
> time you make one little change. Don't do "make clean" in between; the
> kernel build system will then recompile only the files that need it.
> Building a kernel the first time might take a long while, but making small
> changes should take only a minute or two.
>
Yeah, except that I think I have to reconfigure with a different
"version number" in order to make the kernel work with Ubuntu.
(Apparently the root disk image has a specific kernel version encoded in
it. :-( Coming from NetBSD and Solaris, the Linux kernel module
versioning scheme is a real PITA.
I'll have another go at it in a little bit. (Too bad I can't just load
a module with the debug facility in it. :-(
>
>> I started using the ioctls directly, and specifically the USBDEVFS_BULK
>> ioctl. I _think_ the Linux framework is dropping bulk-in packets. More
>> below:
>>
>> This is for a mass storage device.
>>
>> The results I'm seeing look like:
>>
>> Bulk-Write 31 bytes (CBW)
>> dCBWDataTransferLength = 36
>> bmCBWFlags = 0x80 (transfer from device to host)
>> bCBWLUN = 0
>> bCBWCBLength = 06
>> CBWCB = 21 data bytes
>>
>
> I hope you mean 16 here, not 21. If the CBWCB were 21 bytes then the
> total length of the CBW packet would be 36 bytes instead of 31. Not to
> mention that you would greatly confuse the mass-storage device.
>
Yeah, sorry about that. I counted the bytes incorrectly.
>
>> Bulk-Read, requested 36 data bytes (expected SCSI data), did not arrive
>>
>> instead
>>
>> Bulk-Read, got 13 data bytes (instead of 36), corresponding to CSW
>> - all values other than dCSWSignature are 0
>>
>> So instead of getting my 36 byte data packet, followed by the 13 byte
>> CSW, I instead just get the 13 byte CSW.
>>
>> I _think_ that the first 36 byte bulk-in packet is getting
>> dropped/overwritten by the second bulk-in packet.
>>
>
> You don't have to guess about these things. Use usbmon; that's what it's
> for (instructions in Documentation/usb/usbmon.txt).
>
Again, the problem is getting a kernel built with the necessary debug
facilities. As I indicated, I think this may be my own Linux (or maybe
Ubuntu) kernel ineptitude. I'll have another go, though.
>
>> Is this normal,
>> expected behavior?
>>
>
> Of course not.
>
_That_ is good news. Now I just need to figure out what is happening to
the 36-byte packet.
>
>> Do I need to just spawn a reaper thread that hangs
>> around picking up bulk-in packets and puts them in a userland queue?
>>
>
> No.
>
>
>> I
>> had heretofore assumed that I could just do the bulk ioctls (I've seen
>> similar behavior using libusb, which uses submiturb and reapurbndelay)
>> and pick up the data when I'm ready for it. Am I misunderstanding
>> something?
>>
>
> No, your understanding is correct.
>
Whew. That's a good thing. I wasn't looking forward to rewriting my
code yet again. :-)
Thanks for your help. I'll get back to you with what I find once I get
a debug kernel that works in Ubuntu.
-- Garrett
--
Garrett D'Amore, Principal Software Engineer
Tadpole Computer / Computing Technologies Division,
General Dynamics C4 Systems
http://www.tadpolecomputer.com/
Phone: 951 325-2134 Fax: 951 325-2191
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel