docs: update README

This commit is contained in:
Jimmy Fitzpatrick
2025-07-05 15:52:40 +01:00
parent 12078b45fe
commit 691c67ee25
6 changed files with 25 additions and 188 deletions

213
README.md
View File

@@ -3,208 +3,45 @@
</h1> </h1>
<div align="center"> <div align="center">
<img src="docs/gallery/solar_radio.png" width="30%" hspace="10" alt="Solar Radio Observations"> <img src="gallery/solar_radio.png" width="30%" hspace="5" alt="Solar Radio Observations">
<img src="docs/gallery/spectre.png" width="30%" hspace="10" alt="Spectre Logo"> <img src="gallery/spectre.png" width="30%" hspace="5" alt="Spectre Logo">
<img src="docs/gallery/fm_radio.png" width="30%" hspace="10" alt="FM Band"> <img src="gallery/fm_radio.png" width="30%" hspace="5" alt="FM Band">
</div> </div>
<div align="center"> <div align="center">
<img src="gallery/finland_comparison.png" width="35%" hspace="7" alt="Solar Radio Observations">
<img src="docs/gallery/solar_radio_narrowband.png" width="50%" hspace="10" alt="Solar Radio Observations"> <img src="gallery/solar_radio_narrowband.png" width="35%" hspace="7" alt="Solar Radio Observations">
</div> </div>
## About Us
## Overview
📢 **This project is under active development, expect breaking changes. Contributors welcome!** 📢
_Spectre_ is a receiver-agnostic program for recording and visualising radio spectrograms. Powered by [GNU Radio](https://www.gnuradio.org/).
### **Features** _Spectre_ is a free and open source receiver-agnostic program for recording and visualising radio spectrograms. It's geared for hobbyists, citizen scientists, and academics who want to achieve scientifically interesting results at low cost.
Offering robust performance on modest hardware, applications include:
- 🌞 Solar and Jovian radio observations
- ✏️ Educational outreach and citizen science
- 🎛️ Amateur radio experimentation
- 🔍 Weak signal detection
- ⚡ Lightning and atmospheric event detection
- 📡 RFI monitoring
## **Features**
- 💻 Intuitive CLI tool - 💻 Intuitive CLI tool
- 🐳 Simple installation with Docker - 🐳 Simple installation with Docker
- 🛰️ Wide receiver support - 🛰️ Wide receiver support
- 💾 Live recording of radio spectrograms and I/Q data - 💾 Live recording of radio spectrograms and I/Q data
- ⚙️ Flexible, configurable data capture - ⚙️ Flexible, configurable data capture
- ✏️ Services exposed with a discoverable RESTful API - ✏️ Backend web server with a discoverable RESTful API
- 🔧 Developer-friendly and extensible - 🔧 Developer-friendly and extensible
### **Demo** ## Getting started
Capture data from SDRs, simply.
1. **Create a capture config**: Check out our [GitHub Wiki](https://github.com/jcfitzpatrick12/spectre/wiki), linked below:
Create a new configuration file to collect data from the SDRplay RSP1A receiver at a fixed center frequency:
```bash
spectre create capture-config --receiver rsp1a \
--mode fixed_center_frequency \
--tag rsp1a-example
```
2. **Capture data**:
Start streaming I/Q samples from the receiver, and automatically post process the data into radio spectrograms:
```bash
spectre start session --tag rsp1a-example --seconds 30
```
## Supported Receivers
Our abstract framework can support any receiver with a source block in GNU Radio. If you have a receiver that isn't supported, reach out, and we can look into adding support for it! - [Installation](https://github.com/jcfitzpatrick12/spectre/wiki/Installation)
- [Tutorials](https://github.com/jcfitzpatrick12/spectre/wiki/Tutorials)
### **Currently Supported Receivers** - [Contributing](https://github.com/jcfitzpatrick12/spectre/wiki/Contributing)
- [RSP1A (from SDRplay)](https://www.sdrplay.com/rsp1a/)
- [RSPduo (from SDRplay)](https://www.sdrplay.com/rspduo/)
- [USRP B200mini (from Ettus Research)](https://www.ettus.com/all-products/usrp-b200mini/)
### **Planned Future Support**
- RSP1, RSP1B, RSP2, RSPdx
- Any USRP SDR
- RTLSDR, AirspyHF, BladeRF, HackRF, LimeSDR, PLUTO (via [`Soapy`](https://wiki.gnuradio.org/index.php/Soapy))
> **Note:** SDRplay clones (i.e., unofficially produced copies of SDRplay receivers) will likely not work with spectre as they are not compatible with the official SDRplay API.
## Supported Platforms
`spectre` is expected to be compatible with most Linux distributions.
The following platforms have been verified:
- **x86_64**
- Ubuntu 22.04.3 LTS
- **arm64**
- Ubuntu Desktop (22.04)
- Raspberry Pi OS (Desktop and Lite)
macOS compatibility will be explored in the future.
## Quick Start
### **Prerequisites**
To get going, you'll need the following installed on your machine:
| Prerequisite | Do I Already Have It? |
|--------------|-----------------------|
| [**Docker Engine**](https://docs.docker.com/engine/install/) | Run `docker --version` |
| [**Docker Compose**](https://docs.docker.com/compose/) | Run `docker compose --help` |
| [**Git**](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) | Run `git --version` |
### **Getting started**
1. **Clone the repository**
Clone the `spectre` GitHub repository and navigate to its root directory:
```bash
git clone https://github.com/jcfitzpatrick12/spectre.git && cd spectre
```
2. **Configure your host**
Set up targeted USB permissions for the `spectre` application, and initialise environment variables, with sensible defaults:
```bash
chmod +x setup.sh && sudo ./setup.sh
```
This is __required__ to run the `spectre-server` as a non-root user, which is the default behaviour.
3. **Start the containers**
Ensure any receivers are connected, then create and run the containers in the background:
```bash
docker compose up --detach
```
> **Optional:** Omit the `--detach` flag, if you'd like to run them in the foreground. Everything works the same, but you'll have to open a new terminal tab for the next steps.
4. **Create an alias for the CLI**
In a new terminal tab, set up the following alias:
```bash
alias spectre='docker exec spectre-cli spectre'
```
This lets you run `spectre-cli` commands as if they were executed directly on the host.
4. **Good to go!**
Verify everything is up and running with:
```bash
spectre --help
```
### **Check your receiver is detected**
If you have a physical receiver connected, it's a good idea to verify that the `spectre-server` can detect it.
- For SDRplay receivers, run:
```bash
docker exec spectre-server sdrplay_find_devices
```
- For USRP receivers, run:
```bash
docker exec spectre-server uhd_find_devices
```
If this is the first time you're running the containers since plugging in the device, it may not be detected. Ensure the receiver is still connected, then restart the `spectre-server` with:
```bash
docker restart spectre-server
```
### **Run the CLI without Docker**
You can also run the CLI locally, without the `spectre-cli` container.
1. **Create and activate a Python virtual environment**
Create and activate a Python virtual environment dedicated for the `spectre-cli`:
```bash
python3 -m venv ./.venv && . ./.venv/bin/activate
```
2. **Install the dependencies**
Install the dependencies into the newly activated virtual environment.:
```bash
pip install ./cli
```
3. **Remove the existing alias**:
Remove any existing alias to prevent shadowing:
```bash
unalias spectre
```
4. **Good to go!**
Verify everything is up and running with:
```bash
spectre --help
```
## Contributing
Have an idea or found a bug? Start by [creating an issue](https://github.com/jcfitzpatrick12/spectre/issues) to suggest features, report bugs, or ask questions.
### Project Structure
_Spectre_ development spans a few repositories:
| Repository | Description |
|------------|-------------|
| [spectre](https://github.com/jcfitzpatrick12/spectre) | Main application repository |
| [spectre-core](https://github.com/jcfitzpatrick12/spectre-core) | Python package containing server-side implementations |
| [gr-spectre](https://github.com/jcfitzpatrick12/gr-spectre) | Custom GNU Radio blocks |
### Development Workflow
We follow [GitHub flow](https://docs.github.com/en/get-started/using-github/github-flow) and use containerised development environments. You can take a look at our PR templates in advance to understand what we expect with contributions.
Here's how to get started:
1. **Set up the development environment**
Fork the repository, and start the development containers:
```bash
git clone https://github.com/YOUR_USERNAME/spectre.git && cd spectre
docker compose --file docker-compose.dev.yml up --build
```
> **Optional:** Update the `development` stages in each `Dockerfile` to clone your own forks, before building the images.
2. **Make your changes**
- Use VS Code's [Dev Containers](https://code.visualstudio.com/docs/devcontainers/containers) extension for development
- Develop inside the `spectre-dev-server` container for work on the `backend` directory, `spectre-core` or `gr-spectre`
- Develop inside the `spectre-dev-cli` container for work in the `cli` directory
3. **Submit your contribution**
- Push changes to your fork
- Open a Pull Request in the appropriate repository
> **Note:** While historical code may lack tests, all new contributions must include unit tests.

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 KiB

View File

Before

Width:  |  Height:  |  Size: 509 KiB

After

Width:  |  Height:  |  Size: 509 KiB

View File

Before

Width:  |  Height:  |  Size: 339 KiB

After

Width:  |  Height:  |  Size: 339 KiB

View File

Before

Width:  |  Height:  |  Size: 393 KiB

After

Width:  |  Height:  |  Size: 393 KiB

View File

Before

Width:  |  Height:  |  Size: 344 KiB

After

Width:  |  Height:  |  Size: 344 KiB