Comment Re:Terrible interoperability (Score 2) 355
Amen to the "Ball of hurt".
I design USB3 H/W....what. a. piece. of. shit. I have truly given up hope of engineering anything that will ever work universally, even Intels interfaces which you would like to believe would be a model reference design look like crap when you plug them into a gizillion dollar Agilent USB3 analyzer. Should I be be surprised? Probably not, USB has never exactly been the premium interface has it? Firewire didn't go away because USB was technically superior thats for sure. Thunderbolt just friggin' works, day in, day out, incredible and reliable performance. Sure cables are expensive, they have all sorts of clever active electronics...because...thats what it takes to make 10G in a consumer application work...not a $1.99 piece of injection molded crap from god knows what Asian hell chemical works. In fact Thunderbolts worst problem is
I can relate. The USB 3.0 spec is a committee beast. It is difficult to read it and understand very clearly how you are supposed to put it into practice, and that's a problem for someone like me who is writing an implementation from the ground up.
Probably the biggest gripe is the compliance tests. The idea is that every manufacturer goes to the USB Implementers Forum and runs standardized tests on their widget so they can say "hey, it passed the tests, it's ready for the market.". But in real life, the tests are woefully lacking. I suspect they were designed that way on purpose.
One of the big players selling verification equipment (Lecroy) actually went out and cooked up their OWN compliance tests that you run in addition to the USBIF's -- and they're far more useful. I was passing the USBIF tests mostly but failing the Lecroy tests.
I have not seen 1 shipping device that actually passes all the tests. Intel, NEC, Renesas, VLI, whatever host or device chip you pick, they all fail some of the tests. And they don't always play nice together. The protocol is structured in a such a way that it's very, very, hard to conclusively test an implementation and say "yup, it works". Instead you have to go probing and test for tons of odd and random occurences, and if they don't happen, then it must be working.
To get my core working I've already been investigating fudges.. yes, all shipping devices have them. You wouldn't believe all the kludges that've accumulated in something like the Windows USB stack. Luckily I dont have to worry about that, working on the hardware