WebSDR – Internet-connected Software-Defined Radios
websdr.org
websdr.org
Is something like an AM radio signal decoding relatively easy to understand? What about FM? And NTSC?
Is the python code clear-ish? Complicated? Full of math I’m not appreciating?
Thanks!
Ok… it’s not exactly trivial: https://pysdr.org/content/rds.html#fm-demodulation
You really should play with audio samples from your system to get a feel for things, before diving into the math. You can also use it with a $30 rtlsdr dongle.
Wow! Thanks for posting this.
It’s not trivial, but very meticulously written.
It would definitely classify as a “learn python the hard way” challenge for a math-y learner.
FM is built on a simple idea, but it has more involved maths.
Analog television signals are way more complex IIRC.
Re: the lib you linked - libs used to deal with radio signals is made by people who have studied signal processing and comm systems formally so you will see lots of jargon and advanced maths like Fourier Analysis. However, you most likely can build something shittier yet working by yourself by understanding the fundamentals of how those signals are encoded, modulated and transmitted.
Skyking is a military radio transmission protocol, believed to be command-and-control in nature. Some believe there to be a correlation between the length of the encoded message/how many times the operator says “Skyking” and the DEFCON level/how close the US is to blowing shit up.
10m (28MHz) has great propagation right now during the day so you'll hear people talking across great distances, like California to Japan or Australia.
> ![[websdr_recording_2023-10-27T05 51 46Z_7197.0kHz.wav]] I would like to wish you a very good morning, thank you very much for your years, and you too, if you have a celebration or you are celebrating, to enjoy them, to be well. Well, I have listened to Danasis, I have listened to Christos, I have listened to my friend Petros, I have listened to my friend Giorgos, all the company here. Well, I don't know, now I will listen to you here, if there are other guys, my good morning. But I won't take it, because I have to go. Just for a good morning, I stepped here at 797 and I know bread, and I will go to my friend Danasis, my friend here. It's me, your friend, come. Come, come, good morning, good morning Dimitris, good morning. What's up, what are we doing? I'm glad to hear you, my happy years, of course, I sent you my happy years yesterday, and I saw that you received it, so since yesterday it has been a while, but even today, it doesn't hurt, and the more wishes we give, the greater is the possibility that these wishes will come true. Well, I see. Don't tell me, let's talk for a while, Dimitris, before we move on to the next one. In any case, are you ready?
> Q: My SDR can be tuned from 0 to 30 MHz (or from 25 to 1900 MHz, or whatever). Can I offer all of that tuning range to the users?
> A: No. Such an SDR does not feed the entire 0-30 or 25-1900 MHz spectrum to your computer: that would be way too much data. Instead, a small part (at most a few MHz) are filtered out in external hardware, centered around some frequency that you can tune. With the WebSDR software, users can only tune around within that small part of the spectrum. You (as the operator of the site) choose the centerfrequency
Rydberg antenna range: 0-20Ghz, https://news.ycombinator.com/item?id=28402527 https://en.wikipedia.org/wiki/Rydberg_atom
Bus width:
W3C WebUSB enables USB device access from JS, TypeScript, WebAssembly, and anything that emscripten emcc can compile to WASM (for use with the in-browser WASM runtimes, or the newish docker WASM runtime CLI arg). Emscripten-forge is one way to build WASM WebAssembly from e.g. C, Python.
W3C WebRTC specifies audio/video/message relaying and NAT traversal: https://webrtc.org/getting-started/media-devices
OpenWRT has an rtl-sdr package but not yet a WebSDR package; and an nginx-ssl package, but there's not yet an nginx-rtmp-module package fwics: https://www.google.com/search?q=nginx-rtmp-module+openwrt
OpenWRT wiki > SDR, LoRA / LoRAWAN , Mesh https://openwrt.org/docs/guide-user/advanced/sdr , https://www.google.com/search?q=openwrt+lora
Pipewire may now arguably be the best way to handle audio and video streams with Linux. Pipewire is not yet supported on OpenWRT ? but is probably already supported by DragonOS (Lubuntu 22.10+)?
Pipewire: https://en.wikipedia.org/wiki/PipeWire https://wiki.archlinux.org/title/PipeWire
https://news.ycombinator.com/item?id=30613125 ... Pipewire to WebRTC:
pipewire-screenaudio: https://github.com/IceDBorn/pipewire-screenaudio:
> Extension to passthrough pipewire audio to WebRTC Screenshare
awesome-amateur-radio#sdr https://github.com/mcaserta/awesome-amateur-radio#sdr
The OpenWRT wiki lists a few different weather station apps that can retrieve, record chart, and publish weather data from various weather sensors and also from GPIO or SDR; pywws, weewx
weewx: https://github.com/weewx/weewx
A WebSDR LuCI app would be cool.
LuCI docs > Modules: https://github.com/openwrt/luci/blob/master/docs/Modules.md
SETI + Unistellar => all cool things: https://www.seti.org/unistellar-and-seti-institute-partnersh... https://www.seti.org/unistellar-seti-institute-education
https://www.unistellar.com/citizen-science/ :
> Citizen Astronomer Network: The Unistellar Network is a worldwide community of Citizen Astronomers working in partnership with professional astronomers at the SETI Institute. Members use their Unistellar telescope to collect astronomical data, which is supplied to SETI Institute astronomers who then use it to develop predictions and models
"Synthetic aperture": https://en.wikipedia.org/wiki/Synthetic-aperture_radar
"WebUSB Support for RP2040" that has 2x20 pin (*) GPIO and MicroUSB: https://news.ycombinator.com/item?id=38007967
A radiotelescope attached to a 30 pin Model B could probably also feed WebSDR?
Actually the instantaneous bandwidth of a ryberg antenna based receiver is only about ~4 MHz in implementation papers I've read. A good fit for a 2 MHz instantaneous banwidth $20 rtl-sdr dongle. The 0-20 GHz is the tuning range (again).
How should they be placed in spacetime to minimize signal loss e.g due to crosstalk and cost?
I bought both a HackRF and an Ettus USRP B210 years ago for playing with.
I am yet to actually do anything of interest! Anyone want to share anything cool they’ve done in the SDR world?
I really enjoyed making antennas and capturing data from satellites.
Getting trunking receivers (eg unitrunker) to listen to local first responder radio.
Decoding pagers is fun
As others have said, decoding various devices that talk on the various ISM bands is interesting.
Just band surfing at night is a lot of fun imho. Finding random signals and trying to figure out what they are is cool.
If I were to do it over, I'd likely want to optimize things quite a bit to get the sensitivity up.
The amazing thing is, though the RTL-SDR dongles are only 8 bit devices, when you're down-sampling 2Mhz of them to audio frequencies, you gain quite a few bits of resolution. I routinely pick up signals below the quantization threshold.
I wonder what the lower bandwidth limit truly is, assuming a stable reference clock.
Unlike a traditional scanner which only monitors one frequency at a time, if two things are happening simultaneously then you hear them both. This would be annoying or unlistenable in a busier area, but in my area it works fine.
previously: https://news.ycombinator.com/item?id=18571139
I really think this is one of the reasons for the stagnation in the field.
Edit: I was thinking maybe something that reads from an rtl or airspy, or maybe soapy? Then takes requests for channels over websockets from a wasm front end, then have the demod wasm side? And a waterfall streamed as a video to aid in making the channel selection? It would save bw to put demod server side, but this way clients could use custom demods if they want.
You would need more radios. If you added more radios you would need antenna that worked across the various bands people would want to listen in on. Those can create “cross-talk” to other antenna close-by. There’s not a simple solution to this. Nor does the novelty of it warrant solving this problem.
I think something like FlightAware where users sample their own radios at frequencies and submit them to a service that can aggregate the spectrum in real-time is the only real way to provide a web-based “tune to any radio frequency” SDR.
Edit: I looked it up. You are indeed correct. 10MSPS IQ output. 10Mhz panorama spectrum view. That’s ridiculous! I just bought one.
It just depends on where you are looking. There’s plenty of OSS for SDR (it’s in the kernel, btw) on Linux. Windows you’re going to get closed source 80% of the time. Mac, forget about it.
-Old Ham
I have one, but you need to hunt down EMI sources, before you can properly use it.
Do you have any recommendations for doing this? I have some source that interferes every 11 seconds for a second or so. It causes packet loss with my wifi (2.5 and 5GHz), and makes my bluetooth game controllers really frustrating to use, since input are missed every time it does it. I assume it's in the microwave range.
I'm familiar with RF test equipment, and I've thought about renting a spectrum analyzer, but I assume there's maybe some cheaper way.
WebSDR on other hardware is a better alternative-ish.
Can also demodulate digital modes (DMR, YSF, etC) and it have nice, modern UI.
WebSDR have a weird list of requirements if you want to get install file - should open instance to public, provide lots of info, etc etc etc. It's not just closed-source.
I have done this with a crude rtl-sdr stick.