10

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'...


9

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

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.


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

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 ...


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

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 ...


5

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 ...


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 ...


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

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

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

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 ...


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

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 ...


3

display_qt is a GNU Radio example program. It does not display any actually existing electromagnetic signal but internally generates a 1500 Hz sinusoid. The code creates a sine source and a noise source, // Source will be sine wave in noise src0 = analog::sig_source_f::make(rate, analog::GR_SIN_WAVE, 1500, 1); src1 = analog::noise_source_f::make(analog::...


3

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 ...


3

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).


3

No. Most radio peripherals will not pass raw RF samples to or from the host computer, but only fully decoded packets. I'm not familiar with that particular card, but I'm sure if it had such capabilities people would be talking about it. (The so-called “RTL-SDR” TV tuner device does have this mode of operation, which is why it is so popular for cheap SDR ...


3

You are not making an AM transmission, because you have not added a carrier. Without a carrier, what you have is double sideband (DSB) modulation, which will not be properly demodulated just by an improvised detector. To create the carrier, add a constant value to the signal (between the Multiply Const and Float To Complex stages). Constraints: The ...


3

Most likely, the sample rates you are asking for are unsupported by the hardware. The osmocom source is just a wrapper around a bunch of specialized device drivers, and generally you're not going to notice if you don't get the sample rate you asked for unless you're also e.g. using an audio sink so you hear the audio skipping. If you're programmatically ...


3

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 ...


3

Since you tagged your question with GNU Radio, I am assuming that is your SDR software package. If you look under level controllers, you will find a function block called "Power Squelch". This function: Sets the threshold (in dB) where the squelch control switches between MUTED and UNMUTED states. If Ramp is enabled, there in an ATTACK state between MUTED ...


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