fr24feedが正常に自動起動するようにする

この記事は、自宅に設置したアンテナとRTL-SDRレシーバで航空機の飛行状況を取得し、FlightRadar24にフィードして情報共有する話の続き。fr24feedはデータをフィードするソフトウエア。piawareはFlightAwareにフィードするソフトウエア。dump1090-faはRTL-SDRレシーバで受信したADS-Bの信号を文字にして出力するデコーダソフトウエア。

先日の設定で、fr24feedが一応正常に動いているようなのだが、システムを再起動するとfr24feedのFR24 MLATでフェイルが発生する。この状態だとFlightRadar24では「接続しているがオフライン」という扱いになるみたい。フィードが停止するようなのでそれは困る。

$ fr24feed-status
[ ok ] FR24 Feeder/Decoder Process: running.
[ ok ] FR24 Stats Timestamp: 2020-03-12 10:15:00.
[ ok ] FR24 Link: connected [UDP].
[ ok ] FR24 Radar: *-******.
[ ok ] FR24 Tracked AC: 0.
[ ok ] Receiver: connected (0 MSGS/ SYNC).
[FAIL] FR24 MLAT: not running ... failed!

要するに異常だが、これはfr24feedサービスを再起動すると正常になる。
つまりfr24feedの起動タイミングが悪いっぽい。

systemdによるサービスの起動順序とタイミングを調べてみる。

$ systemd-analyze plot > ~/systemd-analyze.svg
ホームディレクトリに出力されたsystemd-analyze.svgは一応画像形式だけど、ブラウザで見るのがおすすめ。

systemdのサービス起動順序 1
これによるとdump1090-faが起動してからfr24feedが立ち上がり、後にpiawareが起動している。fr24feedよりpiawareが先の方が良い筈なので順序指定をしてやれば良さそう 。しかし、仮にfr24feedをpiawareより後にしても、piaware起動開始とほぼ同タイミングだとまだ失敗する可能性がある。Linuxの普通の作法では、おそらくサービスはrc.localが実行される前に全て起動させるのだろうが、rc.localの中でdump1090exporterを起動する前に20秒ほどsleepする処理を入れているのでこれが待ち時間としては最適かもと思った。だから、fr24feedはrc.localの後に実行させることにした。これならpiawareの起動開始タイミングから20秒(と少し)後にfr24feedが起動する筈。

例によって fr24feed を停めて無効化してからサービスのファイルを編集して有効化させる。

$ sudo service fr24feed stop   ←サービス停止
$ sudo systemctl disable fr24feed ←サービス無効化

/etc/systemd/system/fr24feed.service (ファイルの最初の辺りを編集)
[Unit]
Description=Flightradar24 Decoder & Feeder
#After=network-online.target  ←元の設定をコメント化、または行削除
After=rc-local.service   ←変更後(追加した)

$ sudo systemctl enable fr24feed ←サービス有効化
$ sudo shutdown -r now   ←システム再起動

systemdのサービス起動順序 2
システム起動後に再度サービスの起動順序とタイミングを確認する。
今度は指定通りに最後の方のrc-localサービスが完了した後にfr24feedが起動している。

$ fr24feed-status
[ ok ] FR24 Feeder/Decoder Process: running.
[ ok ] FR24 Stats Timestamp: 2020-03-12 11:01:27.
[ ok ] FR24 Link: connected [UDP].
[ ok ] FR24 Radar: *-******.
[ ok ] FR24 Tracked AC: 7.
[ ok ] Receiver: connected (16266 MSGS/0 SYNC).
[ ok ] FR24 MLAT: ok [UDP].
[ ok ] FR24 MLAT AC seen: 4.

ステータス表示も意図したとおりになった。(確認はシステム起動後1分は待ってから)

関連記事:

fr24feedのログ出力が訳がわからないので消した話

システム監視 1

FlightRadar24におそらく正常にフィードできるようになって翌朝、いつものようにシステムの稼働状況を確認していたら飲んでたお茶を吹き出しそうになった。

システム監視 2
上側のグラフがメモリの使用状況で、朝9:00に日替わり処理で何かしらが行われてキャッシュ・バッファが100MBほど減少した。このホストは元々はタイムゾーンを日本時間にしていたんだけど、昨日の記事のようにfr24feedが文句を言うのでGMT+0にした。だから、日本より9時間遅れの時刻を指して動いているので日替わり処理は朝の9時に行われる。
で、メモリの方は使用量が減っているのでそれで良いんだけど、下側のグラフがディスクの仕様状況で、水色が朝9:00にドカンと跳ね上がっている。 (前日の20:00頃にガクンと減っているのはログファイルが溜まっていたのを消したから。)
この水色はログを格納する/var/logのパーティション。グラフはそれぞれのパーティションの使用割合いなので例えば50%になったらディスク全容量の半分を喰ったということではなく、分割されたそれぞれの領域の中の半分を喰ったということ。

$ df -BM
Filesystem     1M-blocks  Used Available Use% Mounted on
udev                172M    0M      172M   0% /dev
tmpfs                48M    6M       43M  13% /run
/dev/mmcblk0p1    14777M 1867M    12731M  13% /
tmpfs               240M    1M      240M   1% /dev/shm
tmpfs                 5M    0M        5M   0% /run/lock
tmpfs               240M    0M      240M   0% /sys/fs/cgroup
tmpfs               240M    1M      240M   1% /tmp
/dev/zram0           49M   19M       27M  43% /var/log   ←これ
tmpfs                48M    0M       48M   0% /run/user/1000

今回のホストは16GBのMicroSDカードをストレージにしているシングルボードコンピューターなので今どきのPCに登載されているHDDやSSDとは桁違いに低容量。その/var/log領域はもともと僅か50MBしか確保されていない。この領域はZRAMなのでメモリ上に圧縮されて存在している。その半分近くが一瞬で喰われたらねぇ。

fr24feed ログ
しかも、そのログが内容の詰まった情報ならまだしも、(昨日も書いたけど)上の画像のような凄い無駄の塊。そして、昨日正常にフィードが行なわれるようになってからログを消したにも関わらず、今朝9:00に書き出されたのは昨日のフィードが正しく行われていなかった時間帯のステータスの変化。
その大量のデータを朝9:00にログに書き出すまでどこに溜め込んでいたのか知らないけど、MicroSDカードの領域に書き込んでたのなら勘弁して欲しい。というかfr24feedはRaspberry Pi用なら容量の関係で迂闊にログ出力して欲しくないってことも、書き換え耐性が低いMicroSDカードに書き込んで欲しくないってことも解ってる筈でしょ?

$ sudo zramctl
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram1 lzo         239.6M 31.8M 10.6M 11.5M       4 [SWAP]
/dev/zram0 zstd           50M   19M  5.1M  5.7M       4 /var/log   ←これ

MicroSDカードに書き込むシングルボードコンピュータ用のLinuxならおそらくログ用のパーティションはZRAMなどのメモリディスクなどに割り当てられている筈。ログパーティションは書き換えが多いのでMicroSDカードを壊さないためにもこれがありがたい。しかし、この手のシングルボードコンピュータはメモリ登載量が少ないので割り当てられる容量も極小に。ZRAMは圧縮が効くので50MB割り当てても実際のメモリの使用量はそれよりだいぶ小さい。

$ ls -l /var/log/fr24feed
total 18492
-rw-r--r-- 1 root root 18932825 Mar 10 00:00 fr24feed.log

日替わり時に一気に19MB吐き出されたログ。その後は増えていない。最後の記録が正常にフィードできるようになる前のだし。
ログは出力しない設定にしたつもりだったけど、ステータスの変化しまくった翌日?にこんな突然大量に吐き出されたら怖い。
そこで、この /var/log/fr24feed/fr24feed.log を消して /dev/null にシンボリックリンクしておいた。

$ sudo rm /var/log/fr24feed/fr24feed.log ←削除
$ sudo ln -s /dev/null /var/log/fr24feed/fr24feed.log ←シンボリックリンクを張る
$ ls -l /var/log/fr24feed
total 0
lrwxrwxrwx 1 root root 9 Mar 10 07:34 fr24feed.log -> /dev/null ←確認

これでfr24feedが「王様の耳はロバの耳」って叫んでもそのまま消えて無くなるのでめでたしめでたし。
ただし、異変には気付けるようにしておかないと。
一応、dump1090-exporterでdump1090-faが動いていることは監視しているので後はフィードが順調かどうかを確認できようにしたいところ。Prometheus+Grafanaで監視できるようにpiaware-exporterとかfr24feed-exporterとか出ないかしら?

以上、いつもにも増してしょーもない日記でスミマセン。

関連記事:

FlightRadar24にフィードする

今回のキモはdump1090-faを使ってFlightAwareとFlightRadar24の両方にフィードするというもの。

前回はFlightAwareにフィードするようにした。今回はFlightRadar24にフィードさせたい。もちろん、FlightAwareへのフィードはそのまま継続するのでFlightRadar24へのフィードを追加するだけとなる。
FlightAwareはフィード用のソフトウエアのソースを公開しているのでバイナリが用意されていないプラットフォームではビルドすれば良いというのに対し、FlightRadar24ではソースを見つけられなかったのでパッケージ等が用意されていないプラットフォームではツライ?(探し方が悪いだけかもしれない)
今回もarm64のOrange Pi Zero Plusを使用するのだが、arm64用パッケージ等は用意されていないっぽい。RaspberryPi用の用(armel, armhf)なら一応動く筈なのでそれで我慢するしかない。
Raspberry Pi向けにはFlightRadar24向けフィード用クライアントのインストール用のスクリプトが用意されているのでそれを実行する。要するにRaspberry Piでのインストール方法そのまま。もちろんそれだけでは済まないんだけど。

fr24feedのインストール

もしもFlightRadar24のアカウントを所有していなければ1つ取得する。すでにアカウントを持っているならそのアカウントで登録したメールアドレスが判っていること。そのアカウントで登録したメールアドレスが必要。

以下はFlightRadar24にフィードを行うホストで実行する。

$ sudo bash -c "$(wget -O - https://repo-feed.flightradar24.com/install_fr24_rpi.sh)"
--2020-03-08 22:17:31--  https://repo-feed.flightradar24.com/install_fr24_rpi.sh
Resolving repo-feed.flightradar24.com (repo-feed.flightradar24.com)... 104.17.45.52, 104.17.43.52, 104.17.46.52, ...
Connecting to repo-feed.flightradar24.com (repo-feed.flightradar24.com)|104.17.45.52|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1281 (1.3K) [application/x-sh]
Saving to: ‘STDOUT’

-                             100%[==============================================>]   1.25K  --.-KB/s    in 0s      

2020-03-08 22:17:32 (8.52 MB/s) - written to stdout [1281/1281]

Hit:1 http://httpredir.debian.org/debian buster InRelease
Get:2 http://security.debian.org buster/updates InRelease [65.4 kB]
Get:3 http://httpredir.debian.org/debian buster-updates InRelease [49.3 kB]    
Get:4 http://httpredir.debian.org/debian buster-backports InRelease [46.7 kB]          
Hit:5 https://apt.armbian.com buster InRelease       
Get:6 http://httpredir.debian.org/debian buster-backports/main armhf Packages.diff/Index [27.8 kB]
Get:7 http://httpredir.debian.org/debian buster-backports/main arm64 Packages.diff/Index [27.8 kB]
Get:8 http://httpredir.debian.org/debian buster-backports/main arm64 Contents (deb).diff/Index [27.9 kB]
Get:9 http://httpredir.debian.org/debian buster-backports/main armhf Contents (deb).diff/Index [27.9 kB]
Get:10 http://httpredir.debian.org/debian buster-backports/main armhf Packages 2020-03-07-2013.52.pdiff [582 B]
Get:10 http://httpredir.debian.org/debian buster-backports/main armhf Packages 2020-03-07-2013.52.pdiff [582 B]
Get:11 http://httpredir.debian.org/debian buster-backports/main arm64 Packages 2020-03-07-2013.52.pdiff [583 B]
Get:11 http://httpredir.debian.org/debian buster-backports/main arm64 Packages 2020-03-07-2013.52.pdiff [583 B]
Get:12 http://httpredir.debian.org/debian buster-backports/main arm64 Contents (deb) 2020-03-07-2013.52.pdiff [415 B]
Get:12 http://httpredir.debian.org/debian buster-backports/main arm64 Contents (deb) 2020-03-07-2013.52.pdiff [415 B]
Get:13 http://httpredir.debian.org/debian buster-backports/main armhf Contents (deb) 2020-03-07-2013.52.pdiff [416 B]
Get:13 http://httpredir.debian.org/debian buster-backports/main armhf Contents (deb) 2020-03-07-2013.52.pdiff [416 B]
Fetched 275 kB in 7s (39.6 kB/s)                                                                                    
Reading package lists... Done
Reading package lists... Done
Building dependency tree       
Reading state information... Done
dirmngr is already the newest version (2.2.12-1+deb10u1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Executing: /tmp/apt-key-gpghome.3uIyDpFGem/gpg.1.sh --recv-key --keyserver pool.sks-keyservers.net 40C430F5
gpg: key C969F07840C430F5: public key "Flightradar24 <support@fr24.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1
Hit:1 http://security.debian.org buster/updates InRelease
Hit:2 http://httpredir.debian.org/debian buster InRelease                                                           
Get:3 http://repo.feed.flightradar24.com flightradar24 InRelease [13.0 kB]                                          
Hit:5 http://httpredir.debian.org/debian buster-updates InRelease                            
Hit:6 http://httpredir.debian.org/debian buster-backports InRelease
Get:7 http://repo.feed.flightradar24.com flightradar24/raspberrypi-stable armhf Packages [475 B]
Hit:4 https://apt.armbian.com buster InRelease        
Fetched 13.5 kB in 3s (4,304 B/s)
Reading package lists... Done
N: Skipping acquire of configured file 'raspberrypi-stable/binary-arm64/Packages' as repository 'http://repo.feed.flightradar24.com flightradar24 InRelease' doesn't support architecture 'arm64'
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  gcc-8-base:armhf libc6:armhf libgcc1:armhf libstdc++6:armhf
Suggested packages:
  glibc-doc:armhf locales:armhf
Recommended packages:
  libidn2-0:armhf
The following NEW packages will be installed:
  fr24feed:armhf gcc-8-base:armhf libc6:armhf libgcc1:armhf libstdc++6:armhf
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 6,402 kB of archives.
After this operation, 15.6 MB of additional disk space will be used.
Get:1 http://httpredir.debian.org/debian buster/main armhf gcc-8-base armhf 8.3.0-6 [191 kB]
Get:2 http://httpredir.debian.org/debian buster/main armhf libgcc1 armhf 1:8.3.0-6 [37.2 kB]     
Get:3 http://httpredir.debian.org/debian buster/main armhf libc6 armhf 2.28-10 [2,390 kB]          
Get:4 http://repo.feed.flightradar24.com flightradar24/raspberrypi-stable armhf fr24feed armhf 1.0.24-7 [3,446 kB]
Get:5 http://httpredir.debian.org/debian buster/main armhf libstdc++6 armhf 8.3.0-6 [338 kB]
Fetched 6,402 kB in 8s (840 kB/s)                                                                                   
Preconfiguring packages ...
Selecting previously unselected package gcc-8-base:armhf.
(Reading database ... 55491 files and directories currently installed.)
Preparing to unpack .../gcc-8-base_8.3.0-6_armhf.deb ...
Unpacking gcc-8-base:armhf (8.3.0-6) ...
Selecting previously unselected package libgcc1:armhf.
Preparing to unpack .../libgcc1_1%3a8.3.0-6_armhf.deb ...
Unpacking libgcc1:armhf (1:8.3.0-6) ...
Selecting previously unselected package libc6:armhf.
Preparing to unpack .../libc6_2.28-10_armhf.deb ...
Unpacking libc6:armhf (2.28-10) ...
Selecting previously unselected package libstdc++6:armhf.
Preparing to unpack .../libstdc++6_8.3.0-6_armhf.deb ...
Unpacking libstdc++6:armhf (8.3.0-6) ...
Selecting previously unselected package fr24feed:armhf.
Preparing to unpack .../fr24feed_1.0.24-7_armhf.deb ...
Unpacking fr24feed:armhf (1.0.24-7) ...
Setting up gcc-8-base:armhf (8.3.0-6) ...
Setting up libc6:armhf (2.28-10) ...
Setting up libgcc1:armhf (1:8.3.0-6) ...
Setting up libstdc++6:armhf (8.3.0-6) ...
Setting up fr24feed:armhf (1.0.24-7) ...
You don't seem to have any dump1090 installed. On the fr24feed start it will automatically install dump1090-mutability.
Created symlink /etc/systemd/system/multi-user.target.wants/fr24feed.service → /etc/systemd/system/fr24feed.service.
Processing triggers for libc-bin (2.28-10) ...
20-03-08 22:21:07.179 [E] Local time: 2020-03-08 22:21:07 +0900
error | GMT+0 time: 2020-03-08 13:21:07 +0900
error | Your machine should be set as GMT+0 time zone!
warning | Time zone is not set to GMT+0
______  _  _         _      _                    _              _____    ___ 
|  ___|| |(_)       | |    | |                  | |            / __  \  /   |
| |_   | | _   __ _ | |__  | |_  _ __  __ _   __| |  __ _  _ __`' / /' / /| |
|  _|  | || | / _` || '_ \ | __|| '__|/ _` | / _` | / _` || '__| / /  / /_| |
| |    | || || (_| || | | || |_ | |  | (_| || (_| || (_| || |  ./ /___\___  |
\_|    |_||_| \__, ||_| |_| \__||_|   \__,_| \__,_| \__,_||_|  \_____/    |_/
               __/ |                                                         
              |___/                                                          
[main][i]FR24 Feeder/Decoder
[main][i]Version: 1.0.24-7/generic
[main][i]Built on Nov  7 2019 11:23:04 (HEAD-be32703.git/Linux/static_armel)
[main][i]Running on: debian10
[main][i]Local IP(s): 192.168.***.*** fdc1:****:****::****
[main][i]Copyright 2012-2019 Flightradar24 AB
[main][i]https://www.flightradar24.com
[main][i]DNS mode: PING

Welcome to the FR24 Decoder/Feeder sign up wizard!

Before you continue please make sure that:

 1 - Your ADS-B receiver is connected to this computer or is accessible over network
 2 - You know your antenna's latitude/longitude up to 4 decimal points and the altitude in feet
 3 - You have a working email address that will be used to contact you
 4 - fr24feed service is stopped. If not, please run: sudo systemctl stop fr24feed

To terminate - press Ctrl+C at any point


Step 1.1 - Enter your email address (username@domain.tld)
$:hoge@example.com  ←FlightRadar24アカウントで登録したメールアドレス

Step 1.2 - If you used to feed FR24 with ADS-B data before, enter your sharing key.
If you don't remember your sharing key, you can find it in your account on the website under "My data sharing".
https://www.flightradar24.com/account/data-sharing

Otherwise leave this field empty and continue.
$:

Step 1.3 - Would you like to participate in MLAT calculations? (yes/no)$:yes

IMPORTANT: For MLAT calculations the antenna's location should be entered very precise!

Step 3.A - Enter antenna's latitude (DD.DDDD)
$:35.****   ←アンテナ設置場所の緯度

Step 3.B - Enter antenna's longitude (DDD.DDDD)
$:136.****  ←アンテナ設置場所の経度

Step 3.C - Enter antenna's altitude above the sea level (in feet)
$:400  ←アンテナ設置場所の海抜(デタラメでなく)

Using latitude: 35.xxxx, longitude: 136.xxxx, altitude: 400ft above sea level

Validating email/location information...OK

The closest airport found is ICAO:RJNG IATA:*** near ****.  ←直近の空港(勝手に表示される)

Latitude: 3x.xxxxxx   ←直近の空港の緯度(勝手に表示される)
Longitude: 13x.xxxxxx  ←直近の空港の経度(勝手に表示される)
Country: Japan

Flightradar24 may, if needed, use your email address to contact you regarding your data feed.

Would you like to continue using these settings?

Enter your choice (yes/no)$:yes

We have detected that you already have a dump1090 instance running. We can therefore automatically configure the FR24 feeder to use existing receiver configuration, or you can manually configure all the parameters.

Would you like to use autoconfig (*yes*/no)$:yes

Step 6 - Please select desired logfile mode:
 0 -  Disabled
 1 -  48 hour, 24h rotation
 2 -  72 hour, 24h rotation
Select logfile mode (0-2)$:1  ←普通は0で良い筈

Submitting form data...OK

Congratulations! You are now registered and ready to share ADS-B data with Flightradar24.
+ Your sharing key (**共有鍵**) has been configured and emailed to you for backup purposes.
+ Your radar id is *-**レーダーID**, please include it in all email communication with us.
+ Please make sure to start sharing data within one month from now as otherwise your ID/KEY will be deleted.

Thank you for supporting Flightradar24! We hope that you will enjoy our Premium services that will be available to you when you become an active feeder.

To start sending data now please execute:
sudo systemctl start fr24feed

Saving settings to /etc/fr24feed.ini...OK
Installation and configuration completed!

設定は、やり直しができるし結局は設定ファイルの/etc/fr24feed.ini(他に/var/cache/piawareのファイルなども)が書き換わるというものなのでそれを編集しても良いので間違って登録しても大丈夫。ただし、大切なフィード用の共有鍵がここで発行されていることに注意。発行された共有鍵はFlightRadar24からメールでも届くし、FlightRadar24のウェブサイト上でも表示されるのでコンソールログを失っても設定ファイルを消してしまっても大丈夫ではあるけど。あと、レーダーIDも発行される。

動作ステータスの確認

$ sudo service fr24feed status
● fr24feed.service - Flightradar24 Decoder & Feeder
   Loaded: loaded (/etc/systemd/system/fr24feed.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-03-08 22:47:11 JST; 3min 56s ago
  Process: 6620 ExecStartPre=/usr/lib/fr24/install_dump1090.sh (code=exited, status=0/SUCCESS)
  Process: 6624 ExecStartPre=/usr/lib/fr24/unregister_kernel_modules.sh (code=exited, status=0/SUCCESS)
  Process: 6628 ExecStartPre=/usr/lib/fr24/create_missing_directories.sh (code=exited, status=0/SUCCESS)
 Main PID: 6631 (fr24feed)
    Tasks: 18 (limit: 410)
   Memory: 9.5M
   CGroup: /system.slice/fr24feed.service
           └─6631 /usr/bin/fr24feed

Mar 08 22:47:11 orangepizeroplus systemd[1]: Starting Flightradar24 Decoder & Feeder...
Mar 08 22:47:11 orangepizeroplus systemd[1]: Started Flightradar24 Decoder & Feeder.
動作はしているかな程度。まぁエラーでなさそうならOK.

FlightRadar24にフィードする 1
ブラウザでfr24feedが動いているホストのポート8754を開く。(http://IPアドレス:8754)
ステータスが正常風に表示されることもあるようだが、しばらく見ているとステータスが頻繁に変わり接続切れやエラーなど滅茶苦茶。

もう一つのステータスを見てみる。
$ fr24feed --status
20-03-09 09:34:21.803 [E] Local time: 2020-03-09 09:34:21 +0900
error | GMT+0 time: 2020-03-09 00:34:21 +0900
error | Your machine should be set as GMT+0 time zone!
warning | Time zone is not set to GMT+0
2020-03-09 09:34:21 | ______  _  _         _      _                    _              _____    ___ 
2020-03-09 09:34:21 | |  ___|| |(_)       | |    | |                  | |            / __  \  /   |
2020-03-09 09:34:21 | | |_   | | _   __ _ | |__  | |_  _ __  __ _   __| |  __ _  _ __`' / /' / /| |
2020-03-09 09:34:21 | |  _|  | || | / _` || '_ \ | __|| '__|/ _` | / _` | / _` || '__| / /  / /_| |
2020-03-09 09:34:21 | | |    | || || (_| || | | || |_ | |  | (_| || (_| || (_| || |  ./ /___\___  |
2020-03-09 09:34:21 | \_|    |_||_| \__, ||_| |_| \__||_|   \__,_| \__,_| \__,_||_|  \_____/    |_/
2020-03-09 09:34:21 |                __/ |                                                         
2020-03-09 09:34:21 |               |___/                                                          
2020-03-09 09:34:21 | [main][i]FR24 Feeder/Decoder
2020-03-09 09:34:21 | [main][i]Version: 1.0.24-7/generic
2020-03-09 09:34:21 | [main][i]Built on Nov  7 2019 11:23:04 (HEAD-be32703.git/Linux/static_armel)
2020-03-09 09:34:21 | [main][i]Running on: debian10
2020-03-09 09:34:21 | [main][i]Local IP(s): 192.168.***.*** fdc1:****:****:****::****
2020-03-09 09:34:21 | [main][i]Copyright 2012-2019 Flightradar24 AB
2020-03-09 09:34:21 | [main][i]https://www.flightradar24.com
2020-03-09 09:34:21 | [main][i]DNS mode: PING
2020-03-09 09:34:21 | [main][i]Automatic updates are ENABLED
2020-03-09 09:34:21 | [httpd][e]bind function failed, errno: 98
2020-03-09 09:34:23 | [i]PacketSenderConfiguration::fetch_config(): Yoda configuration for this receiver is disabled
2020-03-09 09:34:23 | [d]TLSConnection::ctor(): Enable verify_peer in production code!
2020-03-09 09:34:23 | [master][i]Starting processing thread
2020-03-09 09:34:23 | [main][i]Reader thread started
2020-03-09 09:34:23 | [main][i]MLAT data feed started
2020-03-09 09:34:23 | [reader][i]Initializing reader
2020-03-09 09:34:23 | [mlat][i]Waiting for MLAT configuration
2020-03-09 09:34:23 | [reader][i]Connecting to DVBT-TCP-BEAST-RAW receiver via (tcp://localhost:30005)
2020-03-09 09:34:23 | [reader][i]Connected to the receiver, configuring
2020-03-09 09:34:23 | [reader][i]Configured, processing messages
2020-03-09 09:34:23 | [reader][i]Timestamp source changed from UNKNOWN to SYSTEM-UNCERTAIN
2020-03-09 09:34:24 | [time][i]Synchronizing time via NTP
Bus error

ステータスと書いたけど、ログファイルにも同じものが記録されている。ステータスが変わる度に上と同じものがログファイルに記録される。ログファイルが無駄に肥大するので意味がわからない。
目立つところではタイムゾーンがGMT+0になっていないというところかな。ローカルのタイムゾーンを認識した上でエラーというのは酷い造りかも。最後に唐突に表示されるBus errorはなんだろう。

もう一つ
$ fr24feed-status
[ ok ] FR24 Feeder/Decoder Process: running.
[ ok ] FR24 Stats Timestamp:.
[FAIL] FR24 Link: unknown ... failed!
[FAIL] Receiver: down ... failed!
[FAIL] FR24 MLAT: not running ... failed!

何がエラーになっているかは、意外にもこれが一番わかり易い。

FlightRadar24にフィードする 2
https://www.flightradar24.com/でMY DATA SHARINGのページを開いた。
レーダーIDと共有鍵はここでも表示される。一番右のShow statisticsをクリックする。

FlightRadar24にフィードする 3
ゼロではないにしても殆どフィード出来ていない。

問題を解決しようと足掻く

インストールされているパッケージのリスト見た。dump1090-faの他にもう一つdump1090-mutabilityが勝手にインストールされちゃってる???
dump1090-mutabilityは要らないのでサクッと消すことに。

$ sudo service dump1090-mutability stop   サービス停止
$ sudo systemctl disable dump1090-mutability  サービス無効化
$ sudo apt purge dump1090-mutability  パッケージ削除
こうなるとfr24feedのサービス起動用ファイルも確認しないといけない。
/etc/systemd/system/fr24feed.serviceを見る。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
[Unit]
Description=Flightradar24 Decoder & Feeder
After=network-online.target

[Service]
Type=simple
Restart=always
LimitCORE=infinity
ExecStartPre=-/usr/lib/fr24/install_dump1090.sh
ExecStartPre=-/usr/lib/fr24/unregister_kernel_modules.sh
ExecStartPre=-/usr/lib/fr24/create_missing_directories.sh
ExecStart=/usr/bin/fr24feed
User=fr24
Group=fr24
PermissionsStartOnly=true
StandardOutput=null

[Install]
WantedBy=multi-user.target
9行目、実行前に/usr/lib/fr24/install_dump1090.shを走らせるとなっている。その install_dump1090.sh では、 /etc/fr24feed.ini の中でreceiver行が*dvbtの場合に /usr/lib/fr24/dump1090 が存在しなければ dump1090-mutability をインストールすることになっている。これのせいで dump1090-mutability がインストールされたのかしら?条件に当てはまる指定なんかしてないんだけどなぁ。
10行目、/usr/lib/fr24/unregister_kernel_modules.shも内容的にArmbianの現在のバージョンでは要らないかと。
なので9行目と10行目は不要ということで行頭に # を追加してコメントにした。
11行目、/usr/lib/fr24/create_missing_directories.shは、ファイル内のcreate_dir_if_not_exists "/run/dump1090-mutability" "a+rwx"の行が要らない。これもその行頭に # を追加。
と、いうことだけど、サービス有効中にはいきなりこのファイルは編集しない。(次へ)
$ sudo service fr24feed stop     サービス停止
$ sudo systemctl disable fr24feed   サービス無効化
これをした上で/etc/systemd/systemにfr24feed.serviceを編集
$ sudo systemctl enable fr24feed   サービス有効化
$ sudo service fr24feed start    サービス開始

残念ながらdump1090-mutabilityを消してfr24feedの起動周りの変更をしただけでは接続エラー等は直らなかった。
RTL-SDRデバイスがdump1090-faに取られているのでfr24feedがdump1090-mutabilityからデータを貰おうとしても貰えないとか、ポートが正常に使えないとかかなと思ったけど違うみたい。

問題解決のための設定変更

2020年3月19日追記(青字部分):
ポート設定の前提条件である接続先のdump1090-faの設定を書き忘れていた。
dump1090-faのポート設定は多くの人が使っていると思われるサンプル設定(デフォルト設定)と同じ。

--net-ro-port 30002   (TCP raw output listen ports)
--net-sbs-port 30003   (TCP BaseStation output listen ports)
--net-bi-port 30004,30104   (TCP Beast input listen ports)
--net-bo-port 30005   (TCP Beast output listen ports)

dump1090-faの使用ポート
どうもレシーバとポートが怪しいなということでfr24feedの設定を変更する。(/etc/fr24feed.iniの変更でも可)

$ sudo fr24feed --reconfigure
______  _  _         _      _                    _              _____    ___ 
|  ___|| |(_)       | |    | |                  | |            / __  \  /   |
| |_   | | _   __ _ | |__  | |_  _ __  __ _   __| |  __ _  _ __`' / /' / /| |
|  _|  | || | / _` || '_ \ | __|| '__|/ _` | / _` | / _` || '__| / /  / /_| |
| |    | || || (_| || | | || |_ | |  | (_| || (_| || (_| || |  ./ /___\___  |
\_|    |_||_| \__, ||_| |_| \__||_|   \__,_| \__,_| \__,_||_|  \_____/    |_/
               __/ |                                                         
              |___/                                                          
[main][i]FR24 Feeder/Decoder
[main][i]Version: 1.0.24-7/generic
[main][i]Built on Nov  7 2019 11:23:04 (HEAD-be32703.git/Linux/static_armel)
[main][i]Running on: debian10
[main][i]Local IP(s): 192.168.***.*** fdc1:****:****::****
[main][i]Copyright 2012-2019 Flightradar24 AB
[main][i]https://www.flightradar24.com
[main][i]DNS mode: PING

Welcome to the FR24 Decoder/Feeder sign up wizard!

Before you continue please make sure that:

 1 - Your ADS-B receiver is connected to this computer or is accessible over network
 2 - You know your antenna's latitude/longitude up to 4 decimal points and the altitude in feet
 3 - You have a working email address that will be used to contact you
 4 - fr24feed service is stopped. If not, please run: sudo systemctl stop fr24feed

To terminate - press Ctrl+C at any point

Step 4.1 - Receiver selection (in order to run MLAT please use DVB-T stick with dump1090 utility bundled with fr24feed):

 1 - DVBT Stick (USB)
 -----------------------------------------------------
 2 - SBS1/SBS1er (USB/Network)
 3 - SBS3 (USB/Network)
 4 - ModeS Beast (USB/Network)
 5 - AVR Compatible (DVBT over network, etc)
 6 - microADSB (USB/Network)
 7 - SBSx via Basestation (localhost:30006)


Enter your receiver type (1-7)$:5  ←重要

Step 4.2 - Please select connection type:

 1 - Network connection
 2 - USB directly to this computer

Enter your connection type (1-2)$:1

Step 4.3A - Please enter your receiver's IP address/hostname
$:127.0.0.1

Step 4.3B - Please enter your receiver's data port number
$:30003  ←重要

Step 5.1 - Would you like to enable RAW data feed on port 30334 (yes/no)$:no

Step 5.2 - Would you like to enable Basestation data feed on port 30003 (yes/no)$:no

Step 6 - Please select desired logfile mode:
 0 -  Disabled
 1 -  48 hour, 24h rotation
 2 -  72 hour, 24h rotation
Select logfile mode (0-2)$:0

Saving settings to /etc/fr24feed.ini...OK
Settings saved, please run "sudo systemctl restart fr24feed" to use new configuration.

ググると、レシーバ:avr-tcp+ポート:30002 または レシーバ:beast-tcp+ポート:30005を指定する記事しか見かけなかったが、dump1090-faとfr24feedの組み合わせではレシーバ:beast-tcp+ポート30105 (30005ではない)(30105はMLATっぽいので修正) avr-tcp+ポート30003を指定しないとダメだった。

おそらく、これがキモなんだと思うけど、本当にこれで正しいのかは不明。

/etc/fr24feed.ini (変更後)
1
2
3
4
5
6
7
8
9
receiver="avr-tcp"
fr24key="hagehoge12345678"  #共有鍵は自身のものに変えて
host="127.0.0.1:30003"
bs="no"
raw="no"
logmode="0"
logpath="/var/log/fr24feed"
mlat="yes"
mlat-without-gps="yes"

設定ファイルはこんな風になった。(初稿はbeast-tcp + port 30105だったがMLATっぽいのでavr-tcp + 30003に変更)

$ sudo service fr24feed restart

サービス再起動から30秒ほど待ってからステータスを確認。確認が早すぎるとFAILが出てるかもしれないので異常が継続していると勘違いする。

$ fr24feed-status
[ ok ] FR24 Feeder/Decoder Process: running.
[ ok ] FR24 Stats Timestamp: 2020-03-09 06:15:47.
[ ok ] FR24 Link: connected [UDP].
[ ok ] FR24 Radar: X-XXXXX.
[ ok ] FR24 Tracked AC: 13.
[ ok ] Receiver: connected (129890 MSGS/0 SYNC).
[ ok ] FR24 MLAT: ok [UDP].
[ ok ] FR24 MLAT AC seen: 11.

うん、良い感じ。

FlightRadar24にフィードする 4
再びブラウザでfr24feedが動いているホストのポート8754を開く。(http://IPアドレス:8754)
今度は正常そう。(それが完璧な動作なのかは不明)

FlightRadar24にフィードする 5
昨日に不安定な送信がごく僅かと、今日は設定を直してすぐこの統計ページを開いたので送信したデータはまだ少ないけど、とりあえずデータが流れている感じなので一応正常そう。MLATがどうなのか不安だけど。

簡単そうで意外と苦労した。
あと、動くと判っていてもarmel, armhf用は気持ち悪いので、できればfr24feedをarm64用にビルドしたい。

FlightRadar24にフィードする 6
フィードとは関係ないけど、FlightRadar24の方がFlightAwareより使いやすい気がする。表示も「がとらぼ」の中の人のようなド素人受けしそうな感じだし。

関連記事: