NEWS LETTER

基于goestools与xrit-rx的GK2A气象卫星接收教程

Scroll down

本文章基于 CentOS7 进行安装

GK2A 是韩国气象卫星之一,由韩国气象厅开发,KARI 制造,于 2018 年 12 月 4 日由欧洲航天局的阿丽亚娜 5 号将其送上轨道,属于地球同步卫星。

基础环境安装

1
2
3
4
5
6
7
yum install -y epel-release
yum install -y wget git lrzsz zip unzip screen
yum install -y make automake gcc gcc-c++ kernel-devel cmake3 zlib-devel

yum install -y centos-release-scl
yum install -y devtoolset-8-gcc devtoolset-8-gcc-c++
scl enable devtoolset-8 -- bash

禁用防火墙, 或者自己放行端口

1
2
systemctl disable firewalld
systemctl stop firewalld

安装 LibUSB

如果未安装 LibUSB,编译 RTL-SDR 驱动会出现如下错误

1
2
3
4
-- Checking for module 'libusb-1.0'
-- Package 'libusb-1.0', required by 'virtual:world', not found
CMake Error at CMakeLists.txt:88 (message):
LibUSB 1.0 required to compile rtl-sdr

对于 Ubuntu 与 Debian 等系统可以尝试使用如下命令进行安装

1
sudo apt-get install libusb-1.0-0.dev

或者找到对应你系统版本的 libusbx-devel 手动安装

1
https://pkgs.org/search/?q=libusbx-devel

对于和我一样在 CentOS 7 的同学可以使用如下方式安装

1
2
3
4
# 首先下载该RPM包
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libusbx-devel-1.0.21-1.el7.x86_64.rpm
# 安装RPM包
yum install -y libusbx-devel-1.0.21-1.el7.x86_64.rpm

从源码编译 librtlsdr

1
2
3
4
5
6
7
8
9
10
11
git clone https://github.com/steve-m/librtlsdr.git
cd librtlsdr && mkdir build && cd build
# 如果 cmake 提示找不到命令请尝试使用 cmake3
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DINSTALL_UDEV_RULES=ON ..
sudo make -j2 install

# Load udev rules and blacklist the DVB driver shipped with the OS
sudo cp ../rtl-sdr.rules /etc/udev/rules.d/
sudo ldconfig
echo 'blacklist dvb_usb_rtl28xxu' | sudo tee --append /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf
sudo reboot

从源码编译 goesrecv

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
git clone --recursive https://github.com/sam210723/goestools
cd goestools && mkdir build && cd build
# 如果这一步出现找不到 libairspy 请查看 错误1, 如果 cmake 提示找不到命令请尝试使用 cmake3
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
sudo make && sudo make install
cd ~
cp goestools/etc/goesrecv.conf goesrecv.conf

# 编辑 goesrecv.conf 文件
[demodulator]
satellite = "GK-2A"
downlink = "lrit"
source = "rtlsdr"

# [airspy]
# frequency = 1692140000
## 2500000 for the R2, 3000000 for the Mini
# sample_rate = 3000000
# gain = 18
# bias_tee = false

[rtlsdr]
frequency = 1692140000
# sample_rate = 1024000
# gain = 30
# bias_tee = false
# device_index = 0

# 运行
goesrecv -v -i 1 -c goesrecv.conf

错误 1 (由于未找到适用于红帽系的 libairspy 包,如果出现如下错误,请在 CMakeLists 里将 libairspy 检查注释掉)

1
2
3
4
5
6
7
8
9
10
11
12
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.7.3")
-- Checking for module 'libairspy'
-- Package 'libairspy', required by 'virtual:world', not found
CMake Warning at src/goesrecv/CMakeLists.txt:14 (message):
Unable to find libairspy


-- Checking for module 'librtlsdr'
-- Found librtlsdr, version 0.6.0-31-ga4ea
-- Configuring done
-- Generating done
-- Build files have been written to: /root/goestools/build
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
vim ~/goestools/src/goesrecv/CMakeLists.txt

12 - 18 行注释掉
#pkg_check_modules(AIRSPY libairspy)
#if(NOT AIRSPY_FOUND)
# message(WARNING "Unable to find libairspy")
#else()
# add_library(airspy_source airspy_source.cc)
# target_link_libraries(airspy_source ${AIRSPY_LIBRARIES} publisher stdc++)
#endif()

63 - 66 行注释掉
#if(AIRSPY_FOUND)
# target_compile_definitions(goesrecv PUBLIC -DBUILD_AIRSPY)
# target_link_libraries(goesrecv airspy_source)
#endif()

运行 goesrecv 测试是否有输出

1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# goesrecv -v -i 1 -c goesrecv.conf
Found Rafael Micro R820T tuner
Disabled direct sampling mode
[R82XX] PLL not locked!
2021-08-29T11:54:14Z [monitor] gain: 12.20, freq: 254.0, omega: 18.750, vit(avg): 2077, rs(sum): 0, packets: 0, drops: 4
2021-08-29T11:54:15Z [monitor] gain: 25.02, freq: 2958.7, omega: 18.750, vit(avg): 2086, rs(sum): 0, packets: 0, drops: 5
2021-08-29T11:54:16Z [monitor] gain: 30.72, freq: 7250.1, omega: 18.750, vit(avg): 2090, rs(sum): 0, packets: 0, drops: 4
2021-08-29T11:54:17Z [monitor] gain: 33.04, freq: 13950.2, omega: 18.751, vit(avg): 2094, rs(sum): 0, packets: 0, drops: 6
2021-08-29T11:54:18Z [monitor] gain: 34.16, freq: 19201.4, omega: 18.750, vit(avg): 2099, rs(sum): 0, packets: 0, drops: 5
2021-08-29T11:54:19Z [monitor] gain: 34.79, freq: 21535.1, omega: 18.750, vit(avg): 2101, rs(sum): 0, packets: 0, drops: 5

xrit-rx 安装

1
2
3
wget https://github.com/sam210723/xrit-rx/releases/latest/download/xrit-rx.zip
mkdir xrit-rx
unzip xrit-rx.zip -d xrit-rx

解码 GK2A 的数据需要用到密钥
解密后生成的密钥名为 EncryptionKeyMessage.bin

1
2
3
cd xrit-rx
wget --no-check-certificate https://c.ibcl.us/GK2A-Decode_20190811/EncryptionKeyMessage_001F2904C905.bin
python3 ../tools/keymsg-decrypt.py EncryptionKeyMessage_001F2904C905.bin 001F2904C905

安装 Python3

1
2
3
sudo yum install python34
cd xrit-rx
pip3 install -r requirements.txt -i https://pypi.douban.com/simple

通过 screen 后台运行

1
2
3
4
5
6
7
# 请自行查阅screen用法, 这里不过多赘述
screen -S goestools
cd ~
goesrecv -v -i 1 -c goesrecv.conf

screen -S xrit-rx
cd xrit-rx && python3 xrit-rx.py

测试

浏览器输入 http://ip:1692 访问 web 控制台

其他文章
目录导航 置顶
  1. 1.
  2. 2. 基础环境安装
  3. 3. 安装 LibUSB
  4. 4. 从源码编译 librtlsdr
  5. 5. 从源码编译 goesrecv
  6. 6. 运行 goesrecv 测试是否有输出
  7. 7. xrit-rx 安装
  8. 8. 通过 screen 后台运行
  9. 9. 测试
请输入关键词进行搜索