Saturday, May 20, 2023

Raspberry Piで、APRSの受信I-Gate構築(RTL-SDR & direwolf)

APRSの受信I-Gateに使っているRaspberry Piが調子が悪くなりました。
WIFIが繋がらず、updateしてもアップデートがない、になってしまいます。
ググってみると解決策はあるようですが、上級者向けの内容で難しそう。

ということで、OS再インストール。
SDカードもヘタっているので、新品のSDカードにしました。

最新のRaspberry Pi OSで、RTL-SDR & direwolfを使ったAPRSの受信I-Gateを作る方の参考なりそうなので、手順を記録しました。

尚、自分のラズパイは、「Raspberry Pi 2 Model B Rev 1.1」です。

Raspberry Pi公式サイトに行ってみると、以前は、Raspbianという名前だったOSは、Raspberry Pi OSになっていました。
微妙に、LGBTをもじったような名前が、まずかったので、変えたのかな?!

OSインストールはずいぶん簡単になりました。
公式サイトのRaspberry Pi OS Imagerを使うと、OSイメージのダウンロード&SDカードへの書き込みをいっぺんにやってくれます。楽だ~

まず、Micro SDカードを、Windowsパソコンに入れます。ノートパソコンだとMicro SDカードリーダー内蔵の機種もありますが、デスクトップの場合は、USB接続のカードリーダーなどが必要です。

ダウンロードした、Raspberry Pi OS Imagerを立ち上げます。


APRSサーバーなので、バージョンは、Raspberry Pi OS (Other)のRaspberry Pi OS Lite (32-bit)を選びました。

1分くらいでインストール完了。



2023年5月現在の最新バージョンのOSがインストールされました。

Raspberry Pi OS Lite
Release date: May 3rd 2023
System: 32-bit
Kernel version: 6.1
Debian version: 11 (bullseye)


次に、インストールしたSDカード(正確に言えば、Micro SDカード)をラズパイに挿して、電源をつなぎます。

最初に、WIFIの設定とSSHの有効化を行う必要があります。

簡単に言うと、wpa_supplicant.confにWIFIのSSIDとパスワードを書き込む。こんな感じにします。

pi@raspberrypi:~ $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
        ssid="SSID名"
        psk="パスワード"
}
pi@raspberrypi:~ $ 

詳しくは、ググってください。すみません。

そして、ヘッドレス(ディスプレイつながない)で運用するには、固定IP&ssh有効化したほうが良いので、します。

固定IPにするには、 /etc/dhcpcd.conf の最後に下記のような内容を追加。

interface wlan0
static ip_address=192.168.30.152/24
static routers=192.168.30.1
static domain_name_server=192.168.30.1

更に、sudo raspi-config を実行して、
 3 Interface Options    Configure connections to peripherals    
を選び、ssh有効化します。
あと、できれば、 /etc/ssh/sshd_configを編集して、22番以外のポートにsshの待ち受けポートを変更したほうが良いかもしれません。

あと、設定ファイルのバックアップをWindowsマシンにコピーしたりするのに、ラズパイにSambaを入れたほうが便利です。

インストール後、/etc/samba/smb.confの最後に、こんな感じのいいかげんな共有フォルダ作成しています。

[share]
  comment = share
  path = /share
  browsable = yes
  guest ok = yes
  read only = no

これで準備OK。

sudo shutdownして、ラズパイをベランダ(アンテナ)の近くに設置。

ここから後の作業は、部屋からssh経由で、ヘッドレスのラズパイに繋いで操作します。

尚、sshは、昔はTeraTermとかPuTTYを使っていましたが、今は、Chrome拡張機能のSecure Shellを愛用。
chromeを同期すると、全てのPCで同じ設定が使えるので超便利。

これで準備が整ったので、APRS関係のソフトをインストールします。
自分が以前に書いた記事にも書いていますが、再度書きます。

まず、ソフト類をインストール。
sudo apt-get install rtl-sdr
sudo apt-get install direwolf
sudo apt-get install screen


上記3つのソフトをapt-getでインストールした後、direwolfの設定ファイルを書きます。

自分の場合は、RTL-SDRのドングル2つを使って、1200bps (144.66MHz), 9600bps(144.64MHz)の両方対応の、RX-only I-Gateをやっています。


↑ RTL SDRはけっこう加熱するので冷却ファンつけています。
 アンテナ1つで2受信機ですので、第一電波工業のSS500で分配しています。

1200bpsの設定ファイルは、こんな感じ。

ADEVICE null null
CHANNEL 0
MYCALL 7N3RLX-10
IGSERVER asia.aprs2.net 
MODEM 1200
AGWPORT 8002
KISSPORT 8003
IGLOGIN 7N3RLX-10 パスワード
OBEACON sendto=IG DELAY=0:10 EVERY=10:00 OBJNAME=7N3RLX-10 SYMBOL=\& overlay=R lat=36^03.33N long=138^15.45E  comment="RX-Only I-Gate 144.66MHz 1200bps"

上記を、簡単に説明します。
・サウンドカードではなく、RTL SDRを使うので、オーディオデバイスは使わず、rtl_fmからパイプで入ってきた音データをdirewolfで処理する
・I-Gateサーバーへの接続情報
・AGWPE互換ソフトからdirewolfに接続できるように、ポート設定しています(これは任意です)
・OBEACONの命令で、aprs.fiに、自分のI-Gate局のアイコンを表示させる

上記内容をテキストファイルに保存します。例えば、nano my1200bps.conf

これを実行するには、
sudo rtl_fm -d 0 -f 144.66M - | direwolf -t 0 -c /home/pi/my1200bps.conf -r 24000 -D 1 
みたいな感じにします。

-D 0が一番目の(に認識された)RTL SDR
-D 1が二番目の(に認識された)RTL SDR
という意味です。自分は2つあるので、ここでは、-D 1のほうを指定しています。

これで、RTL SDRで受信した音データがパイプでdirewolfに渡されて、direwolfが位置情報をI-Gateサーバーへアップします。

尚、上記で実験運用はできます。しかし、画面閉じると、全部止まってしまいます。
そのため、I-Gate局として運用するには、screenというソフトを使います。

screenは、本来はターミナル上でマルチタスクを実現する便利ソフトなんですが、このようにCLI上で動くソフトをログオフしても動かし続ける目的にも使えます。

こんな感じになります。

screen -dmS direwolfs12 bash -c 'su - pi -c "rtl_fm -d 0 -f 144.66M - | direwolf -t 0 -c /home/pi/igate/sdr.conf -r 24000 -D 1 -"'

これを自動起動したい場合は、/etc/rc.localに記入すればOKです。(または、/etc/rc.localから別のシェルスクリプトを起動する)

screenを使えば同時に複数のdirewolfを実行できるので、RTL-SDR 4本使えば、145MHz & 430MHzで1200bps & 9600 bpsを受信する、などということもできます。

自分は、以前は、430MHzのAPRS受信も含めて、RTL SDR 4本でやっていましたが、茅野市近辺では利用者が誰もいないので、やめました。山岳回折でたまーに佐久のほうの430MHz I-Gateのビーコンが聞こえた程度です。
2mがガラガラなので、430MHz APRSを使う意味がないのかな。(尚、1エリアでは、430MHz APRSも使われているようです)


一応、上記の通りにすれば、raspberry Piで、受信オンリーのI-Gateが構築できるはずです。

自分は、このRTL SDR + direwolfの受信I-Gateを5年くらい運用していますが、安定している感じです。特に何もしなくてもずっと動いています。Linuxできる方なら、数時間もあれば簡単に作れると思います。いかがでしょうか?