S_PB030551.jpg

JE7JCXです。


前書き

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におけるユーザーの考え方

Linuxでは、OSの管理全般はアドミニストレータと呼ばれるユーザーID"root"と、一般ユーザー(IDは任意)、に分けられます。

一般ユーザーはOSの動作そのものにまつわるモノは一切手出しできないと考えてください。

なので、一般ユーザーはラズベリーパイ3の/home/pi以外のディレクトリは操作できない、それ以外の例えば/etc以下のファイルを操作する場合は、"root"でログインするか"sudo"で管理者権限でコマンドを実行する必要があります。

この説明書きでは管理者権限で、とか、一般ユーザーでとか、あるいはコマンドの先頭に"#"が書かれていれば管理者権限、"$"が書かれていれば一般ユーザーで実行していると考えてください。

最初に

普通にOSをインストールする。

→これはネットを調べると、いくらでも例題が出てきます。ググった結果はここをクリック。

初期設定

・言語設定から、タイムゾーンやキーボードやWiFi地域設定とかです。

インターフェースでsshを使う設定を忘れないでください。忘れても常にラズベリーパイ3の画面を見て設定する方は結構ですが、普通はラズベリーパイ3には電源と受信用アンテナの同軸ケーブルだけがつながり、残りの全ての設定をリモートから操作するのが一般的だと思います。

・ユーザーrootとユーザーpiのパスワード設定はしておいてください。また設定したパスワードは忘れないようにメモをしておいてください。

WiFi設定

管理者権限*3



/etc/wpa_supplicant.confに下記を追加。

ターミナル上でのコマンドは、

#vim /etc/wpa_supplicant/wpa_supplicant.conf

です。

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キーは都合ぼかしています。

20191103-001.JPG

LANのIP固定設定

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で開いた画像です。

20191103-002.JPG

その後ターミナル上で管理者権限でrebootします。

#reboot[ENTER]

RTL-SDRアプリのインストール

ターミナル上で一般ユーザー"pi"で
$sudo apt-get install rtl-sdr

を実行します。

RTL-SDRの設定

管理者権限で/etc/modprobe.d/rtlsdr-blacklist.conf に以下を記入します。

blacklist dvb_usb_rtl28xxu

blacklist rtl2830

blacklist dvb_usb_v2

blacklist dvb_core



ターミナル上で管理者権限でrebootします。

#reboot[ENTER]

SDRドングルのテスト

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

DireWolfのインストール~

ターミナル上からの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の編集

その次に/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の画像です。

20191103-005.JPG

direwolf.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"

だけです。

dw-start.shの編集

/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を開いた画像です。色はついていますが、書いていることは同じです。

20191103-003.JPG

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します。

rc.locallの編集

ターミナル上から管理者権限で/etc/rc.localをvimで編集します。

#vim /etc/rc.local

/bin/sh /home/pi/dw-start.shを行頭の#が連続して終わったあたりに記入します。

下の画像はvimでrc.localを開いた画像です。

20191103-004.JPG

再起動

管理者権限でリブートします。

#reboot

direwolfの起動確認

一般ユーザーでログインし、ターミナル上で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のサーバーにログイン成功、パケットを送れているか確認します。

APRSサーバーのステータスを確認し、JE7JCX-10がログインしているか確認します。

WindowsPCのブラウザで

http://211.132.61.243:14501/
を確認し、JE7JCX-10が表示されていることを確認します。

そのまま動かして、ちゃんとサーバーへPBEACONを出しているか、aprs.fiのグラフで確認します。

実パケット受信確認

APRSハンディトランシーバーか、APRSモービル機で近所を歩き走ってちゃんと受信パケットをサーバーに送っているか確認します。

http://aprs.fiで奇跡が表示されるかどうかを見ます



20191103capture.JPG




下の画像は、DireWolfの受信パケット出力のログです。

/var/log/direwolf/output.logです。

管理者権限でターミナルから

#cat /var/log/direwolf/output.log

を打つことで見ることが出来ます。

20191107_capture.JPG

ログファイル消去設定 現在ファイルを消すのではなく、ファイルサイズを0にする方法を確認しています。少々お時間をください。

なにげにラズベリーパイ3のログファイルがどんどん増えていくので、一定期間で消す設定をします。

編集するファイルは

/etc/cron.daily/log_del.shです。←名前はなんでも良いです。

管理者権限で

#vim /etc/cron.daily/log_del.sh

書く内容は、

#!/bin/bash

/usr/bin/find /var/log/ -name '*.log' -mtime +7 -delete

/usr/bin/find /var/log/ -name '*.old' -mtime +7 -delete

/usr/bin/find /var/log/ -name '*log' -mtime +7 -delete

/usr/bin/find /var/log/ -name '*.log.*' -mtime +7 -delete

/usr/bin/find /var/log/ -name 'messages' -mtime +7 -delete

/usr/bin/find /var/log/ -name '*.gz' -mtime +7 -delete

これで、ほとんどのログファイルが1週間で消えます。

下の画像はvimでlog_del.shを開いた画像です。

20191103-006.JPG

新しく追加するときは最後の行をコピーペーストし、*.gzの表現を変えればOKです。

編集が終わったら念のため管理者権限で、

#chmod +x log_del.sh

を行い、実行権限を付与してください。

WiFi切断対策

ラズベリーパイ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







ラズベリーパイ3

アマチュア無線

TopPage


*1 Windowsでいうコマンドプロンプト
*2 Windowsでいう高機能版メモ帳、ファイルの開き方など操作方法はここでは割愛します。vimだけでこのページが終わってしまうほど高機能です。
*3 rootでログインしvim wpa_supplicant.confを実行するか、一般ユーザーでsudo vim wpa_supplicant.confを実行
*4 Linux系OSのリモートアクセスの一つの方法です。
*5 2は異常時の意味でerror.logに、1は正常時でoutput.logに書き出すという意味。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS