{"id":24630864,"url":"https://github.com/30hours/blah2","last_synced_at":"2025-05-16T11:05:33.752Z","repository":{"id":161529828,"uuid":"636221906","full_name":"30hours/blah2","owner":"30hours","description":"A real-time passive radar","archived":false,"fork":false,"pushed_at":"2025-03-04T12:46:41.000Z","size":14115,"stargazers_count":319,"open_issues_count":5,"forks_count":45,"subscribers_count":23,"default_branch":"main","last_synced_at":"2025-04-09T09:01:41.398Z","etag":null,"topics":["hackrf","passive","passive-radar","pcl","radar","real-time","rtl-sdr","sdr","sdrplay","usrp"],"latest_commit_sha":null,"homepage":"http://30hours.dev","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/30hours.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-04T11:23:40.000Z","updated_at":"2025-04-04T22:06:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"fd9bc160-8faa-4dd2-853e-0cf3226b2c5d","html_url":"https://github.com/30hours/blah2","commit_stats":{"total_commits":85,"total_committers":4,"mean_commits":21.25,"dds":"0.12941176470588234","last_synced_commit":"7133cb6d742bd9774476e4d90a87c3d67567b742"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/30hours%2Fblah2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/30hours%2Fblah2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/30hours%2Fblah2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/30hours%2Fblah2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/30hours","download_url":"https://codeload.github.com/30hours/blah2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254518384,"owners_count":22084374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hackrf","passive","passive-radar","pcl","radar","real-time","rtl-sdr","sdr","sdrplay","usrp"],"created_at":"2025-01-25T07:13:30.984Z","updated_at":"2025-05-16T11:05:28.720Z","avatar_url":"https://github.com/30hours.png","language":"C++","readme":"# blah2\n\nA real-time radar which can support various SDR platforms. See a live instance at [http://radar4.30hours.dev](http://radar4.30hours.dev).\n\n![blah2 example display](./example.png \"blah2\")\n\n## Features\n\n- 2 channel processing for a reference and surveillance signal.\n- Designed to be used with external RF source (for passive radar or active radar).\n- Outputs delay-Doppler maps to a web front-end.\n- Record raw IQ data by pressing spacebar on the web front-end.\n- Saves delay-Doppler maps in a JSON array.\n\n## SDR Support\n\n- [SDRplay RSPDuo](https://www.sdrplay.com/rspduo/).\n- [USRP](https://www.ettus.com/products/) (only tested on the B210).\n- 2x [HackRF](https://greatscottgadgets.com/hackrf/) with clock synchronisation and hardware trigger.\n- 2x [RTL-SDR](https://www.rtl-sdr.com/) with clock synchronisation.\n- [KrakenSDR](https://www.krakenrf.com/) with 2x channels only.\n\n## Services\n\nThe build environment consists of a docker-compose.yml file running the following services;\n\n- The radar processor responsible for IQ capture and processing.\n- The API middleware responsible for reading TCP ports for delay-Doppler map data, and exposing this on a REST API.\n- The web front-end displaying processed radar data.\n\n## Usage\n\nBuilding the code using the following instructions; \n\n- Install docker and docker-compose on the host machine.\n- Clone this repository to some directory.\n- Install SDRplay API to run service on host.\n- Edit the `config/config.yml` for desired processing parameters.\n- Run the docker-compose command.\n\n```bash\nsudo git clone http://github.com/30hours/blah2 /opt/blah2\ncd /opt/blah2\nsudo chown -R $USER .\nsudo chmod a+x ./lib/sdrplay-3.15.2/SDRplay_RSP_API-Linux-3.15.2.run\nsudo ./lib/sdrplay-3.15.2/SDRplay_RSP_API-Linux-3.15.2.run --tar -xvf -C ./lib/sdrplay-3.15.2\ncd lib/sdrplay-3.15.2/ \u0026\u0026 sudo ./install_lib.sh \u0026\u0026 cd ../../\nsudo docker network create blah2\nsudo systemctl enable docker\nsudo docker compose up -d --build\n```\n\nAlternatively avoid building and use the pre-built Docker packages;\n\n```bash\nsudo docker pull ghcr.io/30hours/blah2:latest\nvim docker-compose.yml\n--- build: .\n+++ image: ghcr.io/30hours/blah2:latest\nsudo docker compose up -d\n```\n\nThe radar processing output is available on [http://localhost:49152](http://localhost:49152).\n\n## Documentation\n\n- See `doxygen` pages hosted at [http://doc.30hours.dev/blah2](http://doc.30hours.dev/blah2).\n\n## Future Work\n\n- Add a tracker in delay-Doppler space.\n- Support for the HackRF/RTL-SDR using a front-end mixer, to sample 2 RF channels in 1 stream.\n- Support for the Kraken SDR with all 5 channels.\n- Add [SoapySDR](https://github.com/pothosware/SoapySDR) support for the [C++ API](https://github.com/pothosware/SoapySDR/wiki/Cpp_API_Example) to include a wide range of SDR platforms.\n\n## FAQ\n\n- If the SDRplay RSPduo does not capture data, restart the API service (on the host) using the script `sudo ./script/blah2_rspduo_restart.bash`.\n\n## Contributing\n\nPull requests are welcome - especially for adding support for a new SDR. \n\n- 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.\n\n## Links\n\n- Join the [Discord](https://discord.gg/ewNQbeK5Zn) chat for sharing results and support.\n\n- Watch a [Youtube video](https://www.youtube.com/watch?v=FF2n28qoTQM) showing the hardware and software setup.\n\n## License\n\n[MIT](https://choosealicense.com/licenses/mit/)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F30hours%2Fblah2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F30hours%2Fblah2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F30hours%2Fblah2/lists"}