We seek to understand and document all radio transmissions, legal and otherwise, as part of the radio listening hobby. We do not encourage any radio operations contrary to regulations. Always consult with the appropriate authorities if you have questions concerning what is permissible in your locale.

Author Topic: SDR programming?  (Read 14649 times)

Offline skeezix

  • Global Moderator
  • Marconi Class DXer
  • *****
  • Posts: 5544
  • Minneapolis, MN
  • What does 'RNO stand for?
    • View Profile
SDR programming?
« on: June 01, 2016, 0008 UTC »
I have a Perseus, but want to do some stuff that isn't possible with the std GUI software.

Initially, I want to choose a bunch of frequencies to track & record the signal strength of a signal on a frequency, 24x7. Since carriers aren't exactly _right_ on a specified frequency, need to have a sludge factor of +/- 100 Hz to find the thing nearby and then track it. If it goes beyond +/- 100 Hz, then it can be forgotten about.

The input would be a list of frequencies and a name of the log file. The output would be the frequency, date, time, and signal level. Maybe shift from listed frequency, but since my Perseus doesn't have one of those high precision oscillators, I wouldn't put too much into adding freq drift.

In the GUI, the Perseus can go up to 1600 kHz of bandwidth received & demodulated, but they have a little program that displays the entire 0-40 MHz spectrum, but not in great detail. Which tells me this thing can go very wide, but in limited means. All I want is amplitude. If I have to restrict to 1600 kHz, well, not ideal, but will still work with that.


Down the road... want to do more and be able to specify freq + bandwidth and record AM/SAM signals. Scattered across the band, possibly simultaneously on a schedule.

And all via CLI only, on Mac, FreeBSD and/or Linux. No fancy GUI nonsense.

So The Question® is, where to begin?  ;D

I have a book on DSP, can do Perl and some minor hacking in C.

While I'd like to use the Perseus since I already have it, I would not object to buying a less expensive SDR that may be easier to program.

Would also like to get an SDR with the 10 MHz reference to study the frequencies of the stations, incl the time & freq standards. How does WWV's signal shift by the time it gets here?

Minneapolis, MN

Offline ChrisSmolinski

  • Administrator
  • Marconi Class DXer
  • *****
  • Posts: 31106
  • Westminster, MD USA
    • View Profile
    • Black Cat Systems
Re: SDR programming?
« Reply #1 on: June 01, 2016, 0039 UTC »
A number of years ago, I did something similar with my SDR-14, to track the amplitude of various stations, for some propagation studies. In that case, I used the raw A/D values from the SDR, which let me run an FFT on the entire HF spectrum. I assume you may want to do something similar?

I don't know anything about the Perseus interfacing, I just deal with RF Space SDRs (which have the added advantage that they released the app CuteSDR as open source, so it can be used as a starting point for your own SDR app). So your first step would be to figure out how to talk to the Perseus, and start getting data.  While you are doing that, you could probably get the existing Perseus app to save some raw A/D data as a file? If so, you could use that as test data to start working on your signal processing coding.

If you want to see the results of some work I did with looking at carrier drift, I think I have some posts scattered around the MW board here on the HFU. I was running 8M point FFTs IIRC.
Chris Smolinski
Westminster, MD
eQSLs appreciated! csmolinski@blackcatsystems.com
netSDR / AFE822x / AirSpy HF+ / KiwiSDR / 900 ft Horz skyloop / 500 ft NE beverage / 250 ft V Beam / 58 ft T2FD / 120 ft T2FD / 400 ft south beverage / 43m, 20m, 10m  dipoles / Crossed Parallel Loop / Discone in a tree

Offline skeezix

  • Global Moderator
  • Marconi Class DXer
  • *****
  • Posts: 5544
  • Minneapolis, MN
  • What does 'RNO stand for?
    • View Profile
Re: SDR programming?
« Reply #2 on: June 01, 2016, 0119 UTC »
I took a quick look at RFSpace for their models, but WAY above my budget (although, specs are perfect, esp that NetSDR+ with a couple of the options).

CloudIQ may be in the realm of possibility at some point this year. Are you familiar with that one?

Didn't know they released CuteSDR as open source and there is also GNU Radio. Those should be a great start.

The Perseus software does save files and I have TB of them (as well as from Studio1). And, that's another thing I'd want to do is to be able to read in recordings and do analysis on them, as if it was live. I know third party can do something with Perseus as Studio1 does. They interface to it via the a DLL, but that does me no good whatsoever on Mac, FreeBSD or Linux.

I do remember seeing the carrier drift articles, nothing short of fascinating and have read them several times. Do more!


Oh my :o  : 6th Annual GRCon, Sep 12-16: http://gnuradio.org/grcon-2016/
Minneapolis, MN

Offline ChrisSmolinski

  • Administrator
  • Marconi Class DXer
  • *****
  • Posts: 31106
  • Westminster, MD USA
    • View Profile
    • Black Cat Systems
Re: SDR programming?
« Reply #3 on: June 01, 2016, 0127 UTC »
I did write some code to read the Perseus I/Q files for my SDR playback app, that I can share if you're interested: http://www.blackcatsystems.com/software/sdr_iq_recording_playback_program.html
It's all written in Cocoa via Xcode on the Mac. The app is loosely based on the CuteSDR code, I converted various bits of DSP code from C++ to objective C.  I deal just with I/Q data, not raw A/D data, however.
Chris Smolinski
Westminster, MD
eQSLs appreciated! csmolinski@blackcatsystems.com
netSDR / AFE822x / AirSpy HF+ / KiwiSDR / 900 ft Horz skyloop / 500 ft NE beverage / 250 ft V Beam / 58 ft T2FD / 120 ft T2FD / 400 ft south beverage / 43m, 20m, 10m  dipoles / Crossed Parallel Loop / Discone in a tree

Offline skeezix

  • Global Moderator
  • Marconi Class DXer
  • *****
  • Posts: 5544
  • Minneapolis, MN
  • What does 'RNO stand for?
    • View Profile
Re: SDR programming?
« Reply #4 on: June 01, 2016, 0134 UTC »
Cool, thanks. I think I tried that way back then, but don't remember where I put the app (I tend to put things "for safe keeping" after a while, which means they get lost. For the longest time, I kept doing that with one of my books. I've finally found it again and not going to let it out of my sight. Ever).

And if I can peek at the source, I am definitely interested.

Hopefully I don't have to wait until after:
Quote
Last modified September 17, 2016
Minneapolis, MN

Offline ChrisSmolinski

  • Administrator
  • Marconi Class DXer
  • *****
  • Posts: 31106
  • Westminster, MD USA
    • View Profile
    • Black Cat Systems
Re: SDR programming?
« Reply #5 on: June 01, 2016, 1120 UTC »
Hopefully I don't have to wait until after:
Quote
Last modified September 17, 2016


Hah, thanks for catching that.  ;D
Chris Smolinski
Westminster, MD
eQSLs appreciated! csmolinski@blackcatsystems.com
netSDR / AFE822x / AirSpy HF+ / KiwiSDR / 900 ft Horz skyloop / 500 ft NE beverage / 250 ft V Beam / 58 ft T2FD / 120 ft T2FD / 400 ft south beverage / 43m, 20m, 10m  dipoles / Crossed Parallel Loop / Discone in a tree

Offline Token

  • Global Moderator
  • DX Legend
  • *****
  • Posts: 2118
    • View Profile
Re: SDR programming?
« Reply #6 on: June 11, 2016, 1520 UTC »
I have a Perseus, but want to do some stuff that isn't possible with the std GUI software.

Have you looked at SDR-Console?  I do not use it myself, but I seem to remember it having many more features than the Perseus GUI, possibly it includes a logging function?

Initially, I want to choose a bunch of frequencies to track & record the signal strength of a signal on a frequency, 24x7. Since carriers aren't exactly _right_ on a specified frequency, need to have a sludge factor of +/- 100 Hz to find the thing nearby and then track it. If it goes beyond +/- 100 Hz, then it can be forgotten about.

I am not a software guy, so my software skills are kind of basic.

I do basically that same thing you want with WinRadio gear, using the supplied RBASIC to make the radio do what I want it to do.

For example, I wrote a small RBASIC program that allows the radio (I can do it with any of my WinRadio rigs, from the 18+ year old WR-1000i to the G35DDC) to sequentially scan a set of frequencies and then write the results (time, freq, amplitude in dB) to a CSV file.  I can then later open the file in anything that works with CSVs and plot the results as needed.

The way I ignore other close signals is to select CW and a very narrow bandwidth, like 200 Hz or so, so that I am less likely to be impacted by signals more than +/- 100 Hz from my target freq.

An example is here, a scan of past used V24 numbers stations freqs to show activity.  This shows only 1250z to 1430z for that day, but the entire file was for an 8 hour period.  I can make the period anything I want it to be, and have done 48+ hour files.



In the past I did the same thing with a VisualBASIC program and an Icom R-75.

Using the G33 and G35 I have further modified the program to allow RX1 to scan, and record information to the CSV file, and direct RX 2 and 3 to record (either RF or Audio) when RX1 detects a signal over a certain level.  All three RXs must be in the same DDC range, for the G33 that means within 4 MHz and the G35 within 32 MHz.  That bandwidth limitation only exist when I am trying to do queued recordings, not when just doing basic activity and level monitoring.

Would also like to get an SDR with the 10 MHz reference to study the frequencies of the stations, incl the time & freq standards. How does WWV's signal shift by the time it gets here?

My NetSDR has Ref in, and I have modified one of my SDR-IQs to take a reference in (how can be found online).  I always meant to do my SDR-14 also, but never did.  My G35DDCi/X also has Ref in.  I take my 10 MHz reference from an HP GPS receiver.

It is interesting to see the Doppler on various signals like WWV.  Also to see the differences between WWV and WWVH.  And some MW BCB carriers are all over the place.

T!
« Last Edit: June 11, 2016, 1527 UTC by Token »
T!
Mojave Desert, California USA

Offline skeezix

  • Global Moderator
  • Marconi Class DXer
  • *****
  • Posts: 5544
  • Minneapolis, MN
  • What does 'RNO stand for?
    • View Profile
Re: SDR programming?
« Reply #7 on: June 13, 2016, 0142 UTC »
Very cool Token, thanks . That gives me some ideas. And you're doing pretty much what I want to do.

I haven't seen SDR-Console, but I'll check it out.

Minneapolis, MN