Malcolm,

I'm running your program here on a LAB-XUSB.
I had to change some things to make it run on it. And I made a program for the PC to just send/receive some data over USB.

Your program is sending out 127 reports per second when the USB is plugged in.
I'm not sure if your friends PC app can handle that many reports while updating GUI sliders etc..
It also fills up the USB buffer before the PC app connects, so when it does connect, it gets hit hard with a whole bunch of reports.

When I send data to it via USB, it saves the data to EEPROM and continues sending the new data at 127 reports per second.

So the USB portion is working properly.
You just need to limit the data going out.
It should really only send the data by request from the PC, instead of all the time.

This was all quite evident after adding the USB status LED's from post #3.