Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

writing to serial port from linux command line

From windows I can communicate with a serial port device using following commands:

mode com1: baud=9600 data=8 parity=n stop=1 copy con com1 alt+18alt+2ctrl+z 

Device starts the requested operation.

When I try to accomplish the same operation from a stand alone debian box or from a debian virtualbox instance of the same windows machine, I had no luck so far.

Here's equivalent linux commands(at least I think so)

stty -F /dev/ttyS0 speed 9600 cs8 -cstopb -parenb echo '\x12\x02' > /dev/ttyS0 

Nothing happens.

Can somebody please direct me to the right direction?

like image 849
erin c Avatar asked Jan 16 '12 08:01

erin c


2 Answers

If you want to use hex codes, you should add -e option to enable interpretation of backslash escapes by echo (but the result is the same as with echoCtrlRCtrlB). And as wallyk said, you probably want to add -n to prevent the output of a newline:

echo -en '\x12\x02' > /dev/ttyS0 

Also make sure that /dev/ttyS0 is the port you want.

like image 64
praetorian droid Avatar answered Sep 24 '22 01:09

praetorian droid


echo '\x12\x02' 

will not be interpreted, and will literally write the string \x12\x02 (and append a newline) to the specified serial port. Instead use

echo -n ^R^B 

which you can construct on the command line by typing CtrlVCtrlR and CtrlVCtrlB. Or it is easier to use an editor to type into a script file.

The stty command should work, unless another program is interfering. A common culprit is gpsd which looks for GPS devices being plugged in.

like image 40
wallyk Avatar answered Sep 24 '22 01:09

wallyk