How quickly time flies. For the first six months of this year I was focused on finishing up at my job. Originally it was intended to be four months, but schedules tend to slip and schedules for large projects tend to slip a lot. Somewhere in there I put all my radio equipment in storage, as I had no real time to play.
The next two months were spent travelling roughly 17,500km across the country and back. Following that, I prepared for the transition from industry back to academia. I am now an MASc student at the University of Victoria, where I am studying SDR and other signal processing matters.
1) The HackRF and Osmocom libraries - look for the UHD, GNU Radio or related DLL files 2) The python modules for the gr-. blocks, this includes gr-osmocom - look for some of the default GNU Radio blocks 3) The blocks are described in xml files named after them - again, look for files named after existing blocks.
Gnu Radio Windows Binary Code
MATLAB vs GNU Radio for sdrs. I have worked with GNU radio and I am interested to do some HAM, learn and keep growing my collections and projects. GNU Radio seems to be more easily implemented if I want to build a raspberry automated setup. However my PC has win10 and I have a Matlab license from the University (PhD student). The learning curve to understanding GNURADIO can be quite extensive, however with this complexity comes great power and versatility. The following screenshots show a previous signal replay project (vehicle FOB replay) that I conducted using GNURADIO flow-graphs (for more detailed information see my BHIS blog “GNU RADIO PRIMER”). GNURadio 3.7/3.8 Win64 Binaries - Download. Please ensure you pick the correct column for your CPU. If in doubt, choose the 'Any CPU' column as it will work on any machine.
Gnuradio Windows Binary
Last night I stayed up late working out a receiver for the WWV BCD time code. I have access to some good antennas an the University, so I recorded about 15 minutes of I/Q data from WWV. The basic approach is to demodulate the AM signal, filter out everything but the 100Hz subcarrier, and put this through a threshold block to create a digital signal as shown below:
I then tried with limited success to create a pulse-width discriminator in the GNURadio GUI. Finally I gave up and decimated the signal by a factor of 120 (48kHz down to 400Hz) before passing it through the threshold. I sent this data to a file for post-processing in Python, but there’s no reason you can’t use a message sink so that the Python program can receive and process the data online.
The approach in the Python program is to split the string of ones and zeros into a list where each item is some number of ones or some number of zeros. Then iterate through the list and divide the number of characters in each list item by 400 to get the time, creating a new list. Then iterate over this list with a simple state machine that searches for the reference marker R. After this it checks that the next eight symbols are either zero or one, and then looks for the timing mark P1. The next nine symbols are then either zero or one, and then a timing mark, and so on. Any error in the decoding process sends the state machine back to the initial state. This process creates a new list where each item only contains the bits in the time code. This list is sent to a simple display function that prints out the time.
Gnuradio Windows Binary Download
With this basic implementation, I was able to correctly decode the time in 6 out of 14 possible minutes. The other 8 failed during the pulse-width discrimination stage due too too long or too short pulses. The discriminator has a fairly wide window that it will accept, so it could indicate that somewhere in the GNURadio processing stage some of the transitions are missed completely or extra transitions are introduced.
Here is some output from the program:
Gnuradio Windows Binary Key
The errors indicate:
Gnuradio Windows Binary Editor
Gnuradio Windows Binary Code
- Detection of P4 (the timing mark at 39 seconds) failed because it saw the pulse width as 0.1725s instead of 0.77s.
- Detection of the zero bit at 1 second failed because the value was zero for 0.7825s instead of (1 – 0.17 = 0.83s). The next two errors are basically the same.
- Detection of P3 (the timing mark at 29 seconds) failed because it saw the pulse width as 0.835s instead of 0.77s.
- Detection of the zero bit at 45 seconds failed because the value was zero for 2.7925 seconds.
- Detection of P1 (the timing mark at 9 seconds) failed because it saw the pulse width as 0.4725s instead of 0.77s. The last error is basically the same.
Gnuradio Windows Binary Converter
It is clear that there are some improvements to be made in the processing, but the time does get correctly decoded. Once you get some way up the learning curve, GNURadio becomes a great tool that allows you to do experiments like this quite quickly.