□Raspberry Piでパケット通信!?
いや、たぶん出来るとおもうんですよね、Pi2のスペックなら…
dnf search ax25
> libax25-devel.armv7hl : Development files for libax25
> ax25-tools-docs.armv7hl : Documentation for ax25-tools and ax25-tools-x
> libax25.armv7hl : AX.25 library for hamradio applications
> ax25-apps.armv7hl : AX.25 ham radio applications
> ax25-tools.armv7hl : Tools used to configure an ax.25 enabled computer
> ax25-tools-x.armv7hl : X tools used to configure an AX.25 enabled computer
まだありますね、パッケージ。
ほかにもHAM関連では、
> linpsk.armv7hl : Psk31 and RTTY program for Linux
> xpsk31.armv7hl : GTK+ graphical version of lpsk31 for Ham Radio
> lpsk31.armv7hl : A ncurses application for ham radio communications using PSK31 digital mode
dnf -y install libax25 libax25-devel ax25-apps ax25-tools
dnf -y install soundmodem soundmodem-devel
で、あとはsoundmodemの設定。
mkdir /etc/ax25/
としてディレクトリを作ってから、X-Windowが動いていれば
soundmodemconfig
として設定してもいいし、ダイレクトに設定ファイルを生成してもいい。
cat > /etc/ax25/soundmodem.conf
--------- <?xml version="1.0"?> <modem> <configuration name="RaspberryPi2"> <channel name="Channel 0"> <mod mode="afsk" bps="1200" f0="1200" f1="2200" diffenc="1"/> <demod mode="afsk" bps="1200" f0="1200" f1="2200" diffdec="1"/> <pkt mode="MKISS" ifname="sm0" hwaddr="JS1FVG-10" ip="192.168.10.1" netmask="255.255.255.0" broadcast="192.168.10.255"/> </channel> <chaccess txdelay="150" slottime="100" ppersist="40" fulldup="0" txtail="10"/> <audio type="soundcard" device="/dev/dsp" halfdup="0"/> <ptt file="none"/> </configuration> </modem> ---------
で、起動してみても…あれれ?Failですよ?
というわけで、ステータスを見てみると…
> # systemctl status soundmodem.service -l
> ● soundmodem.service – Soundcard Packet Radio Modem
> Loaded: loaded (/usr/lib/systemd/system/soundmodem.service; enabled; vendor preset: disabled)
> Active: failed (Result: exit-code) since Thu 1970-01-01 09:00:14 JST; 45 years 11 months ago
> Process: 306 ExecStart=/usr/sbin/soundmodem –daemonize (code=exited, status=1/FAILURE)
>
> Jan 01 09:00:13 mydns-adapter.local systemd[1]: Starting Soundcard Packet Radio Modem…
> Jan 01 09:00:14 mydns-adapter.local soundmodem[306]: sm[345]: audio: Error, cannot open “/dev/dsp”
> Jan 01 09:00:14 mydns-adapter.local soundmodem[306]: sm[345]: cannot start audio
> Jan 01 09:00:14 mydns-adapter.local soundmodem[306]: sm[306]: SoundModem init failed
> Jan 01 09:00:14 mydns-adapter.local systemd[1]: soundmodem.service: Control process exited, code=exited status=1
> Jan 01 09:00:14 mydns-adapter.local systemd[1]: Failed to start Soundcard Packet Radio Modem.
> Jan 01 09:00:14 mydns-adapter.local systemd[1]: soundmodem.service: Unit entered failed state.
> Jan 01 09:00:14 mydns-adapter.local systemd[1]: soundmodem.service: Failed with result ‘exit-code’.
/dev/dspなんてねーよ、とのこと。
http://wikiwiki.jp/tetsuya/?asoundrc
ふむふむ…今は中身がないのね。
> # more /etc/asound.conf
> #
> # Place your global alsa-lib configuration here…
> #
cat > /etc/asound.conf
--------- pcm.!default { type hw card 0 }
ctl.!default { type hw card 0 } ---------
として、
cat > /etc/ax25/soundmodem.conf
--------- <?xml version="1.0"?> <modem> <configuration name="RaspberryPi2"> <channel name="Channel 0"> <mod mode="afsk" bps="1200" f0="1200" f1="2200" diffenc="1"/> <demod mode="afsk" bps="1200" f0="1200" f1="2200" diffdec="1"/> <pkt mode="MKISS" ifname="sm0" hwaddr="JS1FVG-10" ip="192.168.10.1" netmask="255.255.255.0" broadcast="192.168.10.255"/> </channel> <chaccess txdelay="120" slottime="100" ppersist="40" fulldup="0" txtail="10"/> <audio type="alsa" device="plughw:0,0" halfdup="0"/> <ptt file="none"/> </configuration> </modem> ---------
systemctl restart soundmodem systemctl status soundmodem -l
お?今度は動いたみたいですよ。
…ん? 「/etc/asound.conf」これかんけいなくね?
なくてもいけた。:-)
で、ip aしてみると…
> # ip a
> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
> link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
> inet 127.0.0.1/8 scope host lo
> valid_lft forever preferred_lft forever
> inet6 ::1/128 scope host
> valid_lft forever preferred_lft forever
> 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
> link/ether b8:27:eb:ce:3a:ba brd ff:ff:ff:ff:ff:ff
> inet 192.168.100.81/24 brd 192.168.100.255 scope global eth0
> valid_lft forever preferred_lft forever
> inet 192.168.81.81/24 brd 192.168.81.255 scope global eth0:99
> valid_lft forever preferred_lft forever
> inet6 fe80::ba27:ebff:fece:3aba/64 scope link
> valid_lft forever preferred_lft forever
> 6: sm0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 256 qdisc fq_codel state UNKNOWN group default qlen 10
> link/ax25 94:a6:62:8c:ac:8e:14 brd a2:a6:a8:40:40:40:00
> inet 192.168.10.1/24 brd 192.168.10.255 scope global sm0
> valid_lft forever preferred_lft forever
ちゃんとsm0ができました。
あとは
ping 192.168.10.2
とかすると、ピギャーというはず。
chaccessのパラメータがゆとりを持たせてあるので、送信しないこともあるけれどどど… 🙂
これでサウンドモデムの下準備は出来たので、続いてAX.25関連の設定をする。
cat > /etc/ax25/axports
--------- # # The format of this file is: # # name callsign speed paclen window description # sm0 JS1FVG-10 1200 192 5 XXX.XXMHz (1200 bps) ---------
cat > /etc/ax25/ax25d.conf
--------- # # ax25d Configuration File. # # AX.25 Ports begin with a '['. # [JS1FVG VIA sm0] NOCALL * * * * * * L default * * * * * * - root /usr/sbin/ttylinkd ttylinkd # [JS1FVG-11 VIA sm0] NOCALL * * * * * * L default * * * * * * - root /usr/sbin/node node ---------
本来NET/ROMは<>で囲って
/etc/ax25/node.conf
/etc/ax25/node.perms
に設定する。
むかーしむかしJFにそういう説明があった。
http://archive.linux.or.jp/JF/JFdocs/AX25-HOWTO/x1714.html
ほかに必要なファイルがあるので(中身は空だけど)作成しておく。
cat > /etc/ax25/nrports
--------- # # The format of this file is: # # name callsign alias paclen description # ---------
cat > /etc/ax25/rsports
--------- # # The format of this file is: # # name address description # ---------
で、あとは
/usr/sbin/ax25d
として起動すればOK。
で、あとは
cat > /etc/init.d/ax25d
--------- #!/bin/sh # # chkconfig: 345 51 51 # description: Turn AX.25 daemon # ### BEGIN INIT INFO # Short-Description: Turn AX.25 daemon # Description: Turn AX.25 daemon ### END INIT INFO
# Source function library. . /etc/rc.d/init.d/functions
prog="ax25d" lockfile=/var/lock/subsys/ax25d
start() { echo -n $"Starting $prog: " daemon /usr/sbin/ax25d RETVAL=$? echo [ $RETVAL = 0 ] && touch $lockfile return $RETVAL }
stop() { echo -n "Stopping $prog: " killproc ax25d RETVAL=$? echo [ $RETVAL = 0 ] && rm -f $lockfile return $RETVAL }
restart() { stop start }
case "$1" in start) start ;; stop) stop ;; force-reload|restart|reload) restart ;; try-restart|condrestart) [ -f $lockfile ] && restart ||: ;; status) status $prog ;; *) echo $"Usage: $0 {start|stop|restart|contrestart|status}" exit 3 ;; esac
exit $RETVAL ---------
chmod 755 /etc/init.d/ax25d chkconfig --level 345 ax25d on
とすると、再起動時に必ず soundmodem と ax25d が起動する。
あとはxfbbでもインストール?
PTTのON/OFFはGPIOで出来るのかな?
<ptt file="none" hamlib_model="" hamlib_params="" gpio="0″/>
こんな設定がいけるみたいだけどホントかなぁ?
ふむふむ、GPIOのひとつにシリアルのRTSかなんかを出力するようにしたのか。
3.3VなRasPiだから、トランジスタスイッチでも何でもいいから、何らかの保護
回路入れないと壊れるよ、って書いてあるね。
確かにこれでPTTの制御は出来そうです。
さて、無線機がなぁ…TH-K48は処分してしまったし、といういまさらパケット?だし。
それよりもPSK31とかの方が面白そうだけど、そもそもHFのアンテナが広げられない。
そもそも今の無線機はフィルターが狭すぎて、9600bpsですら通らないしね。
そうそう、こんなことやってたね。
この分だときっとまた数年後に「やりたいなー」とか思ってなんかいじったりするんだろうな。