Не забывайте про stty и настройку COM порта. У меня настройка идёт такой командой.
stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts raw
код для Arduino:
Serial.begin(9600);
Serial.println("START");
Демон, читающий каждые 3 секунды команды с Arduino и выводящий всё на консоль (на sh). Текст от Arduino попадает в переменную $LINE:
#!/bin/sh
insmod usbserial
insmod ftdi_sio
insmod cdc-acm
while [ true ]
do
stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts raw
while read LINE
do
echo $LINE
done < /dev/ttyACM0
/bin/sleep 3
done
Таким образом, при запуске демона Arduino сама перезагружается и пишет в консоль, при подключении/отключении производится повторная настройка порта и всё продолжает работать дальше.