https://github.com/argilo/contest-sdr
An SDR-based transeciver for amateur radio contests
https://github.com/argilo/contest-sdr
hacktoberfest
Last synced: 9 months ago
JSON representation
An SDR-based transeciver for amateur radio contests
- Host: GitHub
- URL: https://github.com/argilo/contest-sdr
- Owner: argilo
- License: gpl-3.0
- Created: 2015-06-02T21:30:19.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2025-04-07T17:07:30.000Z (about 1 year ago)
- Last Synced: 2025-04-07T18:24:38.851Z (about 1 year ago)
- Topics: hacktoberfest
- Language: Python
- Homepage:
- Size: 599 KB
- Stars: 32
- Watchers: 6
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
# contest-sdr
Author: Clayton Smith
Email:
The intent of this project is to turn a transmit-capable SDR board (HackRF,
BladeRF, PlutoSDR, USRP, or LimeSDR) into a multi-band transceiver for use in
amateur radio contests such as the ARRL June VHF contest. At present it only
supports CW.

## Usage
Install GNU Radio 3.10 or later. Make sure that SoapySDR support is included,
and the SoapySDR driver for your target device is installed. On Ubuntu 22.04,
simply run `sudo apt install gnuradio` to get an appropriate version of GNU
Radio, SoapySDR and drivers.
Clone this repository: `git clone https://github.com/argilo/contest-sdr.git`
From the `contest-sdr` directory, run one of the following commands:
* `./b200_transceiver.py` — USRP B200
* `./blade_transceiver.py` — BladeRF
* `./hackrf_transceiver.py` — HackRF
* `./lime_transceiver.py` — LimeSDR
* `./pluto_transceiver.py` — PlutoSDR
Each of these scripts ties together the corresponding `_rx` (receive)
and `_tx` (transmit) flow graphs, which are built with GNU Radio
Companion. The GUI is part of the receive flow graph.
When the application starts it will be in calibration mode, which uses the
pilot tone of ATSC channel 33 (584.309441 MHz) to help adjust the PPM
correction value. Adjust the PPM setting up or down until the pilot signal is
at 100 kHz in the upper (IF) waterfall, and at 700 Hz in the lower (audio)
waterfall.
Next, select the band you would like to transmit on. Adjust the receive and
transmit gains as desired. The audio scope (lower right) shows the received
audio signal. If clipping occurs, reduce the receive gain.
To transmit CW, type your message into the "CW to send" box and press
enter. Once transmission is complete, the box will empty and the receive
waterfalls will start running again.
## Building a bootable USB flash drive
On a Debian-based system:
* Install the dependencies: `sudo apt install qemu-system-x86 ovmf`
On an Arch-based system:
* Install the dependencies: `sudo pacman -S qemu-full edk2-ovmf`
Additional steps:
* Download https://releases.ubuntu.com/noble/ubuntu-24.04.2-live-server-amd64.iso
and place it in `~/Downloads/`
* Generate the live USB images: `./liveusb/create.sh`
* At the prompt, enter your password to allow the Ubuntu ISO to be mounted
* Write an image to a flash drive (16 GB or larger): `sudo dd if=liveusb/contest-sdr-uefi.img of=/dev/sdb bs=4M conv=fsync`
Boot from the flash drive and double click the "Contest SDR" icon on the
desktop corresponding to your SDR device.
For old systems that don't support UEFI, the `contest-sdr-bios.img` image can be flashed instead.
## License
Copyright 2015-2025 Clayton Smith
This file is part of contest-sdr
contest-sdr is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
contest-sdr is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with contest-sdr; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street,
Boston, MA 02110-1301, USA.