I know this post comes very late to the discussion, but I've spent days debugging problems with /dev/ttyACM0 under Linux (Ubuntu). I updated my BIOS, tried different kernels, and of course I'd double checked that my user account had read/write access to the device (because it was in the dialout group).
The issue for me was modemmanager. On my laptop, modemmanager was grabbing the /dev/ttyACM0 somehow and causing contention. I got "device or resource busy" messages; I got timeouts. I just got weird behavior in general, and almost always attempts to program failed.
Because it was so hard to find, I'm coming back here to update this thread, which was fairly prominent when I tried to hunt down the issue. For me the fix was:
$ sudo apt-get --purge remove modemmanager
After that, things work as they should.
On another laptop, modemmanager almost never caused a problem. Perhaps one in 25 times I had an issue. But on the laptop I use from day to day it was more like 99 out of 100 times it failed.