Skip to content
Command line utility that takes IQ data stream as input and produces doppler corrected output stream based on TLE
Rust C
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
.gitignore
.gitmodules
Cargo.lock
Cargo.toml
LICENSE
README.md
build.rs

README.md

doppler

Command line utility that takes IQ data stream as input and produces doppler corrected output stream based on TLE. Firstly it was written in C (last commit to C version), however now it is rewritten in rust.

dependencies

mac os x

xcode-select --install
brew install autoconf
brew install automake

linux

sudo apt-get install autoconf

libgpredict

Follow install instructions from here: https://github.com/cubehub/libgpredict

liquid-dsp

git clone git://github.com/jgaeddert/liquid-dsp.git
cd liquid-dsp
./bootstrap.sh
./configure
make
sudo make install

rust

http://www.rust-lang.org/install.html

curl -sSf https://static.rust-lang.org/rustup.sh | sh

build

git clone https://github.com/cubehub/doppler.git
cd doppler
cargo build --release

install

mac os x

cp target/release/doppler /usr/local/bin/

linux

sudo cp target/release/doppler /usr/local/bin/

usage

help

doppler -h
doppler track -h
doppler const -h

realtime

Do realtime doppler correction to ESTCube-1 satellite that transmits on 437.505 MHz and write output to a file. Notice that rtl_fm is tuned to 437.500 MHz, but ESTCube-1 transmits on 437.505 MHz, therefore 5000 Hz constant offset correction is also added with --offset parameter. It can be omitted if there is no offset.

rtl_fm -f 437.5M -s 1024000 -g 20 -M raw - | doppler track -s 1024000 -i i16 --tlefile cubesat.txt --tlename 'ESTCUBE 1' --location lat=58.26541,lon=26.46667,alt=76 --frequency 437505000 --offset 5000 > zero.iq

recording

Do doppler correction to a file that is recorded before. For example someone has recorded an overpass and you would like to convert it to another file where doppler compensation has been made. If parameter --time is specified it does doppler correction based on this time instead of real time. It denotes start time of the recording in UTC.

cat last_overpass_256000sps_i16.iq | doppler track -s 256000 -i i16 --tlefile cubesat.txt --tlename 'ESTCUBE 1' --location lat=58.26541,lon=26.46667,alt=76 --frequency 437505000 --offset -2500 --time 2015-01-22T09:07:16 > zero_overpass.iq

sox -t wav last_overpass.wav -esigned-integer -b16  -r 300000 -t raw - | doppler track -s 300000 -i i16 --tlefile cubesat.txt --tlename 'ESTCUBE 1' --location lat=58.26541,lon=26.46667,alt=76 --frequency 437505000 --offset -2500 --time 2015-01-22T09:07:16 > zero_overpass.iq

Notice that if dealing with old files you also have to use TLEs from that day, otherwise doppler correction result might be off. Here offset compensation of -2500 Hz is used only for example purposes.

baseband shifting

It is also possible to just shift baseband signal "left" or "right" using const mode. In this example input signal has float IQ data format therefore -i f32 is used. However output is converted to int16 IQ data format using -o i16.

cat baseband_256000sps_f32.iq | doppler const -s 256000 -i f32 --shift -15000 -o i16 > shifted_baseband_256000sps_i16.iq
You can’t perform that action at this time.