Table of Contents
GNURadio Tips and Notes
GNURadio is really cool. But the documentation is quite poor. With that in mind here are some random, unorganised tips and useful flowgraphs that will get you started and provide a base for your own projects.
Using Baseband I/Q Recordings
Depending on the specifics of your recording you may need to change bits of this. You’ll want to use a WAV file sync, set the channels to two, and then immediately convert from float to complex to do useful things with the data. Then you’ll want a throttle block to set your desired sample rate. If you have recordings in a format other than RIFF 16-bit stereo you may need to add extra conversion steps into your flowgraph, or convert your input file first with other software.
One thing you will have to look out for is the 4 GB wav file size limit in GNU Radio. WAV File Source blocks use the metadata of the file which can only store a maximum value of of 4 GB in its 32-bit size variable. Other apps can store more in a WAV container by reading file size information directly via the operating system, and typically ignore any useful data in the header. Apps that support this include SDR Console and SDR++
To get around this you can use a tool such as sox to chop up your file into smaller chunks. You can estimate using different times and see if you get the chunk sizes you want - the following command will continue to make chunks of the chosen mm:ss length until there’s no more data and iterate a number after the outfile name:
sox –ignore-length infile.wav outfile.wav trim 0 mm:ss : newfile : restart
For RF64 WAV files you can use a File Source followed by an iShort to Complex to effectively skip the header and send out valid data.
If you’ve got the opposite issue - a bunch of smaller basebands that need joining together, you can try:
sox –ignore-length infile1.wav … infile[n].wav outfile.wav
After all of that: if your chosen signal is in the middle of the baseband, you’re done! If it isn’t, you will need to “tune in” to the signal with a Frequency Xlating FIR or FFT Filter first.
Adding, Subtracting, and Multiplying Signals
Are you modulating a signal onto another signal? Such as modulating audio data onto a carrier tone? You want multiply for this.
Are you merging signals together to make a final product to transmit/save/whatever? Such as merging an audio signal with an RDS data signal? You want add in that case.
You barely seem to need subtract unless you’re doing difference-based stereo like with Broadcast FM, so there’s nothing interesting to say about it here. Yet.
Working with bits and bytes
To follow. Some basic advice for digital signals on how to actually convert from bytes to signals you can modulate, and how to go from a stream of demodulated bits to something your computer can do things with.
Add a list of useful GRCs with explanatory text here. You can build your own projects off these basic ideas.
To be added:
- AM Modulation
- AM Demodulation
- NFM Modulation
- NFM Demodulation
- WFM Stereo Modulation
- WFM Stereo Demodulation
- QPSK Modulation
- QPSK Demodulation
- BPSK Modulation
- BPSK Demodulation