[HN Gopher] Nrsc5: Receive NRSC-5 digital radio stations using a...
       ___________________________________________________________________
        
       Nrsc5: Receive NRSC-5 digital radio stations using an RTL-SDR
       dongle
        
       Author : greesil
       Score  : 179 points
       Date   : 2023-11-06 00:47 UTC (20 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | zdw wrote:
       | A GUI built on top of this:
       | https://github.com/markjfine/nrsc5-dui
        
         | westurner wrote:
         | From https://github.com/markjfine/nrsc5-dui#maps :
         | 
         | > Maps: _When listening to radio stations operated by
         | iHeartMedia, you may view live traffic maps and weather radar.
         | The images are typically sent every few minutes and will fill
         | the tab area once received, processed, and loaded. Clicking the
         | Map Viewer button on the toolbar will open a larger window to
         | view the maps at full size. The weather radar information from
         | the last 12 hours will be stored and can be played back by
         | selecting the Animate Radar option. The delay between frames
         | (in seconds) can be adjusted by changing the Animation Speed
         | value. Other stations provide Navteq /HERE navigation
         | information... it's on the TODO 'like to have' list._
         | 
         | Is this an easier way to get weather info without Internet than
         | e.g. Raspberry-NOAA and a large antenna?
         | 
         | https://www.google.com/search?q=weather+satellite+antenna+ha...
         | https://github.com/jekhokie/raspberry-noaa-v2#raspberry-noaa...
         | :
         | 
         | > _NOAA and Meteor-M 2 satellite imagery capture setup for the
         | regular 64 bit Debian Bullseye computers and Raspberry Pi!_
        
           | argilo wrote:
           | If you live within the coverage area of an FM radio station
           | that's sending weather radar, it will probably be easier to
           | receive than NOAA satellites.
        
           | ac29 wrote:
           | > Is this an easier way to get weather info without Internet
           | than e.g. Raspberry-NOAA and a large antenna?
           | 
           | If you're OK with audio only, you cant beat NOAA weather
           | radio: https://www.weather.gov/nwr/
           | 
           | You can listen with a SDR, or any number of cheap radios.
        
       | superkuh wrote:
       | Back in 2015 this title would've read, "Listen to HD radio with a
       | $8 RTL SDR dongle".
       | 
       | First we ran out of E4000 tuners for the rtl-sdr dongles... but
       | there were R820T. Then then R820T ran out and R820T2 replaced
       | them. Then a proliferation of slightly less task specific R828D
       | variants. The price steadily increased. Then the pandemic hit and
       | it spiked even more.
       | 
       | At $8 a pop you could afford to use many of them mod them, etc.
       | But at $30 you pretty much treat it like any other SDR.
        
         | H8crilA wrote:
         | You're all correct, except there are not that many $30 SDRs out
         | there. Most of them start at around $200 and end in very very
         | high thousands. Also, most SDRs have clearly superior
         | capabilities to the RTL-SDR, though often those capabilities
         | are not required.
         | 
         | BTW, for simple AM/FM demodulation I cannot recommend enough
         | the handy https://github.com/charlie-foxtrot/RTLSDR-Airband.
         | Most of the LiveATC.net feeds run on it, for example. It can be
         | used for any AM/FM audio, for any number of simultaneous
         | channels, even on a weak machine like a raspberry pi.
        
         | greesil wrote:
         | I was originally going to have $20 in the headline and then I
         | did a price check on Amazon. Man, the times have changed.
        
           | londons_explore wrote:
           | I'm pretty sure the price has gone up because Amazon charges
           | a huge markup/fees.
           | 
           | If you buy it from the source, it's now $9.
           | 
           | https://www.aliexpress.com/item/1005003302259707.html
        
             | argilo wrote:
             | Models targeting the SDR market (e.g. from RTL-SDR Blog or
             | NooElec) do have some improvements compared to models sold
             | as TV tuners. Most importantly, they often include a more
             | accurate crystal oscillator, which is useful when receiving
             | narrow-band signals.
        
             | superkuh wrote:
             | I was ready to say you've made my day but unfortunately
             | those rtlsdr dongles use the mostly unwanted Fitipower
             | FC0012 tuner and not any of the better Raphael tuners
             | (R820T2/etc) that are most common and expected for rtl-sdr
             | dongles. The frequency range supported and the rtl-sdr
             | software ecosystem for FC0012 are minimal.
             | Elonics E4000 (E4K) 54 - 2200 MHz (1100 MHz-1250 MHz gap)
             | Rafael Micro R820T 24 - 1766 MHz (>1500 MHz is bad w/o
             | tuner cooling)         Rafael Micro R820T2 24 - 1766 MHz
             | (>1500 MHz is bad w/o tuner cooling)         Rafael Micro
             | R820T2  13 - 1864 MHz (mutability's driver)
             | Fitipower FC0012 22 - 948 MHz         Fitipower FC0013 22 -
             | 1100 MHz (FC0013B/C, FC0013G has seperate L band input)
             | FCI FC2580  146 - 308 MHz and 438 - 924 MHz
             | 
             | Looking around on aliexpress most at that price at FC0012
             | tuner based (even if they say R820T). There are a couple
             | actual R828D dongles but the price shown seems to be one
             | time thing "welcome deal"/75% off and the actual price is
             | more like $25. Dang. Still, I'll keep my eyes on aliexpress
             | now as well as ebay, so thanks.
        
       | cf100clunk wrote:
       | Previously discussed at HN:
       | 
       | https://news.ycombinator.com/item?id=14564279
        
         | greesil wrote:
         | Oops. It was new to me.
        
           | carbocation wrote:
           | Previously discussed is not bad--especially since the last
           | discussion was 5+ years ago!
        
           | cosmojg wrote:
           | HN encourages good reposts. You did good.
        
           | cf100clunk wrote:
           | Nothing personal, not a dig, I'm a data archive exhumer by
           | nature. I and others add such links if there has already been
           | a bit of commentary on the topic. As others have said,
           | reposts can often be valuable. Here are a couple more:
           | 
           | https://news.ycombinator.com/item?id=25192522
           | 
           | https://news.ycombinator.com/item?id=27317802
        
       | donatj wrote:
       | Oooh nice. I've been wanting to listen to HD radio with my SDR
       | for years. Tried a couple libraries that claimed to work but
       | never had much success.
        
       | ronsor wrote:
       | If only there were a good library for using DRM (digital radio
       | mondiale) with SDRs.
        
         | Johnythree wrote:
         | Are you referring to AM/SW DRM, or VHF DRM?
         | 
         | For AM/SW DRM, the "Dream DRM decoder" works fine for me.
         | 
         | The trouble is that most of the Broadcasters have abandoned AM
         | DRM.
         | 
         | I just now did a quick scan. Of the 17 MW/SW channels I have
         | programmed, there isn't one on air with DRM.
        
           | argilo wrote:
           | DRM broadcasts are definitely hard to find. A schedule is
           | available here: https://www.drm.org/what-can-i-
           | hear/broadcast-schedule-2/
        
           | ronsor wrote:
           | I've used Dream before, and it works fine, but I wish there
           | was a more modular option in the form of a library. That
           | would be easier to plug into SDR tools.
           | 
           | I would write one when I get the time, but I've never been
           | able to find the actual specification anywhere.
        
             | argilo wrote:
             | The documents look to be available here:
             | https://www.drm.org/specification/
        
       | argilo wrote:
       | I'm a co-maintainer of this project. If anyone has questions, I'd
       | be happy to answer them.
        
         | geerlingguy wrote:
         | No questions, just thanks so much for maintaining it!
         | 
         | Back in 2019 the project enabled me to listen to the local
         | baseball team's broadcasts [1] without a traditional radio
         | since their online streams were restricted due to MLB's dumb
         | blackout rules.
         | 
         | [1] https://www.jeffgeerling.com/blog/2019/hospital-stay-and-
         | mlb...
        
           | argilo wrote:
           | I'm happy to hear you found it useful!
        
         | wg0 wrote:
         | What dongles and antennas are recommended. Asking as a noob
         | always fascinated by SDR.
         | 
         | Also, is SDR computationally expensive?
        
           | argilo wrote:
           | My preferred dongle is the RTL-SDR Blog V3: https://www.rtl-
           | sdr.com/buy-rtl-sdr-dvb-t-dongles/
           | 
           | They also have a new V4 version, but it requires updated
           | drivers that will take a bit of time to percolate out to
           | Linux distributions and the like.
           | 
           | NooElec also has a line of RTL-SDR dongles that I would
           | recommend: https://www.nooelec.com/store/sdr/sdr-
           | receivers.html
           | 
           | The best antenna will depend on what you're trying to
           | receive. Different antennas are optimized for different
           | frequency ranges, and may be either omnidirectional
           | (receiving equally well from many directions) or favour
           | reception in one particular direction. To get started, you
           | could buy a dongle that comes with an antenna included, but
           | you may eventually want to switch to something targeted to
           | the particular application you have in mind.
           | 
           | As for the computational cost, it depends a lot on what
           | you're trying to do. As a general rule, the wider the
           | bandwidth of the signal, the more processing power it will
           | take to demodulate. HD Radio is relatively narrow-band (400
           | kHz), so it doesn't require much CPU power to receive it.
        
             | cf100clunk wrote:
             | FM Band and TV antennae are easy to DIY, and you'll find
             | loads of great leading and bleeding edge designs and plans
             | online at forums like this:
             | 
             | https://www.digitalhome.ca/forums/antenna-research-
             | developme...
        
         | westurner wrote:
         | Would it be feasible to do something similar with OpenWRT opkg
         | packages to support capturing weather radar (and weather
         | forecasts and alerts?) data from digital FM radio with a USB
         | RTL-SDR radio?
         | 
         | Python apps require a bunch of disk space, which is at a
         | premium on low-wattage always-on routers.
         | 
         | OpenWRT's luci-app-statistics application supports rrdtool and
         | collectd for archived stats over time (optionally on a USB
         | stick or an SSD instead of the flash ROM of the router, which
         | has a max lifetime in terms of number of writes)
         | https://github.com/openwrt/luci/tree/master/applications/luc...
         | 
         | From https://news.ycombinator.com/item?id=38138230 :
         | 
         | > _LuCI is the OpenWRT web UI which is written in Lua; which is
         | now implemented mostly as a JSON-RPC API instead of with
         | server-side HTML templates for usability and performance on
         | embedded devices. [...] Notes on how to write a LuCI app in
         | Lua:_
        
           | argilo wrote:
           | It might be possible, but I'm not sure whether a typical
           | router would have enough CPU horsepower to do the processing
           | required to demodulate the signal.
        
             | westurner wrote:
             | What models of Raspberry Pi are sufficient, or how many Mhz
             | and RAM are necessary to demodulate an HD radio stream?
             | 
             | (Pi Pico, Pi Zero, and Pi A+/B+/2/3/4 have 2x20 pin headers
             | for HATs. Orange Pi 5 Plus has hardware H.265 encoding with
             | hw-enc and gstreamer fwiu.)
        
               | argilo wrote:
               | I haven't investigated the CPU and RAM requirements in
               | depth, but I have used nrsc5 on a Pi 3B without issue.
               | 
               | I suspect a Pi Pico would be too small.
        
           | argilo wrote:
           | Also, I should mention that Python is not a requirement. The
           | GUIs that people have created so far were written in Python,
           | but the nrsc5 project itself is built entirely in C, and it
           | exposes a C API.
        
         | myself248 wrote:
         | Have you ever found interesting/unexplained data in the packet
         | streams? I know there's provision for traffic stuff in there,
         | and a few other defined types, but what else is hiding?
         | 
         | Reason I ask, is analog FM had all sorts of sideband streams
         | for the longest time, like SCA audio and DirectBand digital,
         | that weren't well known at the time. And while internet access
         | is certainly easier to get these days, there might still be a
         | justification for one-way data broadcasts in certain
         | applications, so I wonder if someone's out there leasing
         | subchannels or sub-packet-IDs or what-not, and shuffling
         | encrypted data around in them.
        
           | argilo wrote:
           | Some stations have "HD TMC" (traffic message channel)
           | streams. The others that I've encountered are "HERE Images"
           | (traffic & weather radar images, discussed and mostly reverse
           | engineered in https://github.com/theori-io/nrsc5/pull/308),
           | "HERE TPEG", "TTN TPEG", "TTN STM", "NavteqAdmin" and
           | "NavteqPacketData1."
           | 
           | At present, nrsc5 makes these streams available through its
           | API, but doesn't otherwise do anything useful with them. I
           | don't believe any of the GUIs process them either. Some
           | reverse engineering work is needed.
        
             | argilo wrote:
             | Also, all of those stream types seem to be used across
             | multiple stations. I haven't seen any weird one-off
             | streams.
        
           | patja wrote:
           | There was the somewhat recent issue in Seattle where a
           | station included an image file with no file extension, and it
           | bricked the radios in Mazdas:
           | https://arstechnica.com/cars/2022/02/radio-station-snafu-
           | in-...
        
         | anonymousiam wrote:
         | Awesome project! I hope it doesn't get taken down by DTS!
         | 
         | Here's my question: Was there a reason for not using the GNU
         | Radio framework for this project?
         | 
         | https://www.gnuradio.org
         | 
         | Thanks!
        
           | argilo wrote:
           | That decision was made by the original author (Andrew Wesie),
           | but I think it makes sense because nrsc5 only needs a tiny
           | fraction of the functionality that GNU Radio provides.
           | Implementing the functionality directly in nrsc5 avoids the
           | need for a large and complex dependency.
           | 
           | One downside is that we don't get the broad hardware support
           | that GNU Radio provides, but maybe we'll someday take another
           | crack at integrating SoapySDR. (See
           | https://github.com/theori-io/nrsc5/pull/131 for an earlier
           | experiment with that.)
        
         | fooblaster wrote:
         | What documentation did you use to decode hd radio protocol?
         | From what I recall, the formats were all closed in some
         | capacity. Did you reverse engineer it?
        
           | argilo wrote:
           | Most of the details are available in the specification, which
           | is available here: https://www.nrscstandards.org/standards-
           | and-guidelines/docum...
           | 
           | The missing parts are the audio codec (HDC) and the formats
           | of the various data streams. These have required reverse
           | engineering.
        
         | donatj wrote:
         | What would it take to get this functionality merged into Cubic
         | or Gqrx?
        
           | argilo wrote:
           | I am also the maintainer of Gqrx and I would love for it to
           | have a built-in NRSC-5 receiver. The trouble is that some
           | aspects of NRSC-5 are still patent-encumbered, which makes
           | software distribution problematic. For that reason, nrsc5 is
           | only provided in source form today. The situation may change
           | once the relevant patents have expired.
        
       | homero wrote:
       | What's surprising is HD doesn't mean high definition. It doesn't
       | mean anything they just named it HD Radio
        
         | hunter2_ wrote:
         | Hybrid digital, which I believe refers to having both analog
         | and digital over a single carrier.
        
           | argilo wrote:
           | I've heard that term as well, but the official site denies
           | it: https://hdradio.com/trademark/
        
       | shane350 wrote:
       | This is actually extremely useful when hooked up to a laptop for
       | traveling, because of the embedded traffic information and maps
       | in the sideband data.
        
         | ghotli wrote:
         | If you're willing to share more on this subject, color me
         | interested.
        
           | argilo wrote:
           | Some stations send out traffic and weather images (as well as
           | album art and station logos). The files can be dumped to disk
           | using nrsc5's "--dump-aas-files" option. A few people have
           | built GUIs that display the information in a more convenient
           | way:
           | 
           | https://github.com/cmnybo/nrsc5-gui
           | https://github.com/markjfine/nrsc5-dui
           | https://github.com/KYDronePilot/hdfm
        
             | argilo wrote:
             | In addition to files, some stations also send out "stream"
             | and "packet" data. There is ongoing work to reverse
             | engineer the formats. See the discussion here for details:
             | https://github.com/theori-io/nrsc5/pull/308
        
               | westurner wrote:
               | Are there yet Clock, Weather Forecast, or Emergency Alert
               | text data channels in digital FM radio?
               | 
               | FWIU there are also DVB data streams?
        
               | argilo wrote:
               | Time information is broadcast, but in my experience it's
               | often inaccurate.
               | 
               | There's also a special stream for emergency alerts, but I
               | haven't seen it in use.
               | 
               | There are various data streams, but not DVB.
               | 
               | A lot of the details are described in the standard:
               | https://www.nrscstandards.org/standards-and-
               | guidelines/docum...
        
               | westurner wrote:
               | DVB-T could technically carry clock, weather forecasts,
               | and alerts as text data feeds.
               | 
               | What needs to be done to link WEA Wireless Emergency
               | Alerts with HD radio data streams? WX radio could
               | possibly embed a data channel? If it doesn't already for
               | e.g. accessible captioning?
               | 
               | DVB-T: https://en.wikipedia.org/wiki/DVB-T :
               | 
               | > _This system transmits compressed digital audio,
               | digital video_ and other data _in an MPEG transport
               | stream, using coded orthogonal frequency-division
               | multiplexing (COFDM or OFDM) modulation._
               | 
               | From https://www.rtl-sdr.com/about-rtl-sdr/ :
               | 
               | > _The origins of RTL-SDR stem from mass produced DVB-T
               | TV tuner dongles that were based on the RTL2832U
               | chipset._ [...]
               | 
               | > _Over the years since its discovery RTL-SDR has become
               | extremely popular and has democratized access to the
               | radio spectrum. Now anyone including hobbyists on a
               | budget can access the radio spectrum. It 's worth noting
               | that this sort of SDR capability would have cost hundreds
               | or even thousands of dollars just a few years ago. The
               | RTL-SDR is also sometimes referred to as RTL2832U, DVB-T
               | SDR, DVB-T dongle, RTL dongle, or the "cheap software
               | defined radio"_
               | 
               | From https://www.reddit.com/r/RTLSDR/comments/6nsnqy/comm
               | ent/dkbv... :
               | 
               | > [You need an upconverter to receive the time from the
               | WWV shortwave clock station on 2.5, 5, 10, 15, and 20
               | MHz] _http://www.nooelec.com/store/ham-it-up.html _
               | 
               | From https://news.ycombinator.com/item?id=37712506 :
               | 
               | > _TIL there 's a regular heartbeat in the quantum foam;_
               | [...] https://journals.aps.org/prresearch/abstract/10.110
               | 3/PhysRev...
        
       | londons_explore wrote:
       | How strong a signal do you need for this to work?
       | 
       | I have an RTL-SDR (R828D tuner) and I can just about receive
       | regular FM stations, but the quality is pretty bad - voice is
       | just about intelligible through the fuzz.
       | 
       | I don't know if my rtlsdr is bad, my antenna is bad, the signal
       | strength is weak, I have interference, or this is just the
       | quality expected from a $10 'TV tuner'.
        
         | argilo wrote:
         | RTL-SDR tuners usually have very good reception between 50 and
         | 1000 MHz, which includes the FM broadcast band. It is easy to
         | overload the analog-to-digital converter, so it's important to
         | make sure the gain is not set too high. Setting the gain too
         | low could also prevent reception if you're far from the
         | transmitter. If you're receiving from indoors, interference
         | from electronics in your house can cause trouble, and walls
         | attenuate radio signals. You could try moving the antenna, or
         | check whether it works better outdoors.
        
       | wkat4242 wrote:
       | Is this like DAB/DAB+? I've never heard of NRSC-5.
        
         | argilo wrote:
         | Yes, it is similar. It is used primarily in North America,
         | while DAB is used primarily in Europe.
        
         | cf100clunk wrote:
         | It is commercially known as the iBiquity In-Band-On-Channel
         | (IBOC) system a.k.a. HD Radio, now owned by DTS. It has been
         | implemented in the North American FM radio band and features
         | multiplexing of 2 or more subchannels per station. It has been
         | introduced in the AM band as well but a variety of technical
         | issues have tended to be too problematic. Unlike DAB, which has
         | its own dedicated bandwith, HD Radio is a system of sharing an
         | analogue FM radio station's existing bandwidth with a slice of
         | digital payload. HD Radio-capable receivers pick up the
         | analogue signal as usual, and if the digital streams are viable
         | will switch to reproducing them for the listener. HD Radio can
         | be broadcast digital-only, but I'm not personally up-to-date on
         | any presently doing that, given all the legacy analogue FM
         | receivers out there.
        
           | argilo wrote:
           | I'm not aware of any digital-only FM stations either. But
           | there are a handful of digital-only AM stations, like WWFD.
        
           | psim1 wrote:
           | > if the digital streams are viable will switch to
           | reproducing them for the listener.
           | 
           | This produces a weird effect when listening in the car and
           | moving in-and-out of good digital SNR range. When the radio
           | switches between analog and digital, unless the station has
           | them perfectly synced (never), there's always a little echo
           | or stutter. It seems like it would be nothing but it's quite
           | annoying.
        
             | cf100clunk wrote:
             | Particularly annoying while driving in very hilly areas,
             | that's for sure. There are some traits of signal
             | propogation that are very difficult to work around, even
             | with buffering and error correction remedies.
        
       | cf100clunk wrote:
       | Given the recent discussion about integrated FM radio receivers
       | in mobile phones, I wonder if those tuners could be used
       | internally in place of a dongle? A bit of discussion here:
       | 
       | https://news.ycombinator.com/item?id=37778149
       | 
       | This would be outside my capabilities.
        
         | argilo wrote:
         | It would only be possible if the tuner exposed raw RF samples,
         | the way RTL-SDR dongles do. I'm not sure whether any of the
         | integrated FM receivers do that.
        
       | patja wrote:
       | I have a little hobby project where I record an FM radio music
       | station using a SDR and then remove all the non-music portions
       | for offline listening. I like the music selections the DJs pick,
       | but I prefer not to listen to the DJ commentary and the
       | advertisements.
       | 
       | I evaluated three methods of recording: analog capture from a
       | standalone FM receiver, using this nrsc5 library to record the
       | "HD" radio stream, and using an AirSpy SDR with this library:
       | https://github.com/jj1bdx/airspy-fmradion
       | 
       | Recording the "HD" (what a misnomer) radio was nice in that there
       | was no hiss or multipath effects, but in comparison to the other
       | methods the digital compression artifacts became impossible to
       | un-hear. It seems to top out at about 96 kbps
       | 
       | The airspy-fmradion library has some nice stuff in it to address
       | multipath, resulting in the best audio quality of the three
       | methods I tested.
       | 
       | I use https://github.com/ina-foss/inaSpeechSegmenter to identify
       | which segments of the recordings are speech vs. music.
        
       ___________________________________________________________________
       (page generated 2023-11-06 21:02 UTC)