stdevPavelmc/FAASGS を Raspberry Pi 2B にインストールした話
By takagiwa on Saturday, February 6 2021, 14:55 - RTL-SDR - Permalink
Fully Automatic Amateur Satellite Ground Station (FAASGS) を手元の Raspberry Pi にインストールした。パッケージや GitHub のリポジトリは2021年2月6日のもの。
環境は以下の通り
$ cat /proc/cpuinfo Hardware : BCM2835 Revision : a01041 Model : Raspberry Pi 2 Model B Rev 1.1 $ cat /etc/os-release PRETTY_NAME="Raspbian GNU/Linux 10 (buster)" NAME="Raspbian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" $ uname -a Linux sdr 5.10.11-v7+ #1399 SMP Thu Jan 28 12:06:05 GMT 2021 armv7l GNU/Linux
Raspberry Pi OS with desktop の Release date: January 11th 2021 / Kernel version: 5.4 をインストールしたもの。今回は念のため新しいµSDカードを用意して新しくインストール。
レシーバは rtl-sdr.com のドングル v3 。
何はなくともアップデート。
$ sudo apt update $ sudo apt upgrade -y $ sudo reboot
基本的には GitHub に書かれている手順で進める。
pre-installation requisites
$ sudo apt install php php-fpm nginx $ sudo apt install predict $ curl -O https://www.wxtoimgrestored.xyz/beta/wxtoimg-armhf-2.11.2-beta.deb $ sudo dpkg -i wxtoimg-armhf-2.11.2-beta.deb
wxtoimg は正規のものではない、ということで、実行すると警告メッセージが表示される。
$ wxtoimg WXTOIMG TERMS ------------- (略) Type YES to accept the above terms: (略) Copyright (c) 2001-2013 Central North Publishing Limited. All rights reserved. $ sudo cp ./.wxtoimglic /root/ $ sudo chown root:root /root/.wxtoimglic
途中、問題無ければ YES と入力。FAASGS のスクリプトは root 権限で動くワイルドなプログラムなので、作られたファイルは /root/ にもコピーしておく。
$ sudo apt install git make
このあたりはもうインストールされていた。
Real install
$ git clone https://github.com/stdevPavelmc/FAASGS $ cd FAASGS $ sudo make install
とりあえずエラー無く終わった。
Configuring
ユーザーデータを設定する。
$ cd /etc/sat_data/ $ sudo cp user.conf user.conf.org $ sudo vi user.conf
念のためバックアップを取って編集。まずは先頭。
CALL=(コールサイン。無ければ N0NAME) NAME=(名前) LOC=(場所) LOC_NAME="(エリアの名前)" LOC_COUNTRY="Japan"
場所の記号は GitHub からリンクされている ここ を利用する。
あとはプロキシを使っていなければ、デフォルトで書かれてしまっているので書き換える。
### make this "" if you don't use proxy at all http_proxy="" https_proxy=""
人工衛星の情報はとりあえず必要になったら書き換える。
Real install (again)
$ sudo ./sat.sh Updating data and scheduling new sats Fresh data fetched, updating the good file Filtering the sats we need and set simple names ./sat.sh: line 301: /usr/bin/jq: No such file or directory ./sat.sh: line 48: /usr/bin/jq: No such file or directory
というわけで jq が無いのでインストール。
$ sudo apt install jq
再チャレンジ。
$ sudo ./sat.sh Updating data and scheduling new sats Fresh data fetched, updating the good file Filtering the sats we need and set simple names => ISS (ZARYA)/ISS ./sat.sh: line 89: [: file: integer expression expected => RADFXSAT (FOX-1B)/AO91-FOX-1B ./sat.sh: line 89: [: file: integer expression expected => FOX-1CLIFF (AO-95)/AO95-FOX-1CLIFF ./sat.sh: line 89: [: file: integer expression expected => FOX-1D (AO-92)/AO92-FOX-1D ./sat.sh: line 89: [: file: integer expression expected => DIWATA-2B/PO101-DIWATA-2B ./sat.sh: line 89: [: file: integer expression expected => NOAA 19/NOAA19 ./sat.sh: line 89: [: file: integer expression expected => NOAA 18/NOAA18 ./sat.sh: line 89: [: file: integer expression expected => NOAA 15/NOAA15 ./sat.sh: line 89: [: file: integer expression expected
どうやら predict が文句を言っているらしい。
$ sudo predict
これで、コールサイン(無いのでさきほどの N0NAME を使った)、緯度、経度(Google Maps で場所をクリックして下に出てくる)、海抜を入力。
2021/Feb/8: 経度が「西経」がデフォルトになっているので注意。
2021/Feb/10: 東経はマイナスの値で入力するらしい。
入力を終えるとターミナルがおかしくなる(入力した分が表示されない、改行がされない)ので、これ以降新しいターミナルで実行。
これ以降で同じエラーが出たときは、もう一度 predict を実行してみる。
とりあえずこれでいいはずなので、
$ sudo make permanent
で、とりあえずセットアップは完了のはず。
RTL-SDR セットアップ
FAASGS は、中で呼び出している rtl_fm が RIFF ヘッダ付きでデータを出力してくれることを期待しているものの、この環境で apt でインストールした rtl_fm は古くてこの機能が入っていない。
$ rtl_fm --help rtl_fm: invalid option -- '-' rtl_fm, a simple narrow band FM demodulator for RTL2832 based DVB-T receivers Use: rtl_fm -f freq [-options] [filename] -f frequency_to_tune_to [Hz] use multiple -f for scanning (requires squelch) ranges supported, -f 118M:137M:25k [-M modulation (default: fm)] fm, wbfm, raw, am, usb, lsb wbfm == -M fm -s 170k -o 4 -A fast -r 32k -l 0 -E deemp raw mode outputs 2x16 bit IQ pairs [-s sample_rate (default: 24k)] [-d device_index (default: 0)] [-T enable bias-T on GPIO PIN 0 (works for rtl-sdr.com v3 dongles)] [-g tuner_gain (default: automatic)] [-l squelch_level (default: 0/off)] [-p ppm_error (default: 0)] [-E enable_option (default: none)] use multiple -E to enable multiple options edge: enable lower edge tuning dc: enable dc blocking filter deemp: enable de-emphasis filter direct: enable direct sampling offset: enable offset tuning filename ('-' means stdout) omitting the filename also uses stdout Experimental options: [-r resample_rate (default: none / same as -s)] [-t squelch_delay (default: 10)] +values will mute/scan, -values will exit [-F fir_size (default: off)] enables low-leakage downsample filter size can be 0 or 9. 0 has bad roll off [-A std/fast/lut choose atan math (default: std)] Produces signed 16 bit ints, use Sox or aplay to hear them. rtl_fm ... | play -t raw -r 24k -es -b 16 -c 1 -V1 - | aplay -r 24k -f S16_LE -t raw -c 1 -M wbfm | play -r 32k ... -s 22050 | multimon -t raw /dev/stdin
-E のオプションの中に wav がない。
rtl-sdr.com の GETTING STARTED ON LINUX で書かれている git のリポジトリも同じくらい古い。
ので、この手順でもっと新しいリポジトリから取ってきてセットアップする。
$ cd ~ $ sudo apt-get install libusb-1.0-0-dev cmake $ git clone https://github.com/keenerd/rtl-sdr $ cd rtl-sdr $ mkdir build $ cd build $ cmake ../ -DINSTALL_UDEV_RULES=ON $ make $ ./src/rtl_fm --help ./src/rtl_fm: invalid option -- '-' rtl_fm, a simple narrow band FM demodulator for RTL2832 based DVB-T receivers Use: rtl_fm -f freq [-options] [filename] -f frequency_to_tune_to [Hz] use multiple -f for scanning (requires squelch) ranges supported, -f 118M:137M:25k [-M modulation (default: fm)] fm, wbfm, raw, am, usb, lsb wbfm == -M fm -s 170k -o 4 -A fast -r 32k -l 0 -E deemp raw mode outputs 2x16 bit IQ pairs [-s sample_rate (default: 24k)] [-d device_index (default: 0)] [-g tuner_gain (default: automatic)] [-l squelch_level (default: 0/off)] [-p ppm_error (default: 0)] [-E enable_option (default: none)] use multiple -E to enable multiple options edge: enable lower edge tuning no-dc: disable dc blocking filter deemp: enable de-emphasis filter swagc: enable software agc (only for AM modes) swagc-aggressive: enable aggressive software agc (only for AM modes) direct: enable direct sampling no-mod: enable no-mod direct sampling offset: enable offset tuning wav: generate WAV header pad: pad output gaps with zeros lrmix: one channel goes to left audio, one to right (broken) remember to enable stereo (-c 2) in sox filename ('-' means stdout) omitting the filename also uses stdout Experimental options: [-r resample_rate (default: none / same as -s)] [-t squelch_delay (default: 10)] +values will mute/scan, -values will exit [-F fir_size (default: off)] enables low-leakage downsample filter size can be 0 or 9. 0 has bad roll off [-A std/fast/lut/ale choose atan math (default: std)] Produces signed 16 bit ints, use Sox or aplay to hear them. rtl_fm ... | play -t raw -r 24k -es -b 16 -c 1 -V1 - | aplay -r 24k -f S16_LE -t raw -c 1 -M wbfm | play -r 32k ... -E wav | play -t wav - -s 22050 | multimon -t raw /dev/stdin
-E オプションのなかに wav が増えている。
$ sudo make install
インストール先を指定していなかったので、このままだと /usr/local/bin/ にインストールされてしまう。apt のが /usr/bin に入っているのでそちらが優先されてしまう。
$ cd ~/FAASGS/ $ grep -R rtl_fm * sat.sh: timeout $5 rtl_fm -p "${RTL_PPM}" -f "${FREQ}M" -s "${rxbw}" \ $ vi sat.sh
rtl_fm を絶対パスで指定して回避。
$ grep -R rtl_fm * sat.sh: timeout $5 /usr/local/bin/rtl_fm -p "${RTL_PPM}" -f "${FREQ}M" -s "${rxbw}" \
念のためもう一度セットアップ
$ sudo ./sat.sh
タイムゾーンを設定していなかったので、設定してやりなおし。
$ sudo raspi-config Current default time zone: 'Asia/Tokyo' Local time is now: Sat Feb 6 14:34:52 JST 2021. Universal Time is now: Sat Feb 6 05:34:52 UTC 2021. $ sudo ./sat.sh Updating data and scheduling new sats Fresh data fetched, updating the good file Filtering the sats we need and set simple names => ISS (ZARYA)/ISS => RADFXSAT (FOX-1B)/AO91-FOX-1B => FOX-1CLIFF (AO-95)/AO95-FOX-1CLIFF Sat Feb 06 15:57:30 2021, 73o, 751s => FOX-1D (AO-92)/AO92-FOX-1D => DIWATA-2B/PO101-DIWATA-2B Sat Feb 06 18:18:57 2021, 12o, 607s => NOAA 19/NOAA19 => NOAA 18/NOAA18 Sat Feb 06 15:27:07 2021, 85o, 946s => NOAA 15/NOAA15 Sat Feb 06 14:32:06 2021, 13o, 738s
Raspberry Pi で Nginx と PHP-FPM で実行するやり方は適当に「raspberry pi nginx php-fpm」でぐぐる。
2021/Feb/13: あんまりなので、続き を書いた。