We’re rewarding the question askers & reputations are being recalculated! Read more.
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

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

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


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

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

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

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


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

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

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

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


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

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

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

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

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


3

I have connected the TX/RX port of one radio to the RX2 port of the other with an RF cable as a simulated radio link. DO NOT DO THAT. Always, always, always, in any case, under all circumstances, use an attenuator when directly connecting the output of one radio to the input of the other. Have I been setting my gain too high / frying my radios? Ettus ...


3

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


3

I found the solution to my problem. It was due to running my program using Python3, while as Marcus Muller stated in my other posting "GNU Radio 3.7 is not python3 compatible". So, using Python2.7 instead was the solution.


2

Just use pavucontrol to redirect the audio output from gnuradio to the audio input of baudline, shouldn't take more than a minute. Creating gnuradio blocks is a mission, and that's without integrating with something like baudline, which I don't even think is possible.


2

I also have had quite some problems with linux and the FCD. It appears that is is related to bandwidth reservation of the USB bus. The FCD is a USB 1.1 device which is 12Mbit/s. As you are probably running it in a USB 2.0 port so there is a USB 2.0 to USB 1.1 arbitration unit in the USB interface chip. The linux kernel has to allocate the bandwidth to each ...


2

A good approach to troubleshooting problems is to simplify them until there's a minimal broken case. The program you have here is complex and there are many things that could be wrong. If the radios are connected just by a cable, the constellation in your screenshot is far too noisy. That suggests there's a problem prior to the equalizer. The periodic ...


2

That's something that is inherently hard to implement in a graphical tool. It's a very sequential program flow, and thus, the GRC approach might be the wrong one – while relatively easy to write in python, it'd be hard to do this graphically. The graphical approach to software design isn't always the easiest one (sorry, LabVIEW). So, I'd recommend going ...


2

This is the sort of task for which it is at least easiest to do outside of the model of GNU Radio Companion. That is, you would take the generated code and instead of executing it directly, modify it — or, perhaps, load it as a module. First of all, I recommend changing from WX GUI to QT GUI. WX support in GNU Radio Companion is deprecated, and the ...


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