6. AX.25 ポートの設定

Linux マシン上で設定されている、いろいろな AX.25 ポートのパラメーターを 取得するために AX.25 用の各アプリケーションは特定のファイルを読みだし ます。 AX.25 ポートに関して言えば、/etc/ax25/axports がそ のファイルです。 システムに作りたい各 AX.25 ポートに対応する項目を、このファイルに作らなけ ればなりません。

6.1. AX.25 ネットワークデバイスを作る

ネットワークデバイスとは ifconfig コマンドを実行し たときに表示されるあれのことです。 たいていの場合、ネットワークデバイスには物理ポートが関連づけられていま すが、物理ポートの必要ない場合もあります。 ネットワークデバイスはデバイスドライバーに直結しています。

Linux の AX.25 コードには数々のデバイスドライバーが含まれています。 多分、もっとも一般的なものは KISS ドライバーでしょう。 他には SCC ドライバー、Baycom ドライバー、Soundmodem ドライバーなどが 挙げられます。

これらの各ドライバーは起動時にそれぞれネットワークデバイスを作成します。

6.1.1. KISS デバイスを作る

カーネルコンパイル時のオプション:
Amateur Radio support  --->
    [*] Amateur Radio support
    --- Packet Radio protocols
    <*>   Amateur Radio AX.25 Level 2 protocol
    ...
    AX.25 network device drivers  --->
    --- AX.25 network device drivers
    <*> Serial port KISS driver
    ...

おそらく最も一般的な設定といえばシリアルポートにつながれた KISS TNC で しょう。 あらかじめ TNC はシリアルポートに接続して設定をしておく必要があります。 TNC を KISS モードに設定するのには minicomseyon といった通信用プログラムが使えるでしょう。

KISS デバイスを作るには kissattach プログラムを使 います。 一番シンプルな使い方としてはこんな感じです。

# /usr/sbin/kissattach /dev/ttyS0 radio 44.135.96.242
# kissparms -p radio -t 100 -s 100 -r 25

kissattach は KISS のネットワークデバイスを作りま す。 このデバイスの名前は「ax[0-9]」です。 最初に kissattach を使うと 「ax0」が作られ、次に使うと「ax1」 が作られ、といった具合です。 KISS デバイスは各々シリアルポートに関連づけられています。

kissparms コマンドは KISS デバイスの各種パラメー ターの設定に使います。

上に示した例では、/etc/ax25/axports 中の 「radio」というポート名の KISS ネットワークデバイスを シリアルデバイス /dev/ttyS0 に作成しています。 続いて txdelayslottime を それぞれ 100 ミリ秒に、ppersistを 25 に設定しています。

さらに詳細な情報は man ページを参照してください。

6.1.1.1. デュアルポート TNC の設定

ax25-utils パッケージに含まれる mkiss ユーティリ ティを使えばデュアルポートTNCの両方のポートを使えるようになります。 (訳注:mkiss は ax25-tools パッケージに含まれています) 設定は極めて簡単です。 このユーティリティは、一つのシリアルデバイスに一台のマルチポート TNC が接続されている構成を、複数のシリアルデバイスにそれぞれシングルポート の TNC が接続されているように見せかけて動作します。 このような仕掛けは AX.25 の設定を行う前に行います。 そして AX.25 の設定を仮想 TTY インターフェイス (/dev/ttyq*) に対して行います。 実際のシリアルデバイスに対してではありません。 仮想 TTY デバイスは TTY デバイスと通信するプログラムが、他の TTY デバ イスと通信するプログラムに対して通信を行えるような一種のパイプを作成し ます。 それぞれのパイプにはマスター側とスレーブ側が存在します。 通常、マスター側は「/dev/ptyq*」と呼ばれ、スレーブ 側は「/dev/ttyq*」と呼ばれます。 マスター側とスレーブ側には一対一の対応関係があり、 /dev/ptyq0 がパイプのマスター側なら /dev/ttyq0 がスレーブ側といった具合になります。 パイプのスレーブ側をオープンする前にマスター側をオープンしていなければ なりません。 mkiss は一つのシリアルデバイスを複数のデバイスに分 けるためにこの仕掛けを活用しているのです。

例:デュアルポート TNC がシリアルデバイス /dev/ttyS0 に 9600bps で接続されているとする。

# /usr/sbin/mkiss -s 9600 /dev/ttyS0 /dev/ptyq0 /dev/ptyq1
# /usr/sbin/kissattach /dev/ttyq0 port1 44.135.96.242
# /usr/sbin/kissattach /dev/ttyq1 port2 44.135.96.242

最初のコマンドでそれぞれが普通のシングルポート TNC のように見える二つ の仮想 TTY デバイスが作られます。 そして /dev/ttyq0/dev/ttyq1 を通常の TNC が接続されたシリアルデバイスのごとく扱います。 つまり、例において port1port2 と呼んでいる AX.25 ポートのそれぞれについて、前節で説明したように kissattach コマンドを使うのです。 実際のシリアルデバイスは mkiss プログラムが使用し ますから、kissattach を実際のシリアルデバイスについ て使ってはいけません。

mkiss コマンドには便利なオプションがいっぱいあ ります。以下にまとめてみます。

-c

各 KISS フレームに 1 バイトのチェックサムを付加する。 この機能は大抵の KISS の実装ではサポートされていないが、G8BPQ KISS ROM などではサポートされる。

-s <speed>

シリアルポートのスピードを設定する。

-h

シリアルポートをハードウェアハンドシェイクするようにする。 デフォルトはオフ。大抵の KISS の実装ではサポートされていないが、これを サポートするものもある。

-l

syslog 機能を使ってログをとるようにする。

6.1.2. 6PACK デバイスを作成する

カーネルコンパイル時のオプション:
Amateur Radio support  --->
    [*] Amateur Radio support
    --- Packet Radio protocols
    <*>   Amateur Radio AX.25 Level 2 protocol
    ...
    AX.25 network device drivers  --->
    --- AX.25 network device drivers
    ...
    <*> Serial port 6PACK driver
    ...

6PACK はいくつかの TNC で KISS に代わるものとしてサポートされているプ ロトコルです。 KISS ドライバーと同じような使い方をしますが、 kissattach コマンドが slattach コマ ンドになります。(訳注:slattach ではなく spattach が本当です。実体は kissattach へのシンボリックリンクだと思いますが。)

カーネルソースに 6PACK ドライバーのちょっとした HOWTO 文書が付属しています。 ファイル名は /usr/src/linux/Documentation/networking/6pack.txt で す。

6.1.3. Baycom デバイスを作る

Note: (訳注)この章で述べられている Baycom ドライバーの設定は翻訳の時点ですで に古い情報です。 最新の情報についてはカーネル付属文書 baycom.txt を 参照するようにしてください。

カーネルコンパイル時のオプション:
Amateur Radio support  --->
    [*] Amateur Radio support
    --- Packet Radio protocols
    <*>   Amateur Radio AX.25 Level 2 protocol
    ...
    AX.25 network device drivers  --->
    --- AX.25 network device drivers
    ...
    <?> BAYCOM ser12 fullduplex driver for AX.25
    <?> BAYCOM ser12 halfduplex driver for AX.25
    <?> BAYCOM picpar and par96 driver for AX.25
    <?> BAYCOM epp driver for AX.25
    ...

うまくは動作しないだろうという一般の予想をよそに、Thomas Sailer は Baycom モ デムの Linux におけるサポートを開発しました。 彼のドライバーはシリアルポート用 Ser12、パラレルポー ト用 Par96 およびその改良版 PicPar に対応しています。 モデム自体のさらに詳しい情報は Baycom Web site から入手できるでしょう。

まず最初にすべきことは Baycom モデムを接続するシリアルポートまたはパラ レルポートの割込み (IRQ) と I/O アドレスを調べることです。 そして調べたその値を使って Baycom ドライバーを設定するのです。

Baycom ドライバーは設定時に bc0, bc1, bc2 といったネットワークデ バイスを作成します。

sethdlc ユーティリティを使えばドライバーの各種パ ラメーターの設定が可能です。 または Baycom モデムを一つだけ使うのであれば、Baycom モジュールをロー ドする際に insmod のコマンドラインにおいてパラメー ターを指定することもできます。

簡単な設定の例を。COM1: のシリアルドライバーを停止して COM1: に接続し たシリアルポート用 Ser12 モデムの Baycom ドライバーをソフトウェア DCD オプションで設定するには −

# setserial /dev/ttyS0 uart none
# insmod hdlcdrv
# insmod baycom mode="ser12*" iobase=0x3f8 irq=4

LPT1: に接続したパラレルポート用 Par96 モデムをハードウェア DCD オプショ ンで設定するには −

# insmod hdlcdrv
# insmod baycom mode="par96" iobase=0x378 irq=7 options=0

ただ、この方法はあまりお薦めではありません。 sethdlc ユーティリティならたくさんのデバイスを設 定するときも一つのデバイスを設定するのと変わりないくらい簡単です。

sethdlcman ページには詳 細な情報が掲載されています。 しかしながら、ここで一つ二つ例を挙げることで設定の重要なポイントが明瞭 になると思います。 以下の例では

# insmod hdlcdrv
# insmod baycom

により既に Baycom モジュールをロードしてあるか、またはカーネルのコンパ イル時に組み込んであるものとします。

デバイス bc0 を LPT1: のパラレルポート用 Baycom モ デム (ソフトウェア DCD) として設定。

# sethdlc -p -i bc0 mode par96 io 0x378 irq 7

デバイス bc1 を COM1: のシリアルポート用 Baycomモデ ムとして設定。

# sethdlc -p -i bc1 mode "ser12*" io 0x3f8 irq 4

6.1.4. AX.25 チャンネルアクセスパラメーターの設定

AX.25 チャンネルアクセスパラメーターとは KISS デバイスで言うところの ppersist, txdelay, slottime といったパラメーターのことです。 この設定にも sethdlc ユーティリティを使います。

繰返しになりますが、sethdlc の man ページは最も充 実した情報源です。 ただ以下に別な例を示すのも、害にはならないでしょう。

デバイス bc0 を TxDelay 200 ミリ秒、SlotTime 100 ミ リ秒、PPersist 40、半二重モードに設定するには

# sethdlc -i bc0 -a txd 200 slot 100 ppersist 40 half

時間を表す値は単位がミリ秒であることに注意。

6.1.4.1. カーネル AX.25 機能が Baycom デバイスを使うように設定す る

Baycom ドライバーはカーネルの AX.25 コードが使うことのできる標準的なネッ トワークデバイスを作成します。 設定は PI カードや PacketTwin カードの場合とほとんど同じです。

まず最初にデバイスに AX.25 でのコールサインを設定します。 これには ifconfig ユーティリティを使います。

# /sbin/ifconfig bc0 hw ax25 VK2KTJ-15 up

上の例では Baycom デバイス bc0 に AX.25 でのコール サイン VK2KTJ-15 を割当てています。 あるいは axparms コマンドを用いてもコールサインの 設定はできますが、デバイスを動作状態にするためにはやはり ifconfig コマンドを使う必要があります。

# ifconfig bc0 up
# axparms -setcall bc0 vk2ktj-15

次に /etc/ax25/axports に他のデバイス用に設定したの と同様な項目を作ります。 axports ファイルの項目は、そのネットワークデバイス に設定したコールサインによって関連づけられます。 つまり Baycom デバイスに設定したコールサインと同じコールサインの axports ファイルの項目が Baycom デバイスを参照する ときに使われます。

以上で他の AX.25 デバイスのときと同じように新しいデバイスを扱うことが できます。 TCP/IP の設定をしたり、ax25d が動くようにしたり、NET/ROM や ROSE の設 定をしたり、後はあなたのお望みのままです。

6.1.5. カーネル版 Soundmodem デバイスを作る

カーネルコンパイル時のオプション:
Amateur Radio support  --->
    [*] Amateur Radio support
    --- Packet Radio protocols
    <*>   Amateur Radio AX.25 Level 2 protocol
    ...
    AX.25 network device drivers  --->
    --- AX.25 network device drivers
    ...
    <*> Soundcard modem driver
    [?]   soundmodem support for Soundblaster and compatible cards
    [?]   soundmodem support for WSS and Crystal cards
    [?]   soundmodem support for 1200 baud AFSK modulation
    [?]   soundmodem support for 2400 baud AFSK modulation (7.3728MHz crystal)
    [?]   soundmodem support for 2400 baud AFSK modulation (8MHz crystal)
    [?]   soundmodem support for 2666 baud AFSK modulation
    [?]   soundmodem support for 4800 baud HAPN-1 modulation
    [?]   soundmodem support for 4800 baud PSK modulation
    [?]   soundmodem support for 9600 baud FSK G3RUH modulation
    ...

Thomas Sailer がサウンドカードをモデムとして使えるようにするカーネル用 のドライバーを書きました。 パケット無線を楽しむためには無線機をサウンドカードに直接つなげるだけで いいのです! 信号のデジタル処理をメインの CPU で全て行うため、Thomas はこのソフトウェ アを使うには少なくとも 486DX2/66 以上の CPU を使うように勧めています。

現在のところ、このドライバーは 1200bps AFSK, 4800bps HAPN, 9600bps FSK (G3RUH 互換) モデムの機能を持っています。(訳注:他にも 2400bps AFSK, 2666bps AFSK, 4800bps PSK といったモードもあります。) SoundBlaster か Windows Sound System 互換のカードだけがサポートされて います。 それ以外のタイプのカードを持っているなら、この文書の後の方で説明するユー ザーモード版 Soundmodem を試してみるとよいでしょう。

サウンドカードから PTT スイッチをドライブするために回路を付足す必要が あります。 これについての情報は Thomas's Soundmodem PTT circuit web page にあります。 取得る手段としてはそんなにあるわけではありません。 サウンドカードからの音声出力を検出するか (訳注:VOX 動作のこと)、パラ レルポート、シリアルポート、MIDI ポートのいずれかを出力として使うかで す。 それぞれの回路の例が Thomas のサイトにあります。

Soundmodem ドライバーは設定時に sm0, sm1, sm2 といったネットワークデ バイスを作成します。

Note: Soundmodem ドライバーは Linux のサウンドドライバーと同じリソースに対し て競合関係にあります。 Soundmodem ドライバーを使いたければ必ず Linux のサウンドドライバーがイ ンストールされていない状態にしなければなりません。 もちろん両方をモジュールとしてコンパイルし、使いたいときに組込んだり取 外したりということも可能です。

6.1.5.1. サウンドカードを設定

Soundmodem ドライバーはサウンドカードの初期化を行いません。 ax25-utils パッケージには Crystal チップセットを使ったサウンドカードの 初期化用に setcrystal というプログラムが入ってい ます。(訳注:setcrystal は ax25-tools パッケージに含まれます) これ以外のカードを使うなら初期化のために何か他のソフトウェアを使う必要がある でしょう。 (訳注:Linux サウンドドライバーなど) このプログラムの使い方はかなり単純です。

setcrystal [-w wssio] [-s sbio] [-f synthio] [-i irq] [-d dma] [-c dma2]

例えば I/O アドレス 0x388, IRQ 10, DMA 1 である SoundBlaster カードの 設定をしたいのならば

# setcrystal -s 0x388 -i 10 -d 1

I/O アドレス 0x534, IRQ 5, DMA 3 である Window Sound System カードの設 定をしたいのならば

# setcrystal -w 0x534 -i 5 -d 3

[-f synthio] ではシンセサイザーのアドレスを、 [-c dma2] では全二重モードで運用するための DMA のチャ ンネル 2 を、それぞれ設定します。

6.1.5.2. Soundmodem ドライバーの設定

サウンドカードの設定が終れば、次は Soundmodem ドライバーに対して、どこ のリソースにサウンドカードがあって、どのようなモードのモデムとして動作 させるかを教えてやらなければなりません。

sethdlc ユーティリティを使えばドライバーの各種パ ラメーターの設定が可能です。 またはサウンドカードが一枚だけささっているのであれば、 Soundmodem モジュールをロードする際に insmod のコ マンドラインにおいてパラメーターを指定することもできます。

簡単な設定の例です。上の設定の例で示したような SoundBlaster が一枚あっ て、それを 1200bps のモードで動作させたいならば

# insmod hdlcdrv
# insmod soundmodem mode="sbc:afsk1200" iobase=0x388 irq=10 dma=1

ただ、この方法はあまりお薦めではありません。 sethdlc ユーティリティならたくさんのデバイスを設 定するときも一つのデバイスを設定するのと変わりないくらい簡単です。

sethdlcman ページには詳 細な情報が掲載されています。 しかしながら、ここで一つ二つ例を挙げることで設定の重要なポイントが明瞭 になると思います。以下の例では

# insmod hdlcdrv
# insmod soundmodem

により既に Soundmodem モジュールをロードしてあるか、またはカーネルのコ ンパイル時に組み込んであるものとします。

上の設定例で示したような Windows Sound System カードをデバイス sm0 の G3RUH 互換 9600bps モードで動作させて、I/O アドレス 0x378 のパラレルポートを PTT スイッチとして使うように設定する には

# sethdlc -p -i sm0 mode wss:fsk9600 io 0x534 irq 5 dma 3 pario 0x378

上の設定例で示したような SoundBlaster カードをデバイス sm1 の 4800bps HAPN モードで動作させて、I/O アドレ ス 0x2f8 のシリアルポートを PTT スイッチとして使うように設定するには

# sethdlc -p -i sm1 mode sbc:hapn4800 io 0x388 irq 10 dma 1 serio 0x2f8

上の設定例で示したような SoundBlaster カードをデバイス sm1 の 1200bps AFSK モードで動作させて、I/O アドレ ス 0x2f8 のシリアルポートを PTT スイッチとして使うように設定するには

# sethdlc -p -i sm1 mode sbc:afsk1200 io 0x388 irq 10 dma 1 serio 0x2f8

6.1.5.3. AX.25 チャンネルアクセスパラメーターの設定

AX.25 チャンネルアクセスパラメーターとは KISS デバイスで言うところの ppersist, txdelay, slottime といったパラメーターのことです。 この設定にも sethdlc ユーティリティを使います。

繰返しになりますが、sethdlc の man ページは最も充 実した情報源です。 ただ以下に別な例を示すのも、害にはならないでしょう。

デバイス sm0 を TxDelay 100 ミリ秒、SlotTime 50 ミリ秒、 PPersist 128、全二重モードに設定するには

# sethdlc -i sm0 -a txd 100 slot 50 ppersist 128 full

時間を表す値は単位がミリ秒であることに注意。

6.1.5.4. オーディオレベルの設定とドライバーの調整

どんな無線用のモデムでも、動作させるためにはオーディオレベルを適切に設 定することが非常に重要です。 このことは Soundmodem にも当てはまります。 Thomas はこの作業が簡単になるようユーティリティプログラムをいくつか書 いています。 smdiagsmmixer と呼ばれる ものです。

smdiag

このプログラムには 2 種類の表示モードがあります。 一つはオシロスコープのような表示で、もう一つはアイパターンのような表示です。

smmixer

このプログラムは送受信のオーディオレベルを調節するためのものです。

デバイス sm0 の Soundmodem 用に smdiag ユーティリティをアイパターンモードで起動す るには

# smdiag -i sm0 -e

デバイス sm0 の Soundmodem 用に smmixer ユーティリティを起動するには

# smmixer -i sm0

6.1.5.5. カーネル AX.25 機能が Soundmodem デバイスを使うように設 定する

Soundmodem ドライバーはカーネルの AX.25 コードが使うことのできる標準的 なネットワークデバイスを作成します。 設定は PI カードや PacketTwin カードの場合とほとんど同じです。

まず最初にデバイスに AX.25 でのコールサインを設定します。 これには ifconfig ユーティリティを使います。

# /sbin/ifconfig sm0 hw ax25 VK2KTJ-15 up

上の例では Soundmodem デバイス sm0 に AX.25 でのコー ルサイン VK2KTJ-15 を割当てています。 あるいは axparms コマンドを用いてもコールサインの 設定はできますが、デバイスを動作状態にするためにはやはり ifconfig コマンドを使う必要があります。

# ifconfig sm0 up
# axparms -setcall sm0 vk2ktj-15

次に /etc/ax25/axports に他のデバイス用に設定したの と同様な項目を作ります。 axports ファイルの項目は、そのネットワークデバイス に設定したコールサインによって関連づけられます。 つまり Soundmodem デバイスに設定したコールサインと同じコールサインの axports ファイルの項目が Soundmodem デバイスを参照 するときに使われます。

以上で他の AX.25 デバイスのときと同じように新しいデバイスを扱うことが できます。 TCP/IP の設定をしたり、ax25d が動くようにしたり、NET/ROM や ROSE の設 定をしたり、後はあなたのお望みのままです。

6.1.6. ユーザーモード版 Soundmodem デバイスを作る

カーネルコンパイル時のオプション: ありません

Thomas Sailer はカーネルのサウンドドライバーを使ってユーザーモードで動作 する Soundmodem ドライバーを作りました。 Linux がサポートするサウンドカードならどんなものでも動作するはずです。

このドライバーはユーザーモードのプログラム soundmodem というかたちで実装されています。 グラフィックインターフェイスを使った soundmodemconfig プログラムで Soundmodem ドライバー の設定やテストができます。 カーネルのサウンド機能だけでなくカーネル AX.25 の mkiss ドライバーも必 要となります。

ソフトウェアとドキュメントは http://www.baycom.org/~tom/ham/soundmodem からダウンロードできます。

6.1.7. YAM デバイスを作る

カーネルコンパイル時のオプション:
Amateur Radio support  --->
    [*] Amateur Radio support
    --- Packet Radio protocols
    <*>   Amateur Radio AX.25 Level 2 protocol
    ...
    AX.25 network device drivers  --->
    --- AX.25 network device drivers
    ...
    <?> YAM driver for AX.25
    ...

YAM とは Yet Another Modem (訳注:「またぞろモデム」とかいう意味) の略 で Nico Palermo が設計した 9600 ボーモデムです。 Linux ドライバーについての情報は http://www.teaser.fr/~frible/yam.html に、このモデムについての一般的な情報は http://www.microlet.com/yam/ にあります。

6.1.8. PI カードデバイスを作る

カーネルコンパイル時のオプション:
General setup  --->
    [*] Networking support
Network device support  --->
    [*] Network device support
    ...
    [*] Radio network interfaces
    [*] Ottawa PI and PI/2 support for AX.25

PI カードのデバイスドライバーは「pi[0-9][ab]」とい う名前のデバイスを作成します。 最初に検出された PI カードが「pi0」に、次に検出され たカードが「pi1」に、という具合です。 「a」と「b」は PI カードの二つの 物理インターフェイスに対応しています。 PI カードドライバーがカーネルに組み込んであり、かつカードが正しく検出 されたなら、以下のコマンドでネットワークデバイスの設定が可能です。

# /sbin/ifconfig pi0a hw ax25 VK2KTJ-15 up

この例では一番目に検出された PI カードの第一ポートにコールサイン VK2KTJ-15 を設定し動作状態にしています。 デバイスを使えるようにするには /etc/ax25/axports に 対応する SSID 付きコールサインの項目を書き込むだけです。

PI カードのドライバーは David Perry によって書かれました。

6.1.9. PacketTwin デバイスを作る

カーネルコンパイル時のオプション:
General setup  --->
    [*] Networking support
Network device support  --->
    [*] Network device support
    ...
    [*] Radio network interfaces
    [*] Gracilis PackeTwin support for AX.25

PacketTwin カードのデバイスドライバーは 「pt[0-9][ab]」という名前のデバイスを作成します。 最初に検出された PacketTwin カードが「pt0」に、次に 検出されたカードが「pt1」に、という具合です。 「a」と「b」は PacketTwin カード の二つの物理インターフェイスに対応しています。 PacketTwin カードドライバーがカーネルに組み込んであり、かつカードが正 しく検出されたなら、以下のコマンドでネットワークデバイスの設定が可能で す。

# /sbin/ifconfig pt0a hw ax25 VK2KTJ-15 up

この例では一番目に検出された PacketTwin カードの第一ポートにコールサイ ン VK2KTJ-15 を設定し動作状態にしています。 デバイスを使えるようにするには /etc/ax25/axports に 対応する SSID 付きコールサインの項目を書き込むだけです。

PacketTwin カードのドライバーは Craig Small VK2XLZ によって書かれました。

6.1.10. 汎用 SCC デバイスを作る

カーネルコンパイル時のオプション:
General setup  --->
    [*] Networking support
Network device support  --->
    [*] Network device support
    ...
    [*] Radio network interfaces
    [*] Z8530 SCC KISS emulation driver for AX.25

Joerg Reuter DL1BKE は Z8530 SCC を使ったカードのサポートを開発しました。 彼のドライバーはいろんなタイプのカードをサポートしています。 また KISS TNC のように見せるインターフェイスを持っていますので、あたか も KISS TNC を扱っているかのように SCC カードを扱うことができます。

6.1.10.1. 設定用ツールパッケージの入手とコンパイル

ドライバー自体は通常のカーネルの配布物に含まれていますが、Joerg は最新 バージョンのドライバーを、その設定時に必要になるツール集と一緒に配布し ています。

この設定用ツールパッケージは Joerg's web page, ftp://db0bm.automation.fh-aachen.de/incoming/dl1bke, ftp://insl1.etec.uni-karlsruhe.de/pub/hamradio/linux/z8530, ftp://ftp.ucsd.edu/hamradio/packet/tcpip/linux, ftp://ftp.ucsd.edu/hamradio/packet/tcpip/incoming などで手にいれることができます。

複数のバージョンに分かれていますが、あなたのカーネルに合った方のバージョ ンを選んでください。 z8530drv-2.4a.dl1bke.tar.gz は 2.0.* カーネル用で、 z8530drv-utils-3.0.tar.gz は 2.1.6 以降のカーネル用 です。

以下のコマンドはカーネル 2.0.30 にパッケージをインストールする際、私が 使ったものです。

# cd /usr/src
# gzip -dc z8530drv-2.4a.dl1bke.tar.gz | tar xvpofz -
# cd z8530drv
# make clean
# make dep
# make module         # ドライバーをモジュールとしてコンパイルする場合
# make for_kernel     # ドライバーをカーネルに組込む場合
# make install

以上の作業が終れば /sbin ディレクトリに三つのプログ ラムが新たにインストールされているでしょう。 gencfg, sccinit, sccstat です。 これらのプログラムを用いてドライバーの設定を行うのです。

/dev にも scc0-scc7 という名前のデバイスファ イルが新たに作成されているでしょう。 これが後で「KISS」デバイスとして使うことになるものです。

「ドライバーをカーネルに組込む場合」を選択したなら、カーネルを再度コン パイルする必要があります。 z8530 ドライバーを組込むには `make config' のところ で `Z8530 SCC kiss emulation driver for AX.25' とい う質問に「Y」と答えなければなりません。

「ドライバーをモジュールとしてコンパイルする場合」を選択したなら、 /lib/modules ディレクトリ以下の適当な場所に新しいモ ジュール scc.o ができていることでしょう。 カーネルを再度コンパイルする必要はありません。 (訳注:モジュール scc.o がなければ、カーネルを再度 コンパイルする必要があります。`make config' のところ で `Z8530 SCC kiss emulation driver for AX.25' とい う質問に「M」と答えてください。) モジュールの設定を始める前に insmod コマンドでモ ジュールをロードしておくのを忘れないように。

6.1.10.2. ドライバーの設定

z8530 SCC ドライバーはできる限り多くの種類のカードをサポートするために、 できる限り柔軟な設計となっています。 この柔軟さのために設定は多少厄介です。

パッケージにはより広い範囲について説明された文書が付属していますので、 何か問題があったときはこの文書を読むとよいでしょう。 より突っ込んだ内容など、とくに doc/scc_eng.docdoc/scc_ger.doc は目を通すとよいでしょう。 私は重要なポイントを分かりやすく言い替えているだけなのですが、 より低いレベルのあれこれについては結果的に説明していない点も結構 あります。

主要な設定ファイルは /etc/z8530drv.conf という名前 で、sccinit プログラムによって読まれます。 このファイルは主に二つの部分に分かれています。 まずハードウェアパラメーターの設定部分、次にチャンネルの設定部分という 具合です。 設定が終れば、

# sccinit

というコマンドを、ネットワークやドライバーを初期化する rc ファイルに追加するだけです。 そうすれば設定ファイルの内容通りにドライバーは初期化されるでしょう。 初期化はドライバーを使う前にする必要があります。

6.1.10.2.1. ハードウェアパラメーターの設定

最初のハードウェアパラメータの設定部分はさらにいくつかの部分に分かれて います。 各部分はそれぞれ z8530 チップ一つに対応しており、引数を伴ったキーワー ドのリストです。 このファイルにはデフォルトで 4 個までの SCC チップを指定できます。 さらに多くのチップを指定したければ scc.c#define MAXSCC 4 というところの値を増やしてくだ さい。

指定できるキーワードと引数は以下の通りです。

chip

キーワード chip は各チップを指定する部分の区切りと して使われる。 引数には何を指定しても構わない。無視される。

data_a

このキーワードでは z8530 のチャンネル「A」のデータポートアドレスを指定 する。 引数は 16 進数。例:0x300

ctrl_a

このキーワードでは z8530 のチャンネル「A」のコントロールポートアドレス を指定する。 引数は 16 進数。例:0x304

data_b

このキーワードでは z8530 のチャンネル「B」のデータポートアドレスを指定 する。 引数は 16 進数。例:0x301

ctrl_b

このキーワードでは z8530 のチャンネル「B」のコントロールポートアドレス を指定する。 引数は 16 進数。例:0x305

irq

このキーワードでは z8530 SCC が使う IRQ を指定する。 引数は 10 進数。例:5

pclock

このキーワードでは z8530 の PCLK ピンに与える周波数を指定する。 引数は単位が Hz の整数値。 このキーワードが指定されなかったときのデフォルト値は 4915200。

board

z8530 SCC カードのタイプ。引数は文字列で、指定できるものは以下の通り。

PA0HZP

PA0HZP SCC カード

EAGLE

Eagle カード

PC100

DRSI PC100 SCC カード

PRIMUS

PRIMUS-PC (DG9BL) カード

BAYCOM

BayCom (U)SCC カード

escc

このキーワードは 8580, 85180, 85280 といった拡張 SCC チップ (ESCC) の 使用を宣言するのに使う。 オプション。引数は文字列で、指定できるのは「yes」または「no」。 デフォルトは「no」である。

vector

このキーワードは PA0HZP カードの vector latch (別名intack port) (訳注: 複数の SCC カードをデイジーチェーンのようにつなぐ仕組みのこと) のアド レスを指定するのに使う。 オプション。全チップに対して vector latch は一つだけ存在する。 デフォルトは 0。

special

このキーワードは何種類かのカードで特殊な機能のレジスターのアドレスを指 定するのに使う。 オプション。デフォルトは 0。

option

このキーワードはオプション。デフォルトは 0。 (訳注:先の special で指定したレジスターに書き込む値を指定する)

代表的なカードについての設定の例は以下の通り。

BayCom USCC

chip    1
data_a  0x300
ctrl_a  0x304
data_b  0x301
ctrl_b  0x305
irq     5
board   BAYCOM
#
# SCC chip 2
#
chip    2
data_a  0x302
ctrl_a  0x306
data_b  0x303
ctrl_b  0x307
board   BAYCOM

PA0HZP SCC card

chip 1
data_a 0x153
data_b 0x151
ctrl_a 0x152
ctrl_b 0x150
irq 9
pclock 4915200
board PA0HZP
vector 0x168
escc no
#
#
#
chip 2
data_a 0x157
data_b 0x155
ctrl_a 0x156
ctrl_b 0x154
irq 9
pclock 4915200
board PA0HZP
vector 0x168
escc no

DRSI SCC card

chip 1
data_a 0x303
data_b 0x301
ctrl_a 0x302
ctrl_b 0x300
irq 7
pclock 4915200
board DRSI
escc no

PE1CHL の NOS で既にうまく動いている設定ファイルがあれば、 gencfg コマンドで NOS ドライバーのコマンドを z8530 ドライバーの設定ファイルに変換することができます。

gencfg の使い方は NET/NOS のドライバーを起動する 際のパラメーターと同じパラメーターで gencfg を起 動するだけです。 例えば、

# gencfg 2 0x150 4 2 0 1 0x168 9 4915200

この例では OptoSCC カード (訳注:PA0HZP) 用の設定ファイルの雛型が作られます。

6.1.10.3. チャンネルの設定

チャンネルの設定部分では設定しているポートに関する全てのパラメーターを 指定します。 この設定部分もまたさらにいくつかの部分に分かれています。 各部分はそれぞれ論理ポート一つに対応しています。 各 z8530 SCC は 2 ポートをサポートしますので、ハードウェアパラメーター 部分はその 2 ポートに対応して設定部分が二つあることになります。

キーワードと引数はやはり /etc/z8530drv.conf に記述 されます。 この部分はハードウェアパラメーターの後ろに来なけ ればなりません。

この部分ではキーワードの順番がとても重要です。 もっともここで説明する順番通りにすれば、ちゃんと動作するでしょう。キー ワードと引数は以下の通りです。

Note: (訳注) 以下の記述はかなり不正確な部分があります。カーネル付属文書 z8530drv.txt の方を参照してください。

device

このキーワードはポートについての定義の一番最初になければならない。 以下の設定内容を適用するデバイスファイルの名前を指定する。例: /dev/scc0

speed

このキーワードはインターフェイスのスピードをビット / 秒 (bps) の単位で 指定する。 引数は整数。例: 1200

clock

このキーワードはデータ用のクロックをどこから供給するか指定する。 指定できる値は、

dpll

通常の半二重通信

external

モデムが自分で送受信クロックを供給する

divider

全二重通信用ディバイダーを使う (ただし搭載されているとき)

mode

このキーワードは使用するデータコーディングを指定する。 指定できる値は「nrzi」または「nrz」。

rxbuffers

このキーワードは受信バッファーに割当てるメモリーの大きさを指定する。 引数は整数。例: 8 (訳注:カーネル 2.2 以降のバージョンではこのキーワー ドは廃止されている)

txbuffers

このキーワードは送信バッファーに割当てるメモリーの大きさを指定する。 引数は整数。例: 8 (訳注:カーネル2.2以降のバージョンではこのキーワー ドは廃止されている)

bufsize

このキーワードは送受信バッファーのサイズを指定する。 引数はバイト単位でフレームの全長に対応する。 したがって AX.25 ヘッダーの長さも考慮にいれること。 データフィールドの長さだけではない。 このキーワードはオプションでデフォルト値は 384

txdelay

仮想 KISS デバイスの txdelay タイマーの値。 引数は整数で単位はミリ秒。(訳注:正しくは 10 ミリ秒)

persist

仮想 KISS デバイスの persist の値。引数は整数。

slot

仮想 KISS デバイスの slottime タイマーの値。 引数は整数で単位はミリ秒。(訳注:正しくは 10 ミリ秒)

tail

仮想 KISS デバイスの txtail タイマーの値。 引数は整数で単位はミリ秒。(訳注:正しくは 10 ミリ秒)

fulldup

仮想 KISS デバイスの全二重/半二重切替え用フラッグ。 引数は整数で、1 のとき全二重、0 のとき半二重。

wait

仮想 KISS デバイスの waittime タイマーの値。 引数は整数で単位はミリ秒。(訳注:正しくは 10 ミリ秒)

min

仮想 KISS デバイスの mintime タイマーの値。引数は整数で単位は秒。

maxkey

仮想 KISS デバイスの maxkeyup タイマーの値。引数は整数で単位は秒。

idle

仮想 KISS デバイスの idletime タイマーの値。引数は整数で単位は秒。

maxdef

仮想 KISS デバイスの maxdefer タイマーの値。引数は整数。 (訳注:単位は秒)

group

仮想 KISS デバイスのグループを指定。引数は整数。

txoff

仮想 KISS デバイスの txoff フラッグ。引数は整数で単位はミリ秒。 (訳注:フラッグなので単位はない)

softdcd

仮想 KISS デバイスの softdcd フラッグ。引数は整数。

slip

仮想 KISS デバイスの slip フラッグ。引数は整数。

6.1.10.4. ドライバーの使用方法

ドライバーを使うにはデバイス /dev/scc* を KISS TNC のつながったシリアル tty デバイスのように扱えばよいだけです。 例えば SCC カードを使った Linux カーネルのネットワークを設定するには、 こんな感じです。

# kissattach -s 4800 /dev/scc0 VK2KTJ

まったく同様に NOS を使ってアタッチすることもできます。 例えば JNOS からなら、こんな感じです。

attach asy scc0 0 ax25 scc0 256 256 4800

6.1.10.5. sccstatsccparam

トラブル診断は sccstat が手助けになります。 このプログラムは SCC デバイスの現在の設定状況を表示します。使い方は、

# sccstat /dev/scc0

とすると、SCC ポート /dev/scc0 の設定と健康状態にか んする膨大な情報が表示されます。

sccparam コマンドを使えば起動後に設定を変更したり できます。 使い方は NOS の param コマンドにとてもよく似ていて、 例えばデバイスの txtail の設定を 100 ミリ秒にしたい なら、こんな感じです。

# sccparam /dev/scc0 txtail 0x8

Note: (訳注) sccparam コマンドはパラメーターに 10 進数も指定できます。

6.1.11. BPQ イーサネットデバイスを作る

カーネルコンパイル時のオプション:
General setup  --->
    [*] Networking support
Network device support  --->
    [*] Network device support
    ...
    [*] Radio network interfaces
    [*] BPQ Ethernet driver for AX.25

Linux には BPQ イーサネット互換の機能があります。 この機能を使えばイーサネット LAN を通じて他の LAN 上の BPQ を動作させ ているマシンと AX.25 プロトコルのやりとりができるようになります。

BPQ ネットワークデバイスは bpq[0-9] という名前にな ります。 デバイス bpq0 はデバイス eth0 関 連づけられ、デバイス bpq1 はデバイス eth1 に関連づけられ、といった具合です。

設定は何も厄介なことはありません。 まずは通常のイーサネットデバイスの設定をしなければなりません。 つまり、あなたのイーサネットカードをサポートするようカーネルを再構築し て、さらにイーサネットがちゃんと動作していることを確かめてください。 設定の仕方についての詳しい情報は Ethernet-HOWTO (訳注:日 本語訳) をご覧ください。

BPQ 機能の設定は、このイーサネットデバイスを AX.25 用のコールサインで 設定する必要があります。 以下のコマンドでうまくいくでしょう。

# /sbin/ifconfig bpq0 hw ax25 vk2ktj-14 up

繰り返しますが、ここで指定するコールサインは /etc/ax25/axports の中でそのポートに割当てようとす る項目のそれと一致していなければなりません。

6.1.12. BPQ Node から Linux AX.25 機能に通信ができるように設定す る

BPQ イーサネットは通常マルチキャストアドレスを使用しますが、Linux では 違います。 Linux での実装は代わりに通常のイーサネットブロードキャストアドレスを使 います。 そのため BPQ ODI ドライバー用の NET.CFG ファイルは以下のように書換える 必要があるでしょう。

LINK SUPPORT

        MAX STACKS 1
        MAX BOARDS 1

LINK DRIVER E2000                    ; または使うカードに合う MLID

        INT 10                       ;
        PORT 300                     ; 使うカードに合わせて

        FRAME ETHERNET_II

        PROTOCOL BPQ 8FF ETHERNET_II ; BPQ に必要 PID は変更可

BPQPARAMS                            ; オプション デフォルトのターゲッ
                                     ; トアドレスを上書きしたい時のみ

        ETH_ADDR  FF:FF:FF:FF:FF:FF  ; ターゲットアドレス

6.2. /etc/ax25/axports ファイルを作る

/etc/ax25/axports はテキストエディターなんかで簡単 に書けるファイルです。 この /etc/ax25/axports ファイルの書式は以下のように なります。

ポート名  コールサイン  ボーレート  パケット長  ウィンドウ  備考

ここで、

ポート名

ポートを参照するときの名前

コールサイン

ポートに割当てる AX.25 用のコールサイン

ボーレート

TNC と接続するスピード (訳注:無線のボーレートではない)

パケット長

AX.25 の接続状態で使う最大のパケット長 (PACLEN)

ウィンドウ

AX.25 のウィンドウ (K) パラメーター、 TNC で言うところの MAXFRAME に相当

備考

ポートの説明を書くところ

という意味になります。私の場合はこんな感じです。

radio    VK2KTJ-15       4800        256     2       4800bps 144.800 MHz
ether    VK2KTJ-14       10000000    256     2       BPQ/ethernet device

AX.25 の各ポートにはそれぞれ SSID 付きコールサインを重複しないよう割当 てなければなりません。 使いたい AX.25 のそれぞれのデバイスについて一項目ずつ作ります。 ここで言うデバイスとは KISS, Baycom, SCC, PI, PT, Soundmodem などです。 それぞれの項目が AX.25 ネットワークデバイスを表します。 このファイルの各項目は SSID 付きコールサインによってネットワークデバイ スと関連づけられます。 というのが SSID 付きコールサインを重複しないように付ける理由なのです。

6.3. AX.25 ルーティングの設定

ある特定のホスト向けにデフォルトのデジピーターの経路を設定したいとかあ りますよね。 通常の AX.25 の接続でも IP による接続でも、そうしておくと便利です。 axparms コマンドを使えばこれは可能です。 man ページを見てもらえば十分な情報が載っているの ですが、まぁ簡単な例を示せばこんな感じです。

# /usr/sbin/axparms -route add radio VK2XLZ VK2SUT

このコマンドは radio という名前の AX.25 ポートに VK2XLZVK2SUT を経由するとい うデジピーター用の項目を設定します。