それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

linuxでシリアルコンソールへシェルから書き込みたい。

シリアルコンソールへシェルから書き込みたい。

tty デバイスに対して書き込むのは通常のソケットやファイルに書き込むのも変わらないのです。echo で書き込めます。ただし設定が必要。

事前にチェックすること

読み込み側で、待ち受けておく

sudo screen /dev/ttyUSB0 115200

書き込み側で、設定をする

sudo /usr/bin/stty -F /dev/S0 speed 115200

パーミッションを確認しておく

書き込み側でgetty 上がってたりgetty 経由でログインしているとパーミッションが変わってるので一旦オフにしておく

takuya@:~$ sudo ls -l /dev/ttyS0
crw--w---- 1 root tty 4, 64  2月  7 23:30 /dev/ttyS0
takuya@:~$ sudo systemctl stop serial-getty@ttyS0.service
takuya@:~$ sudo ls -l /dev/ttyS0
crw--w---- 1 root tty 4, 64  2月  7 23:30 /dev/ttyS0
takuya@:~$

ログイン前後・起動前後のパーミッションの変化について -> https://takuya-1st.hatenablog.jp/entry/2022/02/04/143646

書き込みする

echo aaaaaaa > /dev/ttyS0

echo できるのは、パーミッションがあるときなので、パーミッションがわからないときは、root でやればいいかな

実行中の画面

ttyS0/ttyUSB0 の動作チェック

動作チェックは、echo screen で行うのが確実

screen /dev/ttyS0
screen /dev/ttyUSB0

このとき、ボーレートを指定しないでおいておけば、ボーレートのチェックが出来る。screen でボーレートを明示するとそのときにデバイスのボーレートが変更されてしまうのでチェックにならない。

バイスのボーレートを確認するには

stty -F /dev/ttyUSB0 -a

を使って、ボーレートやパリティなどを確認する。