トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

USB-Serialコンソール

すくるど研究所 作業記録

玄箱 > コンソール確保

USB-Serial変換ケーブルによる玄箱コンソール接続

基板上の端子へケーブルを付ければ常時利用可能なシリアル接続ができるらしいのですが、USB-Serial変換ケーブルでいきます。
(半田付けが苦手とかでなく、完成品とかにハード的改造するのが苦手。)udevって難しいですね。情報もまだまだこなれておらず、結構苦労。

基本準備

まずはUSB-Serial変換ケーブルを入手。あたしは秋月でPL2303チップを搭載したものを複数購入。
これにしたのは、WindowsやMac(OSX) でも利用可能らしいから。(とういか、利用するつもり。)
(同チップの製品は、バッファロー(販売終了)、IO−DATA(現役)でもあるようです。)

カーネルの構築

必要なモジュールがロードされるように設定してカーネルを再構築します。(あたしの場合はpl2303)カーネル再構築を参照して下さい。

認識確認

これでUSBポートにUSB-Serial変換ケーブルを挿せば、認識されます。demsgで確認しましょう。
udevが(自)動的に/dev/ttyUSB0を作成してくれます。まあ便利。

詳細(udev)設定

基本的なところ

getty/dev/ttyUSB0を設定。コマンドとして発行しても動きますが、セッション切れるとプロセス死にます。/etc/inittabで設定すればいいのですが、挿しっぱではないので後ほどudevで自動化を。

コマンド
gettyって一般ユーザで出せた?

# /sbin/getty -L ttyUSB0 57600 vt100
/etc/inittab
T2:23:respawn:/sbin/getty -L ttyUSB0 57600 vt100

ターミナルで接続

スピードなどを合わせ、WindowsならTeraTermとか。Macはscreenでいけます。ともかく接続・動作確認です。

udevでhotplug

自分の理解にやや自信ないですが、動いてます。情報が断片的にしか集まらないので苦労しました。

/etc/udev/rules.d
ここに.rulesなファイルを作成すると、ルールとして読み込まれます。最初からあるのはほとんど上位ディレクトリにあるファイルへのシムリンクなのですが、ここへ作成することに。
z57-pl2303.rules
周囲に合わせて適当なファイル名で作成。
# for PL2303(ttyUSB0)
KERNEL=="ttyUSB0",ACTION=="add",RUN+="/etc/hotplug/usb/add_pl2303"
KERNEL=="ttyUSB0",ACTION=="remove",RUN+="/etc/hotplug/usb/del_pl2303"
  • KERNEL --- マッチされるパターンを指定してます。これ以外にもいっぱい名称があります。
  • ACTION --- 挿した時ならadd、抜いたらremoveです。
  • RUN --- 実行されるスクリプトを指定します。
/etc/hotplug/usb/add_pl2303
#! /bin/sh
cp -f /etc/inittab /etc/inittab.$$
modlabel='PL2303'

if ! grep -q "^#>>${modlabel}" /etc/inittab.$$; then
    cat <<EOFINITTAB >> /etc/inittab
#>>${modlabel}
T2:23:respawn:/sbin/getty -L ttyUSB0 57600 vt100
#<<${modlabel}
EOFINITTAB
fi

/sbin/telinit q
mv -f /etc/inittab.$$ /etc/inittab.orig

exit 0
  • 変換ケーブルが挿されてttyUSB0が生成されるとこのスクリプトが実行されます。
  • gettyを追加した/etc/initabを作成し、活性化してます。
/etc/hotplug/usb/del_pl2303
#! /bin/sh
cp -f /etc/inittab /etc/inittab.$$
#modlabel='PL2303'   <--- awkで変数が置き換わらないので、直書きに変更。

cat /etc/inittab.$$ | awk ' /^#(>>|<<)PL2303/ { skip = ! skip ; next } skip == 0 { print } ' >/etc/inittab

/sbin/telinit q
mv -f /etc/inittab.$$ /etc/inittab.orig

exit 0
  • 変換ケーブルが抜かれてttyUSB0が削除されるとこのスクリプトが実行されます。
  • 追加した行を/etc/initabから削除し、活性化してます。
動作確認
# cd  /etc/hotplug/usb/
# chmod 755 add_pl2303 del_pl2303
# /etc/init.d/udev restart
  • 変換ケーブルを挿す/抜く
# dmesg   ---> 認識・ttyUSB0を生成/削除
# ps ax   ---> gettyプロセスが活き/死に
# view /etc/inittab ---> 書き換わっているか