How do I read from /dev/ttyACM0 in Linux without a terminal emulator?
I have had very similar problems with my yun(shields) and I found the stty command to be very crucial for a good working.
I use following command and it works with mega and due on the yun

stty -F ${PortName}  ${SerialSpeed}  raw -clocal -echo icrnl


Since I call these I can redirect from and to /dev/ttyxxx without problems.
As far as I can see you mis the raw.