Git Product home page Git Product logo

blah2's Introduction

blah2

A real-time radar which can support various SDR platforms. See a live instance at http://radar4.30hours.dev.

blah2 example display

Features

  • 2 channel processing for a reference and surveillance signal.
  • Designed to be used with external RF source (for passive radar or active radar).
  • Outputs delay-Doppler maps to a web front-end.
  • Record raw IQ data by pressing spacebar on the web front-end.
  • Saves delay-Doppler maps in a JSON array.

SDR Support

Services

The build environment consists of a docker-compose.yml file running the following services;

  • The radar processor responsible for IQ capture and processing.
  • The API middleware responsible for reading TCP ports for delay-Doppler map data, and exposing this on a REST API.
  • The web front-end displaying processed radar data.

Usage

Building the code using the following instructions;

  • Install docker and docker-compose on the host machine.
  • Clone this repository to some directory.
  • Install SDRplay API to run service on host.
  • Edit the config/config.yml for desired processing parameters.
  • Run the docker-compose command.
sudo git clone http://github.com/30hours/blah2 /opt/blah2
cd /opt/blah2
sudo chown -R $USER .
sudo chmod a+x ./lib/sdrplay-3.15.1/SDRplay_RSP_API-Linux-3.15.1.run
sudo ./lib/sdrplay-3.15.1/SDRplay_RSP_API-Linux-3.15.1.run --tar -xvf -C ./lib/sdrplay-3.15.1
cd lib/sdrplay-3.15.1/ && sudo ./install_lib.sh && cd ../../
sudo docker network create blah2
sudo systemctl enable docker
sudo docker compose up -d --build

Alternatively avoid building and use the pre-built Docker packages;

sudo docker pull ghcr.io/30hours/blah2:latest
vim docker-compose.yml
--- build: .
+++ image: ghcr.io/30hours/blah2:latest
sudo docker compose up -d

The radar processing output is available on http://localhost:49152.

Documentation

Future Work

  • Add a tracker in delay-Doppler space.
  • Support for the HackRF/RTL-SDR using a front-end mixer, to sample 2 RF channels in 1 stream.
  • Support for the Kraken SDR with all 5 channels.
  • Add SoapySDR support for the C++ API to include a wide range of SDR platforms.

FAQ

  • If the SDRplay RSPduo does not capture data, restart the API service (on the host) using the script sudo ./script/blah2_rspduo_restart.bash.

Contributing

Pull requests are welcome - especially for adding support for a new SDR.

  • Currently have an issue where the USRP B210 is timing out after 5-10 mins and crashes the code. Convinced it's an issue with my usage of the API - contact me for more info.

Links

  • Join the Discord chat for sharing results and support.

  • Watch a Youtube video showing the hardware and software setup.

License

MIT

blah2's People

Contributors

30hours avatar sdn-ninja avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blah2's Issues

(Suggestion) Add AntSDR support

The AntSDR e200 is very similar to the b210. If perhaps you can make a branch/docker with this modified uhd I can test w/ my AntSDR e200. It is reachable on a network connection so that may be a consideration for how the docker is configured.

https://github.com/MicroPhase/antsdr_uhd

I’ve not looked closely at your recent updates, so this is just a suggestion that may or may not work. Looking forward to testing outside with my sdrplay Duo asap.

Feature request: Provide documentation for ADSB integration with Virtual Server Radar

Hi @30hours ,
I am going to log feature requests here, so we don't forget about them. I hope you're okay with this.
Then, you can apply filters in your "Issues" view so you don't see these.

Could you please Label this for "enhancement" and assign it to me.

The task:
Once blah2 has predictive -ADSB data, I will work on integrating blah2 ADSB output with https://www.virtualradarserver.co.uk/
This will give us a geographical map to place blah2 data on, as well as, retrieve real ADSB data. Hence, we can have a combined view of the 2 data sets.

The task is to document the integration process between these two projects.

[Documentation] Hetrodyne detection

One of blah2 use-cases is to operate as a hetrodyne detector.

  • This ticket is to document the steps required to operate blah2 as a detector. The scenario is as follows:
  1. Target is a radio in RX mode listening to frequency X (best to choose not well used frequency to demonstrate this point)
  2. Target starts to receive RF traffic (or we can illuminate target)
  3. Target's LO produces RF noise
  4. blah2 detects signal reflection
  5. Can we also utilise 3lips (with multiple radios) for direction and range finding?

I'm happy to work on the documentation of this use-case.

KerberosSDR

I can read that you plan to add support for 5-channel KrakenSDR, to use all 5 channels. Please consider to make this feature backwards-compatible with KerberosSDR, the 4-channel version of KrakenSDR.

docker-compose.yml network_mode

There is a problem with having network_mode : host in line 22, and line 45

This config isn't compatible with the most recent version of docker-compose on Fedora 39 (latest).

I had to comment out that line to run the image.

The problem is also described here: https://forums.docker.com/t/docker-errors-invalidargument-host-network-mode-is-incompatible-with-port-bindings/103492/14

tl;dr
Running network mode as host and port binding isn't a valid docker option, it used to be ignored, but now enforced. I suspect you are running this on Ubuntu which is still not packaging latest docker-compose

antenna setup

Can you give me some help with your antenna setup? Did you use one or two? How did you orient them, what type of antenna, etc? Thx

Updated SDRPlay API

Just a heads up, the Linux SDRPlay API jumped to 3.12. So far it seems like applications previously running with 3.07 (after rebuilding) run okay. May want to consider pulling and using this.

[Feature Request] Add multitple frequencies' monitoring support

We can add support to monitor multiple frequencies using the same 2 physical RX radios.

  • This can be done with a round-robin algorithm that iterates through "n" number of frequencies and provide sampled IQ data.
  • Will these samples be correlated with each other to enhance the accuracy of detected objects vs. noise? or each pair of ref/surv channels would provide their sets of data independently?
  • Integration with 3lips is a key consideration; hence, outputs (from blah2) need to be compatible.
  • How much latency sweeping through different frequencies will introduce?
  • Can we maintain 0.5 CPI across all frequencies? this is relevant to the frequencies-values chosen.. does this need to be explained in the documentation?
  • For the sake of clarity (to users), is it better to change the format of the config.yml to have an array of different "capture" fields. Or change the way config.yml files are provided so you can point to ./config/*.yml and blah2 will extract all provided files there as sources to utilise?

Testing w/ RSPduo on 22.04

Quickly tested on a 22.04 host machine following the steps provided and using the RSPduo. I see the following happening, and I will say sdrplay api sometimes gives me issues where I'll have to kill/restart the systemctl sdrplay service. That happens with various applications thought, but back to blah2 specifically.

`blah2 | Setting up device RspDuo
blah2 | Info - get_device - MaxDevs=1023 NumDevs=1
blah2 | Info - get_device - Dev0: SerNo=1905090B32 hwVer=3 tuner=0x03 rspDuoMode=0x07
blah2 | Info - get_device - chosenDevice=0
blah2 | Info - get_device - Dev0: selected rspDuoMode=0x02 tuner=0x03 rspDuoSampleFreq=6000000.0
blah2 |
blah2 | fc (Hz) : 204640000
blah2 | file :
blah2 | wait_time_nr (s) : 2
blah2 | chunk_time_nr (s) : 0
blah2 | agc_bandwidth_nr (Hz) : 50
blah2 | agc_set_point_nr (dBfs) : -60
blah2 | gain_reduction_nr (dB) : 40
blah2 | lna_state_nr : 4
blah2 | N_DECIMATION : 1
blah2 | rf_notch_fg : false
blah2 | dab_notch_fg : false
blah2 | usb_bulk_fg : false
blah2 | stats_fg : true
blah2 | small_verbose_fg : false
blah2 | more_verbose_fg : false
blah2 |
blah2 | Info - event_callback - GainChange tuner=sdrplay_api_Tuner_A gRdB=40 lnaGRdB=20 systemGain=53.09
blah2 | Info - event_callback - GainChange tuner=sdrplay_api_Tuner_B gRdB=40 lnaGRdB=20 systemGain=52.80
blah2 | /blah2/lib/rapidyaml-0.5.0/ryml-0.5.0.hpp:19396:check failed: has_val(node)
blah2 | Aborted (core dumped)
blah2-api | node:events:491
blah2-api | throw er; // Unhandled 'error' event

`

and

blah2-api | Running on http://0.0.0.0:3000 blah2 | Setting up device RspDuo blah2 | Info - get_device - MaxDevs=1023 NumDevs=0 blah2 | Error - get_device - no devices found blah2-api | node:events:491 blah2-api | throw er; // Unhandled 'error' event blah2-api | ^ blah2-api | blah2-api | Error: read ECONNRESET blah2-api | at TCP.onStreamRead (node:internal/stream_base_commons:217:20) blah2-api | Emitted 'error' event on Socket instance at: blah2-api | at emitErrorNT (node:internal/streams/destroy:157:8) blah2-api | at emitErrorCloseNT (node:internal/streams/destroy:122:3) blah2-api | at processTicksAndRejections (node:internal/process/task_queues:83:21) { blah2-api | errno: -104, blah2-api | code: 'ECONNRESET', blah2-api | syscall: 'read' blah2-api | } blah2-api exited with code 1 blah2 exited with code 1

SoapySDRUtil --find does initially find the RSPduo and it's usable in other applications.

README.md has a reference to a missing file

In README.md under Usage, there is a reference for ./lib/sdrplay-3.12.1/install_lib.sh
this file isn't available under that directory.

I think it was located in the top directory (as of last week), but has been removed? I was going to create a PR to move it to ./lib/sdrplay* .. but it has been taken out completely.

P.S. it would be great if you create a new tag for every release so we can track diffs

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.