Hacker News new | past | comments | ask | show | jobs | submit login
WebSDR – Internet-connected Software-Defined Radios (websdr.org)
265 points by nickt 10 months ago | hide | past | favorite | 64 comments



I’d love to decode some radio signals - just to go through the “motions” and try my hand at it.

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


AM in particular is quite intuitive as you can study the modulation visually. IMO it's the "everyone could have invented that" modulation technique.

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.


>> https://pysdr.org/content/rds.html#fm-demodulation

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.



There's for example SDR++ (https://www.sdrpp.org/), which has lots of plugins to decode specific types of signals, or SDRangel (https://www.sdrangel.org/), which has quite some digital signal decoders built-in.


Try out gnu radio, you build flow graphs in a GUI and it executes them in real time.

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.


For those interested in SDR, there was recently a discussion here on signals identification [1], and some months ago a discussion of NXP's new LA9310 ADC chip for radio applications [2]:

[1] https://news.ycombinator.com/item?id=37869534

[2] https://news.ycombinator.com/item?id=35325165


Sadly the LA9310 DSP instruction set is considered highly proprietary[1] by the manufacturer, NXP. So I'll give this one a miss, and choose a FPGA based SDR instead. Some of the FPGAs even have a completely open-source toolchain, that has been developed by reverse engineering the bitstream format.

1. https://news.ycombinator.com/item?id=35357451


University of Twente in the Netherlands has a great websdr[1] running some custom hardware that can tune into pretty much the entire shortwave spectrum. I've spent countless hours tuning in to various European radio stations and broadcasts (you can even pick up the odd number station if you are on the right frequency and get lucky with timing).

[1] http://etgd1.ewi.utwente.nl:8901/


This link is pretty famous in some “conspiracy theorist” circles, specifically those interested in “Skyking”.

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.


Have used this for number stations in the past. It's great - amazing what you can still find on shortwave.


If you're looking for chatter, check out https://pota.app and filter by SSB. You'll hear people making contacts for the Parks On The Air program.

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.


Randomly clicked on to a greek located site, and wondered what they were talking about so I sent a bit of the audio to openai whisper api just to find it was mostly radio etiquette and souvlaki recipes.


> 12 and a half, one. So, I eat all my food. I eat these wonderful souvlaki. There's a table next to it. I sit down. So, once again, once again. The best souvlaki in Greece. What can I tell you? That's it. Every Saturday. And outside Athens. I'm not in Athens. Somewhere outside. So, we'll talk about it. So, Dimitris. So... Yes, yes. So, yes. Ok. I'll give the microphone to Papa My Golf. Ok. And he'll give 20 more. This time. So, I'll let Victor speak. I'm listening to you, Papa My Golf. Next time you should have more signals, Papa My Golf. We're probably talking less today. So, I'm listening to you. Ready. Good, good. There's a gap. Very good. The company doesn't help to do many things on its own. Whatever it does now. I think we should go to the next recipe. Thank you, Dimitris. I have a break. I'll give the microphone to him. Good morning. Papa My Golf here. Good morning. Papa My Golf here. Good morning. I think I'll give the microphone to him. I'll give it to him. Next time. Ok.

> ![[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?


Most likely Papa Mike Golf, rather than My Golf, Mike being the NATO phonetic alphabet representation of M. It's a reference to the last three characters of the operator's callsign.


It sounds like Papa My Golf to me. I suspect ˈpɑːpə maɪk ɡɒlf/ is reduced to ˈpɑːpə maɪ ɡɒlf/ because of the closeness of the K and G.


Years ago I made a couple of SoftRock receivers for the 20m and 40m CW bands and put them on a couple of Raspberry Pis. I got WebSDR to run on it and it's kinda become a thing now.

https://n5dux.com/ham/raspberrypi/websdr.php


From the WebSDR FAQ:

> 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?


>Rydberg antenna range: 0-20Ghz, https://news.ycombinator.com/item?id=28402527 https://en.wikipedia.org/wiki/Rydberg_atom

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 many 4 or 2 Mhz antenna/transceivers are necessary to sufficiently cover a 0 to 1 Ghz (0 to 1000 to 1000000 Mhz) band? What about to cover 1 Thz: (terahertz) band(s)?

How should they be placed in spacetime to minimize signal loss e.g due to crosstalk and cost?


This is a cool project.

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?


Those are both extreme overkill for the task but participating in ADSB networks for sites like flightradar.

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.


I have a pm2.5 sensor that hooks to a weather station I don’t have. I am using a cheap SDR to grab the data over the air and dump it into a mqtt topic for consumption in home assistant. Standing on the shoulders of giants and all, but it’s still pretty neat.


I use rtlamr to receive and record my natural gas usage, and I wrote some code to receive my water usage from my water meter (though I’ve since moved that code to an Adafruit Feather w/ an RFM69 module).


I run a local Fire/EMS scanner feed for my county so people can listen in without a scanner or SDR of their own. It uses a bunch of directional antennas in the attic for best reception (I can't put up a giant mast antenna) connected to a bunch of Nooelec rtl-sdr dongles.

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.


I put together a VOR navigation receiver in a GNU Radio flowgraph. It was cool driving around the local beacon and having it point the right way as I moved.


Love that. Curious what kind of range did got (I assume not great).


I never tested it, I was just happy to get it working.

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.


Not me but this was neat and interesting (after using SDR to capture)

https://www.youtube.com/watch?v=EFLvHMJ5PHk


Oh cool. I suppose since they have locations too, it should be possible to profile aggregated mains power fingerprints from these for video time and location fingerprints. Though that said, there are probably a few ways to collect that info. If you know the frequencies to profile you could probably store the mains hum for all of them and have a good go at geo-locating video and audio content for many places.


WebSDR's are indeed awesome. Get your ham license and you can transmit too and not just listen!


Is there any good open source software for WebSDR? I am living in a very noisy area from RF standpoint, but my parents are living in a better position. So I was thinking to install a SDR and a Raspberry and use them as remote SDR


If you don't need the web interface and your usual desktop SDR software supports rtl-sdr tcp mode, you can easily set up a small board that calls rtl-sdr with the appropriate parameters so that it will wait for a remote connection from the above software, not unlike what happens with WebSDR, but you would be using your usual desktop SDR application which would be native and much more snappy than a web browser. Here's an example using gqrx.

https://www.youtube.com/watch?v=74jDcHuDCmE

https://gqrx.dk/


Ah yes, good suggestion. I forget about it. I have a mini whip antenna that I can place on the roof.


OpenWebRX is a good thing to start with, especially the fork at https://github.com/luarvique/openwebrx/


Why are there none in Canada? Or Australia? Are there parts of the world where Internet connected SDR is illegal or something?


There are some (SDRs on the internet) Have look here. https://rx-tx.info/map-sdr-points

http://ve3hoa.ddns.net:8073/


this is pretty neat. i remember some old guy on youtube showing cool things you could do with a cheap sdr dongle. and i remember some guy using gnu radio to hack into a car


Interesting how many are clustered in Utah


it's still closed source software?

previously: https://news.ycombinator.com/item?id=18571139


for open source alternative take a look at https://www.openwebrx.de/

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 thought that it couldn't demodulate DMR and other modes unless it had the hardware to do so. Feel free to correct me if I'm wrong, though.


You definitely can, but legality of such procedure is questionable. DMR uses AMBE codec, which require licensing from DVSI, but you can find open-source implementation on github (mdelib, jMBE). Projects such as DSD-FME[1], which allows you to decode much more than just DMR (P25, NXDN or SDRTrunk[2], which allows you to listen to trunking systems (p25, dmr tier 3 and much more) uses software implementation. OpenWebRX users software decoder too https://github.com/jketterl/digiham

[1] https://github.com/lwvmobile/dsd-fme

[2] https://github.com/DSheirer/sdrtrunk


DMR can definitely be handled by software.

I have done this with a crude rtl-sdr stick.


If you want to have something similar for use at home, you could take a look at http://kiwisdr.com.

I have one, but you need to hunt down EMI sources, before you can properly use it.


> 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.


You could get an rtlsdr dongle cheap and use it as a spectrum analyzer. There are command line utilities for that task in with the drivers online.


they don't go up to the 2.4/5Ghz range though, they max out at about 1.7


Yeah, but it seems he's got a broadband noise source, likely the 2.4 Ghz is a harmonic of something that is within their range.


You can also use high-Q antennae, if you have a frequency of interest. For instance, on HF (shortwave) a tunable small loop antenna does a whole lot better than a wire antenna in a high-random noise environment. You may still end up chasing down various bogies, but a lot of them can be blocked with the directionality of the antenna or the filtering properties of the antenna (higher Q antennas are more narrowband).


The limited availability of KiwiSDR's have made it crazy high priced. I've been trying to get one for a year now but they're up to like $600 on aliexpress. KiwiSDR2 has been announced, but that's a ways off from being sold.

WebSDR on other hardware is a better alternative-ish.


I have one too, on an active magnetic loop, which does a decent job of nulling near field interference.

http://kiwisdr.lounix.net:8073/


It is closed. There is a lot of ham radio software that isn't open source. And a lot of open source isn't developed openly. You would think that all of it would be open source but I think a lot of hams didn't come from software world.


There’s quite a bit of overlap, actually. For some reason all of the old hams want to do .NET applications, though.

I really think this is one of the reasons for the stagnation in the field.


To add color to this. The reason being is because a lot of the old C++ libraries and code no longer function so pushing for .NET applications helps bring them into the 21st century. Also, I think it’s more because of the fact that C# is very familiar to C/C++ developers. However, I believe the true target architecture should be Linux and there’s some work in this area. GNU Radio, Gqrx, Qradiolink.

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


What would people want this to look like? Is there a backlog anywhere of stuff people would want?

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.


The perceived stagnation in the field is because you can’t multiplex an SDR stream. One user can control the radio at a time. You can not listen on more bands than your radio can receive at once. Capping out at 192hz band audio sampling on most hardware. Which means you can read a wide signal but you can only read one area of the spectrum at a time.

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.


An airspy can digitize 12MHz of bandwidth at once. Even without a gpu you can spit out easily over a dozen digitally subtuned channels. The bandwidth for all that raw signal data going out would be the problem. Only one person can control where that 12MHz is centred, but people can pick where in it they want to listen just like they do with websdr now.


Even a $30 RTL-SDR dongle can record 2Mhz of bandwidth reliably. I've recorded hours of signals just in case it sometime later becomes interesting, and it all lives in a little corner of my hard drive.


Damn! Yes, you would need to have one user center the spectrum read and you can mux the output to users wanting specific bands but I had no idea an airspy had such a wide audio capture.

Edit: I looked it up. You are indeed correct. 10MSPS IQ output. 10Mhz panorama spectrum view. That’s ridiculous! I just bought one.


I think the boxy one, the r2 not the mini, had some hacky way to get 80msps but it didn't specify how that made it over usb or why that wasn't the normal operational mode.


Take a look at gnuradio.


I use https://github.com/jketterl/openwebrx with RTL-SDR sticks





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: