Here's an interesting fact. If anyone as an idea of how I could fix things better, I'd be happy to hear it.
I recently bought a new motherboard, and it has two CPUs and USB. Previously I was using the USB port on a house-mate's computer with kernel 2.3.99pre2. With two CPUs (still 2.3.99pre2), all of a sudden emptool couldn't download the databases any more. It kept on giving me errors (with --debug on) similar (I'm not actually using the same machine at the moment) to
timeout in state 3 (substate x)
I suspected this might be (somehow) due to the second CPU. After a lot of bumbling around, I eventually hit upon the idea of setting the SMP affinity of the USB IRQ to only one CPU.
e.g. echo 1 > /proc/irq/19/smp_affinity
This sort of fixed the problem. I still can't use emptool with debug turned off (similar symptoms to before I changed the IRQ SMP affinity), but if I use "--debug 1" then I get the odd timeout message (every 10 times I start emptool or so) but basically it works.
I have not yet grokked the empeg-car.c code, and I was wondering if anybody could see an obvious solution to the problem (I'd prefer it to work without mucking around with the IRQ as above). It also seems to be related (somehow) to emptool itself, as turning the debug on and off affects the behaviour. It could just be timing related, I guess.
Any ideas?
Thanks
Richard.