I have never used Arduino, so I assume that your method is right. The first thing I will try is sudo with the first command:
sudo cu -l /dev/ttyACM0 -s 115200
But, since the second Line in Use message, it may also be that /dev/ttyACM0 already actually accepted / blocked. In other words, is there any process using the port? I cannot test it on the serial port, but I would try piping the output of list open files for the grep command :
lsof | grep ACM
It should list the process ID of the process that is blocked for the port. Then you can use the kill command to stop this process:
kill <PID_FROM_OUTPUT_OF_UPPER_COMMAND>
To ensure that you have successfully stopped the process, you can pass the command show all active processes to the grep command:
ps x | grep <PID_FROM_OUTPUT_OF_UPPER_COMMAND>
which should not return a result if the process was successfully stopped. If not, this line will come out, so you can try with the -9 flag as follows:
kill -9 <PID_FROM_OUTPUT_OF_UPPER_COMMAND>
and he will eventually stop.
Without testing, I'm not sure if the lsof command, written in the current form, displays the accepted tty devices. If so, then there should be some combination of flags that will list them, since everything on Unix is โโa file.
So, the principle must be valid: find out which process uses the device and stop it ( ps and kill commands will work as soon as you have the correct process identifier).
If all this is not so, then perhaps your method is incorrect. In this case, I would start to carefully re-read the Arduino documentation again :)