APRSのiGate局を日本全国に増やしていきたいので、当局が日本で一番優しいと思われるラズベリーパイ3+RTL-SDRドングル+DireWolfで構築する受信専用iGate局の設定マニュアルを書いてみました。
なお、内容を改善する為内容は随時加筆しますので、その点はご了承お願いします。
RTL-SDRというアプリが144.66MHzを受信して音声データーを取得、DireWolfというアプリがその音声データーからパケットデーターへ変換(デコード)し、その内容APRSのサーバーへ送信するという構成で実現されていると思っています。(違ってたらごめんなさい!)
尚、DireWolfの説明書きには1200bps/9600bps対応って書いていますが、当局は1200bpsしか試したことはありませんので、その旨ご理解をお願いします。)
これを行うにあたっては、ラズベリーパイ3がインストール出来て初期設定が終わった段階から始める内容で書いています。なので、Linuxから始まり、bash*1だとかvim*2が多少使えないと、この内容はチンプンカンプンだと思います。
当局はLinuxについては全くの独学です。
現在会社ではCentOS7のサーバー上でPHP+MySQLでのデーターベースサーバー運用や、自宅では同CentOS7のサーバー上で、ブログの公開やキャシュサーバー、メールサーバーの運用をしています。
サーバーにはモニタはつながってなくて、すべてWin機からリモートアクセスメンテナンスをしています。
頑張ればなんとかなるモノです。覚えはじめの頃は変なコマンド打ってサーバーが起動できなくなったりとか、そんなんばっかりでした。まぁそれでも死ぬわけではないし、ハードが壊れるわけでないし。
では頑張って始めましょー!
・ラズベリーパイ3 本体
・マイクロSDカード 16GBとか32GBとか。おそらくiGateやるだけなら16GBで大丈夫かと。
・ACアダプタ ラズベリーパイ3用
・ケースとヒートシンク 基板むき出しだと、金属物落としたらパチッてなって終わりますので。
・USBマウスとキーボード ラズベリーパイ3用ではなくてもWindowsPCから一時借用でもOK
・HDMIケーブルかDVI→HDMI変換コネクタか、VGA→HDMI変換コネクタ
将来的にはマウスもキーボードもHDMI変換も使わなくなりますが。
・SDRドングル RTL2832Uとか書かれていれば動くと思います。
・アンテナ変換コネクタ 当局はM型コネクタをBN型コネクタに変換後MCX-P/BNC-J変換ケーブルでUSBドングルにアンテナを接続しています。
・PC用モニタ
・WindowsPC あれば良いですね。設定その他が楽になります。
・LAN環境 無線LANでも有線LANでも構わないです。安定するなら有線LANでしょうけど、アンテナの位置による同軸ケーブルの制約を受ける可能性とかを考えると、やはり無線LANのほうがラズベリーパイ3の置場と取り回しが便利になると思います。
一番手っ取り早いのは、アマゾンなどから一式セットになったスターターキットを買うのが良いと思います。私も最初はそうしました。
2台目は本体とケースを別々に買って。
その時のケースは金属ケースにして、ちょっとおしゃれ!になんて思いまして。
Linuxでは、OSの管理全般はアドミニストレータと呼ばれるユーザーID"root"と、一般ユーザー(IDは任意)、に分けられます。
一般ユーザーはOSの動作そのものにまつわるモノは一切手出しできないと考えてください。
なので、一般ユーザーはラズベリーパイ3の/home/pi以外のディレクトリは操作できない、それ以外の例えば/etc以下のファイルを操作する場合は、"root"でログインするか"sudo"で管理者権限でコマンドを実行する必要があります。
この説明書きでは管理者権限で、とか、一般ユーザーでとか、あるいはコマンドの先頭に"#"が書かれていれば管理者権限、"$"が書かれていれば一般ユーザーで実行していると考えてください。
普通にOSをインストールする。
→これはネットを調べると、いくらでも例題が出てきます。ググった結果はここをクリック。
・言語設定から、タイムゾーンやキーボードやWiFi地域設定とかです。
インターフェースでsshを使う設定を忘れないでください。忘れても常にラズベリーパイ3の画面を見て設定する方は結構ですが、普通はラズベリーパイ3には電源と受信用アンテナの同軸ケーブルだけがつながり、残りの全ての設定をリモートから操作するのが一般的だと思います。
・ユーザーrootとユーザーpiのパスワード設定はしておいてください。また設定したパスワードは忘れないようにメモをしておいてください。
管理者権限*3で
/etc/wpa_supplicant.confに下記を追加。
ターミナル上でのコマンドは、
#vim /etc/wpa_supplicant/wpa_supplicant.conf
です。書く前に[i]を押して挿入モードにしないと文章が打てません。挿入モードを抜けるときは[esc]を押します。vimの基本中の基本なので忘れないでください。下に出てくるcrontabの編集時も[i]を押さないと編集できません。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
ssid="BuffaloG"←あなたの無線ルーターのSSIDを書いてください。
psk="XXXXXXXXXXXXX"←ここはあなたのルーターにアクセスするためのpskキーを書いてください。
key_mgmt=WPA-PSK
}
下はvimで開いたwpa_supplicant.confです。pskキーは都合ぼかしています。
ipを固定しないと、例えばWindowsPCからssh*4でアクセスするとき毎回ラズベリーパイ3のipを調べるとかしないといけないので管理者権限で/etc/dhcpcd.confファイルに下記を追加します。
interface wlan0
static ip_address=192.168.11.11←付与したいipを書きます。
static routers=192.168.11.1←無線ルーターのipアドレスを書きます。
static domain_name_servers=192.168.11.1←無線ルーターのipアドレスを書きます。
これでWindowsPCからssh接続ができるようになりました。
下の画像は/etc/dhcpcd.confをvimで開いた画像です。
その後ターミナル上で管理者権限でrebootします。
#reboot[ENTER]
ターミナル上で一般ユーザー"pi"で
$sudo apt-get install rtl-sdr
を実行します。
管理者権限で/etc/modprobe.d/rtlsdr-blacklist.conf に以下を記入します。
blacklist dvb_usb_rtl28xxu
blacklist rtl2830
blacklist dvb_usb_v2
blacklist dvb_core
ターミナル上で管理者権限でrebootします。
#reboot[ENTER]
USBにSDRドングルを刺します。
その後ターミナルから下記を打ち、テストを実施します。
ここは一般ユーザー"pi2"でもOKです。
$ rtl_test -t
下記のメッセージが出れば認識されています。
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8
33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
Sampling at 2048000 S/s.
No E4000 tuner found, aborting
ターミナル上からのapt-get install direwolfのインストールでは、バージョンの古い方がインストールされるかもしれないので、gitでcloneし手動インストールします。
ターミナル上一般ユーザー"pi"で
$cd /home/pi
$git clone https://www.github.com/wb2osz/direwolf
$cd direwolf
$make
そうしたら
Makefile.linux:270: *** /usr/include/alsa/asoundlib.h does not exist. Install it with "sudo apt-get install libasound2-dev" or "sudo yum install alsa-lib-devel" . 中止.
とasoundlib.hファイルが無いと怒られたので、
ターミナル上で
$sudo apt-get install libasound2-dev します。
もう一回make
今度はいきました。
$sudo make install
つぎは
$make install-conf
です。
その次に/home/pi/sdr.confにコールサイン、APRSサーバーログインコードを書きます。
ターミナル上で一般ユーザー"pi"でcd /home/piして
$vim sdr.conf
します。
以下は私のsdr.confです。
#
# Sample configuration for SDR read-only IGate.
#
# We might not have an audio output device so set to null.
# We will override the input half on the command line.
ADEVICE null null
CHANNEL 0
MYCALL JE7JCX-10
# First you need to specify the name of a Tier 2 server.
# The current preferred way is to use one of these regional rotate addresses:
# noam.aprs2.net - for North America
# soam.aprs2.net - for South America
# euro.aprs2.net - for Europe and Africa
# asia.aprs2.net - for Asia
# aunz.aprs2.net - for Oceania
IGSERVER sapporo.aprs2.net←ネットを調べて近い場所のサーバーを書いてください。
# You also need to specify your login name and passcode.
# Contact the author if you can't figure out how to generate the passcode.
IGLOGIN JE7JCX-10 XXXXX←XXXXXには自分のパスコードを書いてください。
# That's all you need for a receive only IGate which relays
# messages from the local radio channel to the global servers.
下はvimで開いたsdr.confの画像です。
その次は/home/pi/direwolf.confの編集です。
ターミナル上一般ユーザー権限で
vim direwolf.conf
で編集します。
私の場合書くのは
MYCALL JE7JCX-10
IGLOGIN JE7JCX-10 XXXXX
OBEACON sendto=IG DELAY=0:10 EVERY=30:00 OBJNAME=JE7JCX-10 SYMBOL=\& overlay=I lat=40^17.54N long=140^49.76E comment="RaspberryPi3 RX-Only iGate 144.66MHz 1.2kbps OP:Nara"
だけです。
/home/pi/dw-start.shを編集します。ターミナル上一般ユーザーでvim dw-start.shで編集できます。書く内容は下記だけです。
rtl_fm -f 144.66M -p 20 -o 4 - 2>/var/log/direwolf/rtl_fm.log | direwolf -c /home/pi/direwolf.conf -t 0 -n 1 -r 24000 -b 16 - 2> /var/log/direwolf/error.log 1>/var/log/direwolf/output.log &
上の文章は、direwolfの実行と、ログファイル*5に書き出す設定を書いています。
vim上でdw-start.shを開いた画像です。色はついていますが、書いていることは同じです。
一般ユーザー権限でcd /home/pi/でsh dw-start.shを実行
ログファイルが作れないと言うエラーが出るので、ターミナル上管理者権限で
mkdir /var/log/direwolfする。
chown pi:pi /var/log/direwolfします。
chmod 777 /var/log/direwolfします。
その次にターミナル上で
cd /var/log/direwwolfします。
ターミナル上でtouch error.logします。
ターミナル上でtouch output.logします。
ターミナル上から管理者権限で/etc/rc.localをvimで編集します。
#vim /etc/rc.local
/bin/sh /home/pi/dw-start.shを行頭の#が連続して終わったあたりに記入します。
下の画像はvimでrc.localを開いた画像です。
管理者権限でリブートします。
#reboot
一般ユーザーでログインし、ターミナル上でps aux | grep direwolfで起動しているか確認します。
root 542 11.4 0.5 123396 5516 ? Sl 20:13 18:51 direwolf -c /home/pi/direwolf.conf -t 0 -n 1 -r 24000 -b 16 -
と表示が出ていれば起動に成功しています。
APRSサーバーのステータスを確認し、JE7JCX-10がログインしているか確認します。
WindowsPCのブラウザで
http://211.132.61.243:14501/
を確認し、JE7JCX-10が表示されていることを確認します。
そのまま動かして、ちゃんとサーバーへPBEACONを出しているか、aprs.fiのグラフで確認します。
APRSハンディトランシーバーか、APRSモービル機で近所を歩き走ってちゃんと受信パケットをサーバーに送っているか確認します。
http://aprs.fiで奇跡が表示されるかどうかを見ます。
下の画像は、DireWolfの受信パケット出力のログです。
/var/log/direwolf/output.logです。
管理者権限でターミナルから
#cat /var/log/direwolf/output.log
を打つことで見ることが出来ます。
なにげにラズベリーパイ3のログファイルがどんどん増えていくので、一定期間で消す設定をします。
編集するファイルは
/root/log_del.shです。←名前はなんでも良いです。
管理者権限で
#vim /root/log_del.sh
書く内容は、
#!/bin/bash : > /var/log/Xorg.o.log : > /var/log/Xorg.0.log : > /var/log/auth.log : > /var/log/boot.log : > /var/log/btmp : > /var/log/daemon.log : > /var/log/cron.log : > /var/log/debug.log : > /var/log/debug : > /var/log/dmesg : > /var/log/dpkg.log : > /var/log/kern.log : > /var/log/last.log : > /var/log/lastlog : > /var/log/messages.log : > /var/log/messages : > /var/log/syslog : > /var/log/user.log : > /var/log/wtmp.log : > /var/log/wtmp : > /var/log/alternatives.
これをcrontabに書いて、実行するとログファイルサイズは0になります。
下の画像はvimでlog_del.shを開いた画像です。
編集が終わったら念のため管理者権限で、
#chmod +x log_del.sh
を行い、実行権限を付与してください。
crontabの編集は
#crontab -e
で開いたファイルの最終行に下記を追加してください。
05 00 * * 0 /bin/sh /root/log_del.sh
書いたら、[esc][:][w][q][enter]で保存終了してください。
書いた内容は日曜日の0時5分に/root/log_del.shのファイルを実行するという意味です。
その後、
#systemctl restart cron[return]
で追加した最下行の設定が読み込まれます。
ラズベリーパイ3はWifiが切れるという巷の噂があるので、5分おきにルーターへアクセスし、切断しないような対策を講じます。編集するファイルは
/home/pi/reconne_wifi.sh
です。
$vim /home/pi/reconne_wifi.sh
中身は
#!/bin/sh
ping -c 1 192.168.11.X←このipは各自のルーターのipで適選変えてください。
test $? -eq 1 && sudo /etc/ifplugd/action.d/action_wpa wlan0 up
編集が終わったら、
chmod +x reconne_wifi.sh
を実行し、実行権限を付与してください。
今度はそのファイルを5分おきに実行するため、ターミナル管理者権限で
#crontab -e
をタイプしcronファイルの編集を行います。
下記の1行を追加します。
※/5 * * * * sh /home/pi/reconne_wifi.sh 1&2 >> /var/log/cron.log
5分おきに実行し、結果を/var/log/cron.logに書き出す設定です。
ターミナル上管理者権限でcrontab -lしてちゃんと保存されているのが確認できたら、
管理者権限で
#systemctl stop cron
#systemctl start cron
あるいは、
#systemctl reload cron
で設定のリロードでもOKかと思います。
できましたー!これでOKでーす!受信専用iGateが完成です。おまけに、ここまでの苦悩を乗り越えれれば、Linuxユーザーの中入りを果たしていることと思います。
晩酌しながら、これを打つのは大変でした。。。(涙)日本のアマチュア無線家でAPRSに興味のある局長さんがいらっしゃいましたら、これで安価なiGate設置をお願いします。ここまでで1万円かかっていませんので。
質問問合せ等は「valkyrieあっと10324.dip.jp」までお願いします。
あっとは「@」に変えて送信をお願いします。
あるいはここをクリックしてもメールを送信できます。
2019年11月3日記 JE7JCX