Hi,
I'm writing a device driver for a spectrometer that can be connected to
the computer via usb. It has one bulk in endpoint and one bulk out
endpoint, so I thought I could get away with using the scanner driver and
not doing any kernel-space programming.
It seems to work... a bit. At some point the usb driver crashes horribly
and the device doesn't work anymore at all. It says many times in the
kernel log:
host/uhci.c: ec00: host controller halted. very bad
I sniffed the usb traffic on Windows, and I haven't seen an error in the
protocol at all. When trying to reproduce the same traffic on GNU/Linux,
it doesn't work.
I'm not just guessing what to send, the factory send me information about
the protocol and I'm following that. The protocol says they're just using
the bulk endpoints to transfer the data, so I shouldn't need to do any
weird things.
I looked at the usb code to find the error, but I don't really know how
usb works internally and I couldn't easily figure that out. The source
pretty much assumes this to be public information, so I'm hoping someone
reading this list can easily find the problem.
Thanks,
Bas Wijnen
System information:
I'm using a self-compiled 2.4.21 kernel. The parts from .config usb
section that are set are:
CONFIG_USB=y
CONFIG_USB_DEVICEFS=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_UHCI_ALT=y
CONFIG_USB_STORAGE=y
CONFIG_USB_HID=y
CONFIG_USB_HIDINPUT=y
CONFIG_USB_SCANNER=m
As you can see I have support for some other devices, but I haven't
plugged them in while testing this.
/proc/cpuinfo:
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 2
model name : Intel(R) Pentium(R) 4 CPU 2.53GHz
stepping : 7
cpu MHz : 2533.276
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
bogomips : 5059.37
--
/** mastermind. input 4 numbers 0-5. output <right>.<in the right place> **/
main(){int c[4] ,x=3 ,l=getpid() ,i;; for( srand(l);c[ x]=- rand
()%6 ,x-- ;);; for( ;44> x;){ char a[9] ,*p=
"%.1f\n", b[9];x=i=0; gets(a);for (l=4 ;l-- ;)x+=-(a[l] -=48)==
(b[l ]=c[ l]); ;for (l=0;16 >i;l =++i %4)x
+=(b[i/4]+ a[l] ?0:( a[l]=b[i/4] =10)) ;printf(p,x *.1) ;};}
/** This signature should be viewed in a monospaced font, e.g. courier. **/
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel