It's really hard for SPI to have timing issues, that was kind of the whole point of it being synchronous (although I don't disbelieve you, they probably didn't work too hard on the SPI libraries because they probably though no one would use them last year, and they would be easy to write

). Did you compare the two programs you had for the working controller and the cRIO to see if you initialized something incorrectly?