# Tag Info

12

I expect to see the sum & difference frequencies. You're multiplying two complex sinusoids, not a $\sin$ and a $\cos$, but $$e^{j2\pi f_1t}\cdot e^{j\left(2\pi f_2t-\frac\pi2\right)}= e^{j2\pi(f_1+f_2)-j\frac\pi2}$$ So, only the sum frequency, as it should. I am seeing a big peak at sum frequency followed by a series of multiple peaks on the FFT. I'...

10

Your confusion stems from the fact that your mind (and the WX GUI scope sink) uses linear interpolation between the samples. That's not right – in your case, where the signal period isn't an integer number of samples, this becomes obvious by the fact that things don't look very sinusoidal. They still are (I promise ;) ). Think about it like this: at ...

9

What's going on Most software-defined radios use quadrature in their signal processing architecture. This means there are two copies of the signal processing chain, with local oscillators that are 90° apart in phase while being otherwise identical. Once they reach software, they can be processed using complex number arithmetic (hence the "real" and "...

8

What the FFT sink shows as frequency axis actually has no basis in "real world signal" – it just takes the sample rate you set (here, you set 1 MHz), and scales the full nyquist bandwidth to that. If you used a different number in the sample rate field of the FFT sink, the spectrum would look absolutely the same, just the frequency axis would have different ...

8

The Hilbert block in GNU Radio creates an analytic signal from a real-valued one by applying the Hilbert transform to create the Q (imaginary, quadrature) component. The Complex to Mag block then discards the phase information in that analytic signal, keeping only the amplitude. Generally speaking, this is AM demodulation. This further agrees with your Add ...

8

You could check out ShipPlotter which appears to be a windows-based AIS receiver. It mentions in the webpage that it accepts audio through your sound card. In the case of RTL-SDR, you'll want to use something like "Virtual Audio Cable" or "VB-Audio Cable" to route the audio from sdrsharp to ShipPlotter.

7

GNU Radio, like any DSP system, works primarily in terms of sample counts, not time. Therefore, you have to add on time information — a sample rate — to get correct frequency-domain information. GNU Radio does not automatically figure out what the matching sample rates between parts of your flow graph are, so you have to set them up correctly yourself. The ...

7

That's an expected phenomenon: Real-world physical systems tend to be frequency-selective (i.e. not constant over frequency), and "at large scale" low-pass systems. This applies to amplifiers, mixers, oscillators, and even transmission lines and connectors. So that's normal. Ettus even publishes exactly such measurements at https://files.ettus.com/...

6

You're on to something very right! In signal processing, we define a basic waveform by its frequency, number of samples within the period and its amplitude. I'd go a step further: In digital signal processing, the actual frequency doesn't "exist" any more. It's just "a periodic signal with a period of $T$ samples". So that's exactly why for example ...

6

There are a lot of things wrong here. Neither plot looks correct. There is no way that Qt plot is realistic for anything but a signal generator. Where's the noise? Where are the three missing constellation points in the Qt plot? APRS isn't QAM (it's AFSK over FM), so I'm not sure why you are expecting QAM. You don't have any filters, clock recovery, or ...

6

This is how the mathematics of complex signals work. The proof begins with Euler's formula: $$e^{i\varphi} = \cos \varphi + i \sin \varphi \tag 1$$ For signal processing, instead of $\varphi$, we are usually thinking about some sinusoidal oscillation at angular frequency $\omega$ that varies with time $t$, which we can write as: $$e^{i\omega t} \tag 2$$ ...

6

Because mathematically, a function like $\sin(\omega t)$ has an angular frequency of $\omega$ and $-\omega$. Consider: $$e^{i\omega t} + e^{-i\omega t}$$ By Euler's formula this can be expanded to: $$\cos(\omega t)+i\sin(\omega t) + \cos(-\omega t)+i\sin(-\omega t)$$ By the trig identity $\sin(x) + \sin(-x) = 0$ this simplifies to:  \cos(\omega t)+ \...

5

To transmit two signals at once, just generate the two signals with the appropriate frequency spacing between them, and add them together. With your mentioned frequencies, you might generate the signals at −0.5 MHz and +0.5 MHz, add them together, and transmit with the hardware center frequency set to 915.5 MHz. (You don't have to use the exact ...

5

They don't "measure", they just display. And yes, as you noticed, this is digital signal processing, so there's no physical units involved – the display axes are correctly labeled with "dB", as in "dB relative to an arbitrary reference vector", typically a energy=1 time signal (e.g. $(0,\ldots,0,1,0,\ldots,0)$), or a power=1 signal (e.g. $(1,\ldots,1)$). ...

5

General principle: In GNU Radio you cannot ever have a flow graph with a loop in it. If you wish to have feedback of some kind, it must be implemented in a single block. (There are many existing blocks that do this, such as AGC blocks and IIR filter blocks, and classes to help create them, though they still require writing C++ code.) However, you do not ...

5

The frequency allocation chart is really more artistic than informative. You can not and should not use that as a guide for selecting a frequency. There is too much information to fit on the chart, and as much as is there anyway, it's not surprising you feel lost looking at it. (That may be part of the intention of the chart.) There are multiple bands ...

5

A SDR peripheral like the Ettus USRP B210 continuously digitizes the incoming RF and sends it to the attached computer. There are no gaps in its coverage — anything that is within the bandwidth is captured in full. If you use one to create a spectrum analyzer, the minimum duration of signal you will be able to observe will be determined by the algorithms ...

4

You have the right general idea, but a couple of problems: The sample rate entering the DSD block (hence the output of the FM demodulator) must be 48000 Hz; this is hard-coded in gr-dsd. From your screenshot, you have 35k where you need 48k. The deemphasis (a.k.a. tau) of the FM demodulator should be set to None, rather than the default of 75. In my ...

4

Here are several different approaches you can take. You can write a GNU Radio source block which knows how to interact with your particular device. This does not require modifying GNU Radio's source code: you can compile your block separately, in which case it is known as an out of tree module; here's a tutorial. This custom source block would be written ...

4

Thanks to @Marcus Müller. It seemed in this instance it was the lack of the devel packages for boost. A simple... \$ sudo dnf install boost-devel ...did the trick (Well, I mean it moved me on to the next failure).

4

This will be an incomplete answer to begin with, hoping that collectively we can come up with a workable solution: Freq 156.425 Mhz -f 156.425e6 Filter: Wide I did not find "Filter" in any online-reference of rtl_fm, unless this is "sample rate", which can be set by: -s 12k for narrow FM Mode: Narrow FM -M fm AGC: Fast I did not find AGC in ...

4

One reason in general to perform decimation in multiple steps is it reduces the computational requirements of the low-pass filtering. To achieve a sharp transition width in the filter requires a longer convolution kernel and thus, more computation. Also the sample rate is very high before decimation, requiring yet more computational power. So generally, we ...

4

Check out AISMon; I've never used it, but it looks like it fits the bill. Here's a thorough tutorial: http://www.rtl-sdr.com/rtl-sdr-tutorial-cheap-ais-ship-tracking/

4

In general, a software-defined radio and one implemented in hardware will have much the same signal paths, but how they are broken down into individual “blocks” will vary. In your case, following the main signal path from left to right: It looks like everything on the main path to the left of “Log Detect” is a conventional superheterodyne receiver. These ...

4

UHD requires a USRP to be owned by one process only, so no, you can't share the same USRP across two flow graphs, but you could use for example the ZeroMQ PUB/SUB sink/source pair to stream data in from a second application to your first flow graph. But then again, there's nothing wrong with putting a whole flow graph into a hier block¹ and using that in ...

4

Is there dvbt/dvbt-2 receiver? Yes and no: T2 reception is too computationally hard so far. It's work in progress, but it's almost certain that your average PC can't decode full standard T2 rates in real time on its CPU. The channel coding is just too involved. Transmission is always computationally easier. See gnuradio/gr-dtv/ example flowgraphs. Why "...

4

GNU Radio Companion (GRC) generates Python code that is something like this (not exact text). (Make sure you chose the "No GUI" option in GRC.) class my_block(gr.top_block): # ... def main(): tb = my_block() tb.run() if __name__ == '__main__': main() You can just import this as a module in your Python program (the if __name__ check will ...

4

I have used RTL-SDR USB peripherals from several vendors. They run at different temperatures (implying different power draws), which suggests that your question does not have a single answer. The power level also seems to vary with what the device is doing (idle, streaming, sample rate, etc.) So you probably need to measure the USB current on your ...

4

To extend what hotpaw2 said: So, it seems the front panel USB sockets are maybe not providing enough power for the Dongle to work? I googled how much power the Dongle draws? and apparently it varies from model to model. Exactly, different models use different tuners, some additional amplifiers, and some use linear power supplies only, others mix linear ...

4

For a complex-valued sampled stream, the sample rate must be greater than twice the signal represented. The sample rate in your graph is set to 384k, so it's not possible to represent a 98400 kHz signal. GNU Radio won't stop you, though. Mathematically, when you try to generate a sampled signal that's too high, you get aliasing. As an experiment, try ...

Only top voted, non community-wiki answers of a minimum length are eligible