JF Linux Kernel 2.2 Documentation: /usr/src/linux/Documentation/networking/6pack.txt

networking/6pack.txt

高機能シリアルドライバ 6pack を Linux で使う方法について [プレインテキスト版]


この文書は 6pack-mini-HOWTO で、作者は

Andreas Koensgen DG3KQ
Internet: ajk@iehk.rwth-aachen.de
AMPR-net: dg3kq@db0pra.ampr.org
AX.25:    dg3kq@db0ach.#nrw.deu.eu

です。
(訳注:作者のe-mailアドレスは変更になったようです。正しくは
ajk@ccac.rwth-aachen.de
です。)

Last update: April 7, 1998

1. 6pack って何?どういう所が KISS より優れているの?

6pack はシリアルラインを介した PC-TNC 間のデータ交換のための送信プロト
コルです。KISS の代りとして使うことができます。

6pack には二つの大きな利点があります。

・PC を無線回線を介してフルにコントロールできます。PC と TNC の間で特
 殊な制御データをやり取りできるので、PC はいつでも「TNC がデータを受
 信しているかどうか」とか「TNC のバッファがアンダーランあるいはオーバ
 ーランを起こしたか」とか「PTT が押されているかどうか」とかいったこと
 を知ることができます。この制御データは通常のデータより高い優先度で処
 理されるので、データストリームにはいつでも重要なイベントを発行するた
 めに割り込みをかけることができます。全てを PC で処理している場合、こ
 のことはチャンネルアクセスやタイミングアルゴリズムを改善する手助けと
 なります。よく知られた CSMA や DAMA といったチャンネルアクセス方法と
 全く違う方法を実験してみたりするなんていうことも可能になります。
 この手のリアルタイムな制御は何台かの TNC と PC をデイジーチェーン式
 に接続する時に特に重要になります。(でも、この機能(訳注:デイジーチェ
 ーンのこと。セクション 6 を参照)は Linux の 6pack ドライバではまだサ
 ポートされていません)

・シリアルラインを通して送られるパケットごとにチェックサムが付けられる
 ので、シリアルラインの問題によるエラーを簡単に検出できます。PC が受
 け取ったパケットで壊れているものは AX.25 レイヤに渡されません。TNC 
 が PC から受け取ったパケットで壊れているものは送信されません。

6pack についての更に詳しい情報は AX.25 ユーティリティ集の doc ディレク
トリの中にある 6pack.ps というファイルに書かれています。


2. 6pack プロトコルを開発したのは誰?

6pack プロトコルは Ekki Plicht DF4OR, Henning Rech DF9IC, Gunter Jost 
DK7WJ によって開発されました。PC 版の FlexNet には Gunter Jost と 
Matthias Welwarsky DG2FEF によって書かれた 6pack のドライバが付いて来
ます。彼らはまた 6pack プロトコル用の TNC のファームウェアも書いていま
す。(セクション 4 を参照)


3. Linux 用の 6pack の最新バージョンはどこで手に入れられますか?

現時点で 6pack は db0bm.automation.fh-aachen.de から anonymous ftp で
手に入れることができます。/incoming/dg3kq というディレクトリに 
6pack.tgz というファイルがあります。
(訳注:もちろんこのドライバは 2.2.x のカーネルソースツリーに含まれてい
ます。)

4. 6pack で運用するための TNC の準備

6pack を使うためには特別な TNC のファームウェアが必要です。買って来た
TNC の EPROM に 6pack は入っていないので、あなた自身で EPROM を書き込
まなければなりません。6pack 用の EPROM のイメージファイルは PC/FlexNet
が置いてあるような RBBS で見付かるでしょう。ファイルの名前は 6pack.bin
です。このファイルは FlexNet チームが著作権を持って維持管理しています。
PC/FlexNet に付いてくるライセンス条項に従って使うことができます。この
ファイルの中身について私は何も知らないので、私に質問しないでください。
私は Linux ドライバを書くために 6pack プロトコルの動作について文書にな
ったものを使ったんです。

TNC は 64kByte の EPROM を持っていて、そのアドレスの下半分はファームウ
ェアや KISS のために使われます。上半分は空か、またはしばしば TAPR のプ
ログラムが書き込まれています。後者の場合、TNC にはディップスイッチが取
り付けてあって二つのシステムを簡単に切替えることができます。新しい
EPROM を書き込むとき、このシステムのどちらかが 6pack に置き換えられま
す。最近では TAPR が使われることはあまりないので、こっちを置き換えるほ
うが便利です。もしあなたの TNC に上で述べたようなスイッチが付いてない
なら、自分で EPROM の最上位のアドレスピンを HIGH と LOW で切替えられる
ようなスイッチを組み込んでもいいでしょう。新しい EPROM を取り付けて 
6pack に切替えたら、最初のテストのために TNC の電源を入れましょう。も
しファームウェアが正しく TNC を初期化したなら、コネクトとステータスの 
LED が約 1 秒間点灯します。


5. 6pack ドライバのコンパイルとインストール

このドライバはカーネルのバージョン 2.1.90 でテストを行いました。カーネ
ルの関数のインタフェースは 2.1.8x のカーネルで変更されていますので、こ
れより古いカーネルを使うとコンパイルエラーとなるかも知れません。

6pack のサポートをオンにする方法:

・カーネルのコンフィグレーションで「code matuarity level options」を選
 択して「prompting for development drivers」を選びます。

・「amateur radio support」を選択して「serial port 6pack」を選びます。

・カーネルとモジュールをコンパイルしてインストールします。
(訳注:glibcのシステムでは 6pack.c のインクルードファイル最後から5つが
エラーになります。)

ドライバを使うためには AX.25 ユーティリティ集で配布されている
kissattach プログラムを変更しなければなりません。

・kissattach のソースのあるディレクトリに cd します。kissattach.c ファ
 イルを変更します。最初のところに以下の行を挿入します。

  #ifndef N_6PACK
  #define N_6PACK (N_AX25+1)
  #endif

 次に

  int disc = N_AX25;

 という行を探して N_AX25 というのを N_6PACK に書き換えます。

・kissattach をコンパイルしなおします。混乱を避けるために名前を
 spattach としておきましょう。
(訳注:この N_6PACK の変更という方法は最新のカーネルではうまくいかない
ようです。なお ax25utils の後継の ax25tools にはそのものずばり
spattach が含まれているそうです。)

ドライバのインストール:

・insmod 6pack します。/var/log/messages をみて、モジュールが初期化メ
 ッセージを出力しているかどうか確認してください。

・KISS ポートを使う時には kissattach を動かすように、spattach をしま
 す。カーネルが「6pack: TNC found」といったメッセージを出力しているか
 どうか確認してください。

・ここから先は全てのことが KISS ポートを設定しているみたいにいくはずで
 す。ただ違うところは 6pack を意味するネットワークデバイスが sl や ax
 の代りに sp であるということだけです。よって 1 番目の 6pack ポートは
 sp0 となります。


このドライバはいろんなプラットフォームでテストされてきましたが、私はま
だこれが ALPHA 段階であると宣言します。注意してください!6pack のモジ
ュールを insmod して spattach する前にディスクを sync してください。あ
なたのコンピュータが変な動きをしているかどうか気をつけて見てください。
分かっている問題点については、このファイルのセクション 6 を読んでくだ
さい。

TNC のコネクトとステータスの LED が PC/FlexNet で TNC を使っている時と
違うやり方で制御されていることに気をつけてください。FlexNet で使ってい
る時、コネクト LED は接続していると点灯し、ステータス LED は PC の 
AX.25 エンジンのバッファに送信されるべきデータがあると点灯します。Linux
では 6pack レイヤは AX.25 レイヤの下にあるので、6pack ドライバは接続や
ら送信されていないデータについて何も知りません。だから LED は KISS モ
ードの時のように制御されています - つまりコネクト LED は PC から TNC 
へシリアルラインを通してデータが送られた時に点灯して、ステータス LED 
はデータが PC へと送られた時に点灯します。


6. 分かっている問題点

2.0.3x のカーネルでかつ 9600 ボーかそれより速い無線の回線で運用してい
ると、あるシステムではドライバが時々「6pack: bad checksum」といったメ
ッセージを表示するかも知れません - これは他局が二つかそれ以上の連続し
たパケットを送信することに伴うデータのロスによるものです。これは 2.0.3x
カーネルのシリアルドライバの問題に原因があると言われています。シリアル
ドライバのコードは 2.1.x のカーネルで変更されたと聞いたのですが、この
問題がまだ残っているかどうか分かりません。

ifconfig で sp インタフェースを閉じるとき、IP 接続を張っていた AX.25 
接続が(もしその IP 接続が既に閉じられていても)残っているとカーネルがク
ラッシュします。この問題は「素(bare)」の AX.25 接続が張られているとき
には起こりません。これが 6pack ドライバの問題なのか、あるいはカーネル
のほかの部分の問題なのかは分かりません。

このドライバはモジュールとしてテストされていて、カーネルの組み込みドラ
イバとしてはまだテストされていません。

6pack プロトコルではトークンリング式の TNC のデイジーチェーン(その内の
1 ヶ所が PC のシリアルポートの一つに接続されている)がサポートされてい
ます。この機能は実装されていませんし、また私は TNC のデイジーチェーン
を組んでテストする機会がないので少なくとも現時点でこの機能を実装するこ
とが来ません。
(訳注:この実装は作者も匙を投げてしまったようです。ユーザ領域で動く
m6pack - mkissのようなもの? - があるそうです。
http://personales.jet.es/inaki.arenaza/hamradio/m6pack/files/m6pack.tgz)

ソースコード中のコメントのいくつかは正しくありません。6pack ドライバは
SLIP/KISS ドライバを元に作られており、これらのコメントはそのままになっ
ているものです。まだそれを書き直したり削除したりしてませんでした、ごめ
んなさい!コード自体ちょっと掃除したり最適化したりする必要があります。
以降のリリースでするつもりです。

もしバグを見付けたりドライバに関して質問や提案があったら、このファイル
の最初に書いてあるアドレスで、どうぞ御気軽に私宛メールをください。
それではお楽しみください!

Andreas

(翻訳: JL3OXR <coda@post.kek.jp>  Aug. 10, 1999)

Linux カーネル 2.2 付属文書一覧へ戻る