To content | To menu | To search

stdevPavelmc/FAASGS を Raspberry Pi 2B にインストールした話

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: あんまりなので、続き を書いた。

Add a comment

HTML code is displayed as text and web addresses are automatically converted.

They posted on the same topic

Trackback URL : https://www.pseudomoon.jp/dotclear/index.php?trackback/131

This post's comments feed