Thread (11 messages) 11 messages, 2 authors, 2011-09-21

Cannot read using USB Skeleton Driver

From: Greg KH <hidden>
Date: 2011-09-16 14:31:44

On Fri, Sep 16, 2011 at 04:59:08PM +0530, Felix Varghese wrote:
quoted
What type of device is this you are wishing to write a driver for?  That
will determine the type of interface you need to use, odds are it is not
going to be a simple char device.
The device is a custom USB dongle whose firmware is also under
development. We are still in the process of deciding what it should
actually show up as on the linux side but right now, we decided to use
a character device for simplicity reasons until we have simple two-way
communication over USB up and running. Since I am writing the firmware
on the device side too, it had indeed been (and still is) my first
suspect :). But I checked the code multiple times and now I am
reasonably sure that I am in fact, doing all that is required to send
out data properly. Besides, data transfer in the other direction works
fine. I have registered only one IN and one OUT endpoint apart from
endpoint 0 and I try to send my data through the IN end-point.
For real simplicity, just use the usb-serial generic interface and you
will get a tty device node created for you that you can read and write
data from.

Just do:
	modprobe usb_serial vendor=0x0000 product=0x0000
with the proper vendor and product ids for your device, then plug it in.

No kernel changes needed at all, just have a pair of bulk in/out
endpoints and all will work automatically for you.

But that interface is slow as there is only one urb in flight at any
point in time, so don't rely on that for anything but basic development
and testing.
I noticed that after making the wait interruptible, if I hit Ctrl-C
while we are hanging on a read, the device side shows transfer
complete. So the device, apparently, thinks the data has been sent
successfully when we have actually aborted the transfer at the other
end! Shouldn't this mean that something happens after coming out of
the wait_for_completion that really makes the transfer happen?
Look at the USB data on the wire to make sure that you really are
sending data properly.

good luck,

greg k-h
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help