YAMモデムを使う


Yet Another Modemというのは、イタリア生まれのパケット無線用モデムです。

電源不要で、RS-232Cの信号で動作します。

Bell202 1200bps/マンチェスターエンコーディング2400bps/G3RUH 9600bpsが出るそうです。

坊農さんはじめsetsの方のお世話で1台分入手することが出来ました。

今現在では日本に10枚程度しかないそうで、ある意味貴重品かもしれません。

基盤とFPGAのセットでIV3NWVのnico氏のHPから注文できるようです。

部品の手配もしてくださり、2000/9/24に姫路で製作会を行い、ほとんどの人が一発で動作という驚くほどの再現性で皆がびっくりという代物です。

詳しい内容は坊農さんのHPを見てください。


YAMモデムをLinuxで使うためのインストール手順です。

Plamo 2.1/kernel2.2.16以降での作業です。


1 カーネルの再構築

YAM modemはAmateru Radio Supportにあります。

maachan@je4smq(82)% su
Password:
bash# cd /usr/src/linux
bash# make menuconfig

<M> YAM driver for AX.25

Mしか選べないようです。

あとはmake dep; make clean ; make bzlilo ; make modules ; make modules_installします。

YAMの設定を行うyamcfgはax25-toolsの導入で/usr/sbinに作られるようです。

普通のTNCが使えている方はそのままで良いようです。


2 YAMモデムの接続先

シリアルポートのどこを使うかを決めます。

DOSでのデバイス名 Linuxでのデバイス名 IOBASE IRQ ネットワークデバイス名 備考
com1 ttyS0 0x3f8 4 yam0  
com2 ttyS1 0x2f8 3 yam1  
com3 ttyS2 0x3e8 ? yam2 IRQ4ではttyS0と衝突するのでハード設定を空いている別の値にする
com4 ttyS3 0x2e8 ? yam3 IRQ3ではttyS1と衝突するのでハード設定を空いている別の値にする

私はAMD-TNC(G3RUHで使用)の置換えとしてttyS0にしました。

マザーボードによっては動かないことがあるそうです。

うちのAOpen AX6BCでは動きました。

また、JustyのISA 2S1Pカード JIF-01Bでも大丈夫でした。

以下はttyS0での記述です。


3 YAMモデムの初期化を含めた現在の起動時スクリプト

TNC関係の初期化を集めた/etc/rc.d/rc.ax25です。

/etc/rc.d/rc.inet1の最後から呼んでいます。

YAMモデムはG3RUH 9600bpsでの設定です。

Soundmodemの設定もひっそりあるので興味のある方は試して下さい。

ax.25関係は全てモジュールにしています。

#!/bin/sh
insmod ax25
insmod netrom
insmod rose
insmod mkiss
#echo 'soundmodem initialize'
#insmod hdlcdrv
#indmod soundmodem
#Crystal
#insmod soundmodem mode="wss:afsk1200" iobase=0x530 irq=11 dma=3
#SoundBlaster
#insmod soundmodem mode="sbc:afsk1200" iobase=0x220 irq=5 dma=3
#Crystal
#sethdlc -p -i sm0 mode wss:afsk1200 io 0x530 irq 11 dma 3 pario 0x378
#sethdlc -p -i sm0 mode wss:psk4800 io 0x530 irq 11 dma 3 pario 0x378
#sethdlc -p -i sm0 mode wss:fsk9600 io 0x530 irq 11 dma 3 pario 0x378
#SoundBlaster
#sethdlc -p -i sm0 mode sbc:afsk1200 io 0x220 irq 5 dma 3 pario 0x378
#Timing
#sethdlc -i sm0 -a txd 500 slot 10 ppersist 10 half
#/sbin/ifconfig sm0 133.93.32.4 hw ax25 je4smq-5
#smmixer -i sm0 s=mic i=23 o=0
#
echo yam attach  ここから
insmod yam
setserial /dev/ttyS0 uart none
#/usr/local/yam/yam96v13.mcs
/usr/sbin/yamcfg yam0 iobase 0x3f8 irq 4 bitrate 9600 txdelay 250 txtail 10 slottime 1 persist 128
/sbin/ifconfig yam0 133.93.32.4 netmask 255.255.255.0 hw ax25
je4smq-4 up
#
#                ここまで
#
echo 'KPC-4 2port'
/usr/sbin/mkiss -s 9600 -h /dev/ttyS1 /dev/ptyq0 /dev/ptyq1
echo 'port attach'
#/usr/sbin/kissattach -m 512 /dev/ttyS0 ax0 133.93.32.4
/usr/sbin/kissattach -m 512 /dev/ttyq0 ax0 133.93.32.4
/usr/sbin/kissattach -m 512 /dev/ttyq1 ax1 133.93.32.4
/usr/sbin/kissattach -m 512 /dev/ttyS2 ax2 133.93.32.4
/usr/sbin/kissparms -p ax0 -t 500 -r 10 -s 10
/usr/sbin/kissparms -p ax1 -t 500 -r 10 -s 10
/usr/sbin/kissparms -p ax2 -t 500 -r 10 -s 10
#/usr/sbin/kissparms -p ax3 -t 500 -r 10 -s 10
echo 'network configure'
/sbin/ifconfig ax0 133.93.32.4 netmask 255.255.255.255 up
/sbin/ifconfig ax0 broadcast 133.93.32.255 mtu 216
/sbin/ifconfig ax1 133.93.32.4 netmask 255.255.255.255 up
/sbin/ifconfig ax1 broadcast 133.93.32.255 mtu 216
/sbin/ifconfig ax2 133.93.32.4 netmask 255.255.255.255 up
/sbin/ifconfig ax2 broadcast 133.93.32.255 mtu 216
#/sbin/ifconfig ax3 133.93.32.4 netmask 255.255.255.255 up
#/sbin/ifconfig ax3 broadcast 133.93.32.255 mtu 216
#/sbin/ifconfig sm0 133.93.32.4 netmask 255.255.255.255 up
#/sbin/ifconfig sm0 broadcast 133.93.32.255
#
# YAMモデムのIPの設定
#
/sbin/ifconfig yam0 133.93.32.4 netmask 255.255.255.255 up
/sbin/ifconfig yam0 broadcast 133.93.32.255 mtu 1008
#
echo 'route set'
#/sbin/route add -host dwa window 4096 ax2
/sbin/route add -host dwa ax0
/sbin/route add -host wdu ax0
/sbin/route add -host yva ax2
#JA5CWZはYAMモデムでの接続先
/sbin/route add -host cwz yam0
#note pc(linux)
#/sbin/route add -host linux window 4096 ax0
/sbin/route add -host jtp1 gw cwz
/sbin/route add -net 172.25.252.0 netmask 255.255.255.0 gw cwz
/sbin/route add -net 133.93.32.0 netmask 255.255.255.0 gw dwa
#arp lock(Digipeat)
#arp -H ax25 -s dwa jg4dwa-1
#digipeat route set
#axparms -route add ax1 ja5adw-2 jh5yne-2
echo 'NET/ROM start'
nrattach -i 133.93.32.4 netrom
/sbin/ifconfig nr0 133.93.32.4 netmask 255.255.255.255 up
/sbin/ifconfig nr0 broadcast 133.93.32.255 mtu 216
netromd -i -t 30
echo 'mheard log start'
/usr/sbin/mheardd -f -n20
echo 'ax25d start'
/usr/sbin/ax25d
echo 'console user add'
axparms -assoc je4smq maachan

/etc/ax25/axports

# /etc/ax25/axports
#
# The format of this file is:
#
# name callsign speed paclen window description
#
ax0 JE4SMQ-1 9600 512 7 (PORT 1)
ax1 JE4SMQ-2 9600 512 7 (PORT 2)
ax2 JE4SMQ-3 9600 512 7 (PORT 3)
ax3
JE4SMQ-4 9600 512 7 (PORT 4)
#   ^^^^^^^^ yam0のcallsignをax3として指定
#            nodeやlistenでのポート名として使用
#            soundmodemも同様な方法で指定する

再起動してifconfigを見てちゃんとUP RUNNINGか見てください。

maachan@je4smq(87)% ifconfig yam0
yam0 Link encap:AMPR AX.25 HWaddr JE4SMQ-4
inet addr:133.93.32.4 Mask:255.255.255.255
UP RUNNING MTU:1008 Metric:1
RX packets:82 errors:0 dropped:0 overruns:11 frame:0
TX packets:103 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
Interrupt:4 Base address:0x3f8


おまけ

起動中にtxdelay等を書き換えたいので、yamの設定部分だけのスクリプトです。

ifconfigで一度インターフェースを停止してから書き換えて、再度設定をしているだけです。

txdは250msが限界でした。

ping程度のパケットは1秒も送信しません。

persistentはもっと上げても良いかも知れません。

chmod +x を忘れないように。

#!/bin/sh
ifconfig yam0 down
setserial /dev/ttyS0 uart none
/usr/sbin/yamcfg yam0 iobase 0x3f8 irq 4 bitrate 9600 txdelay 250 txtail 10 slottime 1 persist 128
/sbin/ifconfig yam0 133.93.32.4 netmask 255.255.255.0 hw ax25 je4smq-4 up
/sbin/ifconfig yam0 133.93.32.4 netmask 255.255.255.255 up
/sbin/ifconfig yam0 broadcast 133.93.32.255 mtu 1008
route add cwz yam0


おまけ2

JA5CWZ対向での速度

1200bpsよりは速いけど、こんなものなんでしょうか。

listenで見てみるとどうもYAM同士ではなく普通のkiss TNC対向ではax.25ドライバがmtuを制限してしまうようです。

YAMドライバはYAM同士では非常に良く出来ています。

あと、相手のpersistentが低いのかslottimeが長いのか、数秒立ってから応答があることがありました。

maachan@je4smq(80)% ftp cwz
Connected to ja5cwz.sman.prug.or.jp.
220 ja5cwz.sman.prug.or.jp FTP server (Version wu-2.4.2-academ[BETA-18-VR14](1) Wed Feb 17 01:40:19 JST 1999) ready.
Name (cwz:maachan): XXX
331 Password required for XXX.
Password: himitu
230 User XXX logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> bin
200 Type set to I.
ftp> put penman.txt
local: penman.txt remote: penman.txt
200 PORT command successful.
150 Opening BINARY mode data connection for penman.txt.
226 Transfer complete.
53452 bytes sent in 193 secs (0.27 Kbytes/sec)
ftp>


最初へ戻る

inserted by FC2 system