Modem based on software defined radios.
- TCP-based
- Custom binary protocol based on protobuf messages.
- Supported modulation/demodulation:
- GMSK
- Supported SDRs:
- sdr-server
- plutosdr
- file
- Misc:
- Doppler's correction for satellites using SGP4 model
- Save intermittent data onto disk for future analysis/replay
Sample configuration with reasonable defaults:
https://github.com/dernasherbrezon/sdr-modem/blob/main/src/resources/config.conf
sdr-modem depends on several libraries:
- libvolk. It is recommended to use the latest version (Currently it is 2.x). After libvolk installed or built, it needs to detect optimal kernels. Run the command
volk_profile
to generate and save profile. - libconfig
- libprotobuf-c
- libz. Should be installed in every operational system
- libm. Same
- libiio for plutosdr SDR (Optional)
- libcheck for tests (Optional)
All dependencies can be easily installed from r2cloud APT repository:
sudo apt-get install curl lsb-release
curl -fsSL https://leosatdata.com/r2cloud.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/r2cloud.gpg
sudo bash -c "echo \"deb [signed-by=/usr/share/keyrings/r2cloud.gpg] http://apt.leosatdata.com $(lsb_release --codename --short) main\" > /etc/apt/sources.list.d/r2cloud.list"
sudo bash -c "echo \"deb [signed-by=/usr/share/keyrings/r2cloud.gpg] http://apt.leosatdata.com/cpu-generic $(lsb_release --codename --short) main\" > /etc/apt/sources.list.d/r2cloud-generic.list"
sudo apt-get update
sudo apt-get install libvolk2-dev libprotobuf-c-dev libconfig-dev check libiio
mkdir build
cd build
cmake ..
make