windytan / redsea

Command-line FM-RDS decoder with JSON output.
MIT License
406 stars 38 forks source link

Support for other SDR devices #55

Closed kantooon closed 6 years ago

kantooon commented 6 years ago

Hello, How hard would it be to have support for other SDR devices like the LimeSDR? Basically I want to create a script that looks simultaneously at all FM channels in a 20 MHz band, decodes the RDS text for each station and feeds it to a webpage (automotive project).

Thanks, Adrian

windytan commented 6 years ago

Interesting idea, thanks! For this, redsea would also need a built-in FM demodulator. This wouldn't be hard to do, and it would be generally useful as well. But doing multiple of those in parallel would need some changes made in the way the groups are printed etc.

kantooon commented 6 years ago

Ok, let me know if you want to make steps in this direction. I can handle demodulation with GNUradio (pfb_channelizer or the like).

Adrian

sm3ulc commented 6 years ago

Something you have to build yourself but quite possible. For example: rxtools => splice flow with ncat => (csdr (for demod) => redsea. ) x channel

// David

Den 22 dec. 2017 11:15 skrev "adrian" notifications@github.com:

Hello, How hard would it be to have support for other SDR devices like the LimeSDR? Basically I want to create a script that looks simultaneously at all FM channels in a 20 MHz band, decodes the RDS text for each station and feeds it to a webpage (automotive project).

Thanks, Adrian

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/windytan/redsea/issues/55, or mute the thread https://github.com/notifications/unsubscribe-auth/ARdPKXl3QkhhYQONXxAiSDFMJbP2CvEdks5tC4FdgaJpZM4RK320 .

windytan commented 6 years ago

kantooon, then you may be able to do this already, like David suggested. The exact type of SDR device doesn't really matter. You only need to have your script output FM demodulated PCM at 171 kHz sampling rate for every FM carrier you have. Then you would have a redsea instance running at every output. The question is how much computer power it would take to filter and FM demod that many carriers.

kantooon commented 6 years ago

I'm not sure I understand. How would the audio channels get piped into redsea? I understand the idea of running multiple instances of redsea, although having only one and outputting a single json might be easier. Thanks, Adrian

windytan commented 6 years ago

I think you're right, a single json stream might be best. It seems you can interleave multiple streams in gnuradio. Perhaps the best solution would be to (just brainstorming here):

kantooon commented 6 years ago

Other possible solutions to pass the stream to redsea:

Display would be relatively straight-forward after that with a webview or QML pages.

windytan commented 6 years ago

There is now preliminary support for multi-channel signals in the snapshot version (current master branch). It is activated automatically when multi-channel WAV files are used. For raw PCM input you will have to specify the number of channels manually (--channels).

kantooon commented 6 years ago

Awesome. I'll have to try this with a full broadcast spectrum capture. Thanks!

windytan commented 6 years ago

Apropos the original topic, csdr can be used to demodulate streams from other radios on the command line. For example, I can receive RDS with my AirSpy R2 using this command:

airspy_rx -d -r /dev/stdout -f 87.9 -a 2500000 -v 15 -m 15 -l 14 |\
  csdr convert_i16_f | csdr fir_decimate_cc 10 0.05 HAMMING |\
  csdr fmdemod_quadri_cf | csdr convert_f_i16 | ./src/redsea -r 250000

I added a note about this in the wiki.