起動時にシリアルポート速度を設定する最善の方法は何ですか?

起動時にシリアルポート速度を設定する最善の方法は何ですか?

Debian Wheezyを実行しているコンピュータの/dev/ttyS1〜ttyS9に接続された機器があります。さまざまな機器が異なる速度で通信します。

このような複数行を使用するよりも転送速度を設定するより良い方法はありますか?

stty -F /dev/ttyS1 19200 raw -echo
stty -F /dev/ttyS2 4800  raw -echo
etc...

rc.localから?

答え1

インストールするシリアルパケット設定。シリアルポート設定を保存し、起動時に復元できます。

または、udevルールでポートが検出された場合は、プログラムを実行してください。次のように入力してください(テストされていません)/etc/udev/rules.d/zzz_serial.rules

KERNEL=="ttyS1", RUN+="/bin/stty -F /dev/ttyS1 19200 raw -echo"

答え2

私の知る限り。

この/etc/rc.localファイルは、ボックスごとのカスタマイズを作成するのに最適な場所です。これはこの種のカスタム変更用に特別に作成されており、ほとんどのシステム管理者がUnix / Linuxシステムを扱うときに最初に探している場所です。

答え3

setserialパッケージは起動時にシリアル設定を復元します。インストールが完了したら、ファイルを編集します。/var/lib/setserial/autoserial.conf

###PORT STATE GENERATED USING AUTOSAVE-ONCE###
###AUTOSAVE-ONCE###
#
# If you want to configure this file by hand, use
# dpkg-reconfigure setserial
# and change the configuration mode of the file to MANUAL. 
# If you do not do this, this file may be overwritten automatically the next 
# time you upgrade the package
#
/dev/ttyS0 uart 16550A port 0x03f8 irq 4 baud_base 115200 spd_normal skip_test
/dev/ttyS1 uart 16550A port 0x02f8 irq 3 baud_base 115200 spd_normal skip_test
/dev/ttyS2 uart 16550A port 0x03e8 irq 0 baud_base 115200 spd_normal skip_test
/dev/ttyS3 uart 16550A port 0x02e8 irq 0 baud_base 115200 spd_normal skip_test
/dev/ttyS4 uart 16550A port 0x02d0 irq 0 baud_base 115200 spd_normal skip_test
/dev/ttyS5 uart 16550A port 0x02c0 irq 0 baud_base 115200 spd_normal skip_test

私の経験では、ファイルのコメントに別々に記載されていても、ファイルを直接変更してもかまいません。###AUTOSAVE-ONCE###ファイルの上部にある行を移動してseterialを「対話式」にすることもできます。次に、構成に満足するまで、必要なだけsetserialを呼び出します。この時点でコンピュータを再起動すると、最新の設定が/setserial/autoserial.conf

関連情報