dump1090-fa 5.0のウェブ表示ができない問題

dump1090-faとPiAwareの5.0がリリースされていたので、それぞれarm64のdebian用パッケージとしてビルドしてインストールした。
dump1090-faとPiAwareの5.0のビルドは4.0のビルドと必要環境&やり方は同じ。

で、気になったのがdump1090-faのウェブUIがエラーになって表示されないこと。dump1090-faのウェブUIはウェブサーバとしてlighttpdが使われているのだが、これがエラーで起動できない。
何故かlighttpdとdump1090-faのパッケージインストール後の初回だけは起動するのに次回からは起動しない。最初、インストールしていたOrangePi Zero 2がハングアップした後にlighttpdが起動しなくなるのでハングアップが影響しているのかと勘違いしたが、これは見当違いだった。(OrangePi Zero 2のハングアップが多いため)

$ sudo systemctl status lighttpd
● lighttpd.service - Lighttpd Daemon
   Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2021-05-06 23:02:50 UTC; 11h ago
  Process: 2552 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (code=exited, status=0/SUCCESS)
  Process: 2563 ExecStart=/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf (code=exited, status=255/EXCEPTION)
 Main PID: 2563 (code=exited, status=255/EXCEPTION)

lighttpdサービスのステータスを見てみたが、lighttpdは自分で能動的に使うウェブサーバじゃないのでよく知らない。とりあえず/etc/lighttpd/lighttpd.confを見たがよくわからなかった。

異常が起きて困ったら見るのがログ。そこでlighttpdのログを確認してみた。

$ ls -l /var/log/lighttpd
total 0
-rw-r--r-- 1 root root 0 May  6 23:02 access.log
-rw-r--r-- 1 root root 0 May  6 23:02 error.log

なんかログが空なんですけど・・そして、ファイルオーナーがroot。フザケンナ

/lib/systemd/system/lighttpd.service
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[Unit]
Description=Lighttpd Daemon
After=network-online.target

[Service]
Type=simple
PIDFile=/run/lighttpd.pid
ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf
ExecStart=/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
ExecReload=/bin/kill -USR1 $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

lighttpdのサービス用ファイルを見た。
特殊なことはやってないようなので8行目を実行してから9行目を実行してみれば良さそう。

8行目を実行してみた。
$ /usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf
2021-05-07 10:48:49: (plugin.c.190) Cannot load plugin mod_setenv more than once, please fix your config (lighttpd may not accept such configs in future releases) 

mod_setenvというモジュール?が複数回ロードされようとしているみたい。おそらく設定ファイルの複数箇所でmod_setenvが読み込まれるようになってる?

lighttpdの設定ファイルは/etc/lighttpd/lighttpd.confだけでなく/etc/lighttpd/conf-enabledディレクトリの中にあるのもそうみたい。 そこには4つファイルがあった。といっても/etc/lighttpd/conf-availableディレクトリにあるファイルのシンボリックリンクだけど。
  • 88-dump1090-fa-statcache.conf
  • 89-dump1090-fa.conf
  • 89-skyaware.conf
  • 99-unconfigured.conf

この中で、89-dump1090-fa.conf(旧UI用?)と89-skyaware.conf(新UI用?)の中にmod_setenvについての設定がある。
dump1090-fa 5.0ではhttp://IPアドレス/dump1090-faにアクセスするとhttp://IPアドレス/skyawareにアクセスするように促す表示が出る。(旧UIも使えるようだが)
それを考えると89-dump1090-fa.confは要らないのかなという気もするが、とりあえず残しておいて、89-skyaware.confの中のmod_setenvの行をコメント化する。

/etc/lighttpd/conf-enabled/89-skyaware.conf
# Add CORS header
server.modules += ( "mod_setenv" )  ←この行を探す

見つけたら行頭に #を付けてコメントにする。

lighttpdを起動するコマンドを手動で実行
$ /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf
2021-05-07 11:15:24: (server.c.750) opening errorlog '/var/log/lighttpd/error.log' failed: Permission denied
2021-05-07 11:15:24: (server.c.1461) Opening errorlog failed. Going down. 

mod_setenvよりもそもそもの原因はこれ。lighttpdが起動するときにログファイルに書き込めなくて落ちてたということみたい。
先にログファイルを確認したときにログファイルのオーナーがrootになっていてヘンだと思ってたのよね。

lighttpdのサービス用ファイルに3行挿入する。
/lib/systemd/system/lighttpd.service (8行目の直前に3行挿入)

ExecStartPre=/usr/bin/touch -c /var/log/lighttpd/access.log
ExecStartPre=/usr/bin/touch -c /var/log/lighttpd/error.log
ExecStartPre=/bin/bash -c '/bin/chown www-data:www-data /var/log/lighttpd/*.log'

サービス用のファイルを書き換えたらデーモンリロードを実行。またはそのサービスを無効化して再度有効化する。

$ sudo systemctl daemon-reload    普通はこちら
または
$ sudo systemctl disable lighttpd   無効化して  
$ sudo systemctl enable lighttpd   再度有効化する

なんでログファイルのオーナーがrootで作成されてしまうのかという根本的な部分は調べてないし不明なままだが、「がとらぼ」の中の人がLinuxに不慣れということでここは放置。おそらくlighttpdのパッケージに間違いがあるのでいつか誰かが修正してくれるでしょう。

$ sudo systemctl start lighttpd    lighttpdサービスを起動
$ systemctl status lighttpd    lighttpdサービスのステータス表示
● lighttpd.service - Lighttpd Daemon
   Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2021-05-07 11:17:09 UTC; 11s ago
  Process: 15305 ExecStartPre=/usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf (code=exited, status=0/SUCCESS
 Main PID: 15310 (lighttpd)
    Tasks: 1 (limit: 1127)
   Memory: 964.0K
   CGroup: /system.slice/lighttpd.service
           └─15310 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf

May 07 11:17:08 orangepizero2 systemd[1]: Starting Lighttpd Daemon...
May 07 11:17:09 orangepizero2 systemd[1]: Started Lighttpd Daemon.
Lighttpdサービスを起動してステータスを見たがエラーにならずActiveになっているので問題なさそう。

dump1090-fa 5.0のSkyAware
lighttpdが正常に起動するようになったのでdump1090-fa 5.0の新ウェブUIのSkyAwareが表示できるようになった。なお、ADS-Bの1090MHz用ではないロッドアンテナをつないでいるので航空機は1つも見えていない。また、実家に設置すること前提で設定しているので上の画像の地図には近畿を中心とする同心円が描かれている。

RTL-SDRの受信機が届いた (再び微妙?)

コロ助の緊急事態宣言の期間を避けるために急遽実家に帰ったので、2週間ほど前に注文した新しいRTL-SDRレシーバは間に合わなかった。どのみち実家に滞在できる時間がほぼ無くて昨年中に使っていたレシーバが故障したのか正常なのかも確認できなかったし、停まっていたフィード用のSBCも回収はしたものの新しいのを設置することもできなかったんだけど。
そして、注文したRTL-SDRは今日ようやく届いた。まぁ間が悪い・・・のかそうでもないのか。

RTL-SDRレシーバ再び 1
いつもの灰色のビニール封筒が小さくたたまれて届いた。
中身の説明が「Adapter 适配器」になってる。どちらも「アダプタ」だよね。レシーバなのに。

RTL-SDRレシーバ再び 2
ビニール封筒の内側には、白いスポンジに包まれた中身。

RTL-SDRレシーバ再び 3
スポンジを外すと例によって紙ペラ1枚すら付属せず本体だけ。ジップ式のビニール袋に入っているので水の心配が無いのは良いんだけどね。

RTL-SDRレシーバ再び 4
早速中身。
どちらかの端子がある面のネジを外すと基板を引き出すことができる。そして、そのネジを外すときにネジが2本という時点ですでに気付いていたが、これは欲しかったS300Uではない。2年前に購入した「S300Uもどき」とまったく同一のもの。まぁ販売価格が前回と同じ約1300円だったので薄々わかってたんだけどね、ガッカリ・・・

RTL-SDRレシーバ再び 5
基板のウラ面。2年前に購入したのと同じなのでウラ面には何もないけど、金属ケース側に熱を逃がすためのシリコンパッドを入れるには適している。そして、今年の2月に購入したような粗悪なニコイチ基板ではない。だからS300Uでない可能性があっても購入したんだけど。

RTL-SDRレシーバ再び 6
2年前にSonyのRX100で撮影したときはチップに書かれた文字が写らなくて苦労したけど、スマホだと簡単に写るのね。2年前と同じ基板なので乗ってるチップ・部品は全て同じ。左の四角いのがチューナーICのR820T、右の蟹が逆さに写ってるチップがRTL2832U。

RTL-SDRレシーバ再び 8
本当に欲しかったのはこの基板。Suntechtv(STV)のS300Uというやつ。本物?は緑のアルミケースのネジが四隅にあるっぽい。
他にアルミ黒箱のA300U、75Ωアンテナ端子でプラ箱のD300U、別物で100KHz〜25MHzが追加されているN300Uというのがあるみたい。
今回届いたのは昨年末まで1年半ほど正常に使えた実績のある品と同じなので、この写真に写っているS300Uと書いてある基板でなければならないということではないけど、なんか釈然としない。
AliExpressでは本物?(と「がとらぼ」の中の人が勝手に思ってるやつ)は扱って無さそうなのでAlibabaでSuntechtvのショップから買えばいいのかな?実はリビジョンが替わってて今回届いた「2018 5 16」と書かれた基板のやつが正規現行品だったらショックかも。

緊急事態宣言明けにアンテナとレシーバにアクセスして、レシーバの故障を確認したら今回購入したのと取り替える。そうでなければ今回購入したのは予備機にする(予定)。

昨年末に停まったOrangePi Zero Plusを回収した

ニュータイプのコロ助非常事態宣言で行き来できなくなる前にということで、実家に。で、昨年クリスマスに突然停まったADS-B受信&フィード用のSBCであるOrangePi Zero Plus(OPi0p)をようやく回収することができた。
ランプが全く点いていないというのは聞いていたが、なるほどUSBで給電しても全く何も起こらない。そこで基板を確認してみた。

壊れたOrangePi Zero Plus1
写真だと一見なんともない感じ。GPIOのところが汚れてるのはかなり以前にLNA用の電源としてORi0pの5VとGNDに接続していたから、昨年にはこの配線は外して使っていなかった。焦げてるのはハンダを外したから。左奥側はハンダを温めても固定したリード線が取れなかった残り。

壊れたOrangePi Zero Plus2
背面は全くなんともない。

壊れたOrangePi Zero Plus3
再びオモテ側をじっくり見ると、画像の赤い矢印の3x3mmのコイル(インダクタ)の角が欠けて銅がヘンに露出している。

壊れたOrangePi Zero Plus4
さらによく見ると、コイルの欠けた部分(画像の黄色の丸)の隣のチップの縁(画像の赤い楕円)のところが銅色に染まっている。写真では擦りキズのように白っぽく写ってるけどべっとり銅が付着している。コイルが超高温になって銅が溶けて弾け飛んだ?

何が発生してこうなったのかまったく判らないし、インダクタが破裂して溶けた銅が飛び散るって聞いたことないけどそんなことがあるのね。コイルだけ交換すれば直りそうな気もしないではないが、コイルの反対側(基板のウラ面)には極小チップコンデンサの類があるのでハンダこてで熱して外して新しいの付けてってやるとグチャグチャにしそう。仮にコイルを交換できたとしてまた同じようなことが発生しても困るし・・
なので、このOPi0pは廃棄ということで。