gqrx-sdr / gqrx

Software defined radio receiver powered by GNU Radio and Qt.
http://gqrx.dk
GNU General Public License v3.0
3.05k stars 541 forks source link

(US) RDS "Alt. Frequencies" often shows wrong value #1340

Open n1zyy opened 7 months ago

n1zyy commented 7 months ago

First, I'm a big fan of Gqrx! Thanks!

I am using 2.17.4 on macOS 14.3.1 (Sonoma), with an Intel chip. The receiver is a cheap NooElec rtl-sdr.

I noticed what I suspect is a minor bug with decoding RDS data on FM radio stations in the United States. I noticed that the line for alternative frequencies is often showing unexpected values: the screenshot below shows 105.7 (WROR-FM) listing 106.7 MHz (WMJX-FM) as an alternate. These stations are arguably competitors, owned by different companies, so it would be weird to list one as an alternate.

Screenshot 2024-03-06 at 10 27 34 PM

I initially assumed it was an RDS programming mistake at the station, but if I tune to 106.3, it also lists 106.7 as its alternate frequency. And if I move to 104.5, then that value becomes the one that sticks on other stations. Here's the same 105.7 station after having tuned to 104.5:

Screenshot 2024-03-06 at 10 46 34 PM

Toggling "Enable RDS" off will clear all the values from the display (of course), but when re-enabling it, the incorrect alternate frequency value comes back almost immediately. If I tune to a very weak station (or one that otherwise doesn't appear to set any RDS data), the value is not there--it only comes in when there is some RDS data.

I suspect, without knowing my way around this code (or the intricacies of decoding RDS), that what is happening is that the field is displaying the last alternate frequency value that was set on any station, or something along those lines.

I probably don't have the C++ chops to find and fix this directly, but am happy to help debug in more detail if it's useful.

argilo commented 6 months ago

Thanks for the bug report.

I suspect, without knowing my way around this code (or the intricacies of decoding RDS), that what is happening is that the field is displaying the last alternate frequency value that was set on any station, or something along those lines.

This sounds plausible, since I don't think frequency changes cause the RDS data structures to be reset.