Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shajen/rtl-sdr-scanner-cpp
https://github.com/shajen/rtl-sdr-scanner-cpp
hackrf rtl-sdr rtlsdr sdr
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/shajen/rtl-sdr-scanner-cpp
- Owner: shajen
- License: gpl-3.0
- Created: 2021-08-25T10:52:52.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-02-02T23:15:45.000Z (10 months ago)
- Last Synced: 2024-07-31T08:18:12.779Z (4 months ago)
- Topics: hackrf, rtl-sdr, rtlsdr, sdr
- Language: C++
- Homepage:
- Size: 12.3 MB
- Stars: 613
- Watchers: 32
- Forks: 62
- Open Issues: 48
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome - shajen/rtl-sdr-scanner-cpp - (C++)
README
# Introduction
This project contains sdr scanner written in `c++` to **scan and record multiple interesting frequencies bandwidth in the same time** (eg. 108 MHz, 144 MHz, 440 Mhz, etc). This is possible by switching quickly between frequencies bandwidth.
Sdr scanner also allows you to record multiple transmissions simultaneously (if they are transmitted on the same band). For example, if one transmission is on 145.200 MHz and the other is on 145.600 MHz, the scanner will record and save both!
It also provides easy but very powerful **web panel** to explore recordings and spectrograms.
# Supported devices
- `rtl-sdr`
- `HackRF`# Supported modulation
- `FM`
- `AM`# YouTube
[introduction video](https://www.youtube.com/watch?v=YzQ2N0VkKvE) - thanks to **Tech Minds**!
[introduction video](http://www.youtube.com/watch?v=TSDbcb7wSjs) - old version
# Sample data collected
| Spectrogram | Transmission |
| - | - |
| ![](images/spectrograms.png?raw=1) | ![](images/transmissions.png?raw=1) |
| ![](images/spectrogram.png?raw=1) | ![](images/transmission.png?raw=1) |# Quickstart
## Install docker
If you do not have `docker` installed, follow the instructions available at [https://docs.docker.com/desktop/](https://docs.docker.com/desktop/) to install `docker` and `docker compose`.
## Run
Download sample configuration and docker file, then run it. Customize `config.json` to your needs.
```
mkdir -p sdr
cd sdr
wget https://github.com/shajen/rtl-sdr-scanner-cpp/raw/master/config.json
wget https://github.com/shajen/rtl-sdr-scanner-cpp/raw/master/docker-compose.yml
docker compose up
```To update docker images to latest version type:
```
docker compose pull
```Also remember to update `docker-compose.yml` and `config.json`.
## Panel
Open [http://localhost:8000/sdr/spectrograms/](http://localhost:8000/sdr/spectrograms/) and wait for data to collect.
Admin panel available at [http://localhost:8000/admin/](http://localhost:8000/admin/). Username: `admin`, password: `password`.
# Important
### Blacklist kernel modules
If you use `rtl-sdr` remember to blacklist `rtl2832` modules so that the host operating system doesn't attach the devices and instead allows the devices to be claimed by the docker guest instance.
Copy and run this entire section of script at once. Note that one may need to explicitly press enter after pasting to get it to run.
```
sudo tee /etc/modprobe.d/blacklist-rtlsdr.conf > /dev/null < logs.txt`. Please attach `logs.txt` if you create a new issue. Do not paste logs directly to issue. Upload it to any file host service ([https://file.io/](https://file.io/), [https://pastebin.com/](https://pastebin.com/) or any you like).# Timezone
If timezone detection not work correctly and it seems to use `UTC` instead your timezone please set timezone in host system. To set `Europe/Warsaw` type:
```
echo "Europe/Warsaw" | sudo tee /etc/timezone
```# Advanced usage
## Build from sources
### CMake
Build
```
sudo apt-get install build-essential cmake ccache libfftw3-dev libspdlog-dev librtlsdr-dev libhackrf-dev libliquid-dev nlohmann-json3-dev libmosquitto-dev libgtest-dev libgmock-dev libboost-all-dev
git clone https://github.com/shajen/rtl-sdr-scanner-cpp sdr-scanner
cd sdr-scanner
cmake -B build -DCMAKE_BUILD_TYPE=Release .
cmake --build build -j$(nproc)
```Run
```
./build/auto-sdr config.json
```### Docker
Build
```
git clone https://github.com/shajen/rtl-sdr-scanner-cpp sdr-scanner
cd sdr-scanner
docker build -t shajen/sdr-scanner -f Dockerfile .
```Run
```
docker run --rm -it -v ${PWD}/config.json:/config.json --device /dev/bus/usb:/dev/bus/usb shajen/sdr-scanner
```## Distributed application system
It is possible to run every module (`sdr-broker`, `sdr-scanner` and `sdr-monitor`) on different machines and connect them. Please familiar with [docker-compose.yml](docker-compose.yml) to do it.
# Contributing
In general don't be afraid to send pull request. Use the "fork-and-pull" Git workflow.
1. **Fork** the repo
2. **Clone** the project to your own machine
3. **Commit** changes to your own branch
4. **Push** your work back up to your fork
5. Submit a **Pull request** so that we can review your changesNOTE: Be sure to merge the **latest** from **upstream** before making a pull request!
# Donations
If you enjoy this project and want to thanks, please use follow link:
- [Revolut](https://revolut.me/borysm2b) (best way)
- [PayPal](https://www.paypal.com/donate/?hosted_button_id=6JQ963AU688QN)
# License
[![License](https://img.shields.io/:license-GPLv3-blue.svg?style=flat-square)](https://www.gnu.org/licenses/gpl.html)
- *[GPLv3 license](https://www.gnu.org/licenses/gpl.html)*