Hi, I have been trying to communicate with a custom usb device from a SAM9G20-EK board using the usb-skeleton.c driver example in the linux source. I modified the driver to add my device's vendor and product id. The USB device enumerates with two bulk endpoints - one IN and one OUT. The (modified) skel driver successfully detects my device and I get a minor number allocated. After creating a device file with that minor number, I am able to write into the device by typing 'echo "HI" > /dev/mydevice'. I verified that this data arrives at my device intact. Next, I started sending data back from the device and tried to read it back using 'cat /dev/mydevice'. The problem is that read not only doesn't work, but also makes the app get totally stuck. Ctrl-C doesn't work and I have to reboot the board. Some debugging using printk's led me to the following snippet which seems to be causing the hang. If I change the wait to a wait_for_completion_interruptible, Ctrl-C starts working, but still no data is received. if (!dev->processed_urb) { /* * the URB hasn't been processed * do it now */ wait_for_completion(&dev->bulk_in_completion); dev->bulk_in_copied = 0; dev->processed_urb = 1; } Oh, btw I am using linux kernel 2.6.39.4. Any Ideas anyone?? Regards, Felix. _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies