What Needs Fixing In Linux
Good god, you are right. Linux USB support is terrible. At least, support for USB 2.0 is.
I plug my iPod classic 160gb into one of my laptop's USB ports, and get various ehci_hcd failure messages in kern.log. Of course, it works fine on the same laptop in Windows. Worse still, these bugs are known and basically marked "won't fix" everywhere they are filed, even after years.
This isn't FUD - do a simple google search for "ehci_hcd" and see all the problems with it.
The only real workaround that consistantly works for me (and this is for several USB hard drives on various machines also, not just ipods and not just one machine) is to remove this module, which lowers the device speed to USB 1.1
While this works, trying to use a 500GB hard drive with 1.1 speeds requires a masochistic sense of pleasure that I just don't possess.
I've been very tempted to learn the details of the ehci_hcd problems and fix it myself, but this is a large undertaking for someone who isn't already familiar with the linux kernel code.