This is the repo for Waveband, a Hack Club YSWS where you ship a program that uses an RTL-SDR dongle, and we ship one out to you! Waveband is running from June 11th to July 11th, 2025.
- What's a YSWS?
- What's an RTL-SDR dongle?
- How can I get started?
- Example Projects
- What are the rules for submissions?
- Website
A "You Ship, We Ship" is a type of program for teenagers run by Hack Club. During a YSWS, teenagers can create their own program in return for a free prize. To participate in this YSWS, you'll need to create a program that uses an RTL-SDR dongle in a unique way, and in return, we'll ship one out to you!
An RTL-SDR dongle is a small USB device that can receive radio waves anywhere from 24MHz-1.7GHz in frequency. This means it can pick up on FM radio, aircraft signals, weather balloon data, phone signals, amateur radio, and more! It can even recieve TV broadcasts in Europe! The name RTL-SDR comes from the name of the chip used in these models – the RTL2823U – and the type of radio which it is: a Software-Defined Radio. Software-defined radios can be controlled entirely using code, and that's what makes them so powerful!
Getting started with Waveband and RTL-SDR is easy! For the purpose of this YSWS, we have set up an API (rtl_tcp layered with rtlmux, if you're curious) that you can test your projects with. You can find an example of using this API in Python here. Firstly, you need to come up with an idea. This can be anything that uses an RTL-SDR dongle, as long as you can spend at least 10hrs working on it. Next, you need to implement your idea! You might need to do a bit of research if you've chosen an ambitious idea or you're new to SDR. You can use any language and tools you want, as long as most of the code is written by you. Feel free to ask in #waveband in the Hack Club Slack for help if you need it. Finally, you can submit your project! You'll need to have created some sort of demo for this; if your project contains a web interface, then you should host it online. If it doesn't, a video and installation instructions should suffice.
The Waveband API is an easy way to test your project using data from a remote dongle. It uses rtl_tcp and rtlmux under the hood, so it's widely supported and easy to use! We recommend using SoapySDR to connect to the API, along with the SoapyRTLTCP module. There's an example of how to use the API in Python here.
We've compiled a list of example projects that show you what kind of projects you can build for Waveband, which we've listed here.
Rust1090 is a program that complements dump1090 with additional features such as statistics tracking, a dashboard, and dark mode. it was built by @TuinboonDev, and you can check it out here.
RTL-SDR Radio is a cross-platform, minimalistic desktop app for listening to FM and AM radio and decoding ADS-B signals from aircraft. It was built by @njfdev and you can view its GitHub repository here.
SDR-Weather is a program that uses an RTL-SDR dongle to receive weather data from nearby aircraft. It then presents this data using TTS (Text To Speech) and an auto-generated Leaflet.js map. It was built by @CragglesG and you can see it here.
- You can build your submission on top of dump1090 or similar software, but most code must be written by you.
- Your submission must have a unique idea; projects will be checked for plagiarism and fraud.
- You may use AI tools such as GitHub Copilot to assist with debugging and autocompletion, but you may not use AI to generate large amounts of code or provide ideas.
- Your project must be open source
- You may not work extensively with others on your project, but you can get help if you’re stuck.
- You must spend at least 10 hours on your project, tracked using Hackatime
The Waveband website is located in the website directory, and you can view it here. It's based on the Vine website.