Problems with adapting the ASK Example to 15 MHz


Dear community,
My colleague and I are trying to adapt the ASK example from to 15 MHz for some days now. The goal is to modulate some information on a 15 MHz carrier with, for example, an 800 kHz sub carrier and measure this with an oscilloscope.

The first approach was - after loading the corresponding DEMO_1Msps_866MHz-50dBm.ini file in the LimeSuiteGui - to change the frequency on both, the TX and RX path (SXT & SXR tab). Furthermore, we have tried the solution of @martywittrock from his posting (Where did the 100 KHz go?), but this also did not lead to the desired success.
Of course we have read and tried the whole “limesdr-made-simple-…” tutorial as well as the different hardware descriptions, datasheets and other tutorials (i.e. from Danny Webster), but we currently have no idea how to solve this problem.
Maybe there are some geniuses who could describe the steps necessary from scratch for solving this challenge.
Thank you in advance for your help
best regards


@Martin_T - Martin,

There are two methods of performing this:

1.) Use GNU Radio Companion and the applicable LimeSSDR plugins. An excellent write up of this is here —>

All one would need to do is set the carrier frequency to 15.0 MHz and then modulate that carrier (not certain if AM or FM) with 800kHz. All this is capable with PC resources and the LimeSDR. Measuring on the scope just requires that you have the sweep speed at a reasonable setting to see the resulting envelope for the 15 MHz being modulated by an 800kHz source.

2.) Use SDRAngel to achieve the same thing - all the information to make that happen is here —>

You would need to set up the proper environment (Windows or Linux - Linux preferred) and then set up a FM or AM modulating source that is driven by the PC at 800 kHz. Setting up the 15 MHz is kind of tricky but if you choose to go that route with SDRAngel I can set you up with the settings necessary to make that work - just ping me here in the forum.

The choice is yours - choose wisely…

73 de Marty, KN0CK


Hi Marty,
Thanks a lot for this detailed information and for the fast response.
We tried the first method a few days ago, but for some reason we could not generate and measure a modulated signal at such a low frequency. We took the “signal generator” example as template and tried to adapt it. I think we will try again next week, maybe we missed something the last time. Do we need to configure some special settings in the LimeSuiteGui when working with the Gr-limesdr Plugin or is this handled by the various blocks in the plugin?
The SDRangel you mentioned above looks very interesting, confusing but interesting. I think this option sounds very promising and we will try to manage this next week as well. If we have any questions regarding this tool and the mentioned 15 MHz settings i ping you for some assistance.
Thanks again for your help
best regards


@Martin_T - Martin,

I think one of the issues you have to look at pertaining to your modulating signal in GNU Radio Companion is that the modulating bandwidth maybe limited - you may want to check the parameters of the modulator to ensure it can accept an 800 kHz signal as most modulators are used for voice and slow data (10Hz - 20 kHz) and at 800 kHz there wouldn’t be any modulation present because it’s getting lowpass or bandpass filtering characteristics. I would encourage you to review your flow diagram in GNU Radio Companion again for that issue - you’re going to see the same thing with SDRAngel unless you’re FM’ing it and using a wideband modulator (sink device) and it can accept 800 kHz, too.

Check that criteria and get back with us on the forum - let us know how you progress there.

73 de Marty, KN0CK



thanks for the helpful information.
After messing around with GNU radio companion since a few days we decided try SDRangle - and I have to say that this tool makes the stuff a bit more understandable.
Our current constellation is:

  • Measurement of an 800 kHz subcarrier signal modulated with a 13 MHz carrier with a DIY coil.
  • The coil is connected to the A_RX_L channel.

As shown in the figure below, we believe that we can currently get the carrier signal with the parameters set. But it seems to be a little bit inaccurate.
But we also want to capture the information that is transmitted with this signal with the second RX_L channel - so remove the carrier and the subcarrier from the signal.

I have seen in the SDRangle forum that you also try different things with this tool and are familiar with it, and since you offered us your assistance in the configuration of the SDRangle I would like to ask you to check our current parameters and also help us with the parameters to filter the signal for receiving the transmitted data with the second RX_L?

Best regards


@Martin_T - Martin,

I see some inconsistencies in how you’d use SDRAngel with the setup you have for HF. Here’s what I’m seeing wrong in the picture:

1.) You have NCO turned on, but you need to put the NCO frequency at 30 MHz, not 16.6 MHz as shown.

2.) The Lowpass Filter (LP) is tuned to something in the order of kHz. You really need to open it up to 130 MHz (wide open for HF) to get the gain of your receive up.

3.) Your sample rate is set WAY too high - it’s needs to be around 7,000,000 and not 35,000,000.

4.) Your H is set to ‘1’ and your S is set to ‘1’…they really should be set for 32 and 16 respectively.

Try those adjustments first and and then see how it plays. Please let me know your progress toward that, too.

73 de Marty, KN0CK

1 Like

Thanks Marty, I’ve not used SDRangel (yet)

Probably a silly question, but if the post-hardware-decimation IQ sample rate is 7 MSPS, and the hardware decimation in the TSP (digital Transceiver Signal Processor part of the LMS7002M) is 32 does that mean that the I and Q ADC’s pre-hardware-decimation are sampling at 224 MSPS ?

1 Like


thanks again for your great help. I have adjusted the parameters according to your specification in SDRangel, and as you can see in the figure below, i get a much better signal containing the data.
We’ll experiment with these settings a bit, but basically it should fit.
Maybe you can explain why we have to set the NCO frequency to -30MHz?

Two further questions regarding the LimeSDR:

  • Is it basically possible to bypass the analog mix- and filter part of the RX channel?
  • is it possible to control the TX and RX channels with the same PLL?

I think that is correct -> the “ADC rate before hardware downsampling” is shown in the upper left corner of the figure below (to the left of the center frequency) and shows a sampling rate of 224M.

I hope I may contact you again if I need more help with SDRangle.
Best regards


@Martin_T - Martin,

Great job and I have to admit that you’re better off with these settings than before. Certainly there are many ways using SDRAngel to detect the data you’re going after, but these settings were what the author of the software recommended to me when I was first using the application and so I’ve tended to stay within these parameters (+/- on all of them) to get consistent results. Obviously what you’re doing is a lot more aggressive than what I’m doing with the settings (I’m just listening to voice and slow narrowband data) but your situation is certainly more challenging and you’ve found the ‘sweet spot’ and can play around with it some more to optimize.

The reason you need to set the NCO to 30 MHz is due to the fact that the base frequency of the Lime is 30.72 MHz and in order for you to receive on HF you have to have set the NCO to 30.0 MHz to be able to subtract from the base frequency to listen and transmit below 30 MHz. The designers (@Zack @IgnasJ) can give you the more technical reasons why this is, I’m just aware that you need to apply NCO and then tune NCO to 30 MHz to make this happen.

The only ‘bypass’ I know of for the analog mix is to take all the data from SDRAngel as I/Q and process it yourself - you can do that in SDRAngel. Only then will you have complete control of what comes from the LimeSDR raw. I believe you can do this for transmit and certainly receive.

In terms of the TX and RX on the same PLL I’m pretty sure they are, but again @Zack and @IgnasJ and even @andrewback would know this better than I can answer it.

Great to see you’re making progress with the LimeSDR - Keep playing with it, this is the most powerful SDR on the market with an attractive price point. The bounds are limitless with this one.

73 de Marty, KN0CK



Edouard has me trained probably too well… :slight_smile: !! There’s more ways to do this as you’ve astutely pointed out, but this is what Edouard recommended to me at the outset so I’m a creature of habit… :slight_smile:

73 de Marty, KN0CK

1 Like

The lowest frequency that the analog tuner in a LMS7002M can be set is 30 MHz.

So signals below 30MHz are accessed digitally using DSP in the TSP.


That brings some light into the topic :slight_smile:
@martywittrock @mzs thanks for your fast response and the detailed and understandable description.
Definitely, we will build our further measurements on your parameters and play around with the settings.

In terms of the PLL:
According to the LMS7002M_Datasheet i think the don’t share the same PLL:

Maybe the guys you mentioned can help me with this matter.
Thanks again, you are doing a great job here in the forum.


1 Like

By default they do not, but it can be enabled, which is mentioned in the datasheet “The transmit PLL could also be routed via switches to the receive PLL so as to offer phase-coherent operation in TDD mode.

And instructions how to enable TDD mode were provided for LimeSuite GUI and using the Lime Suite API.

But if TDD mode is not enabled, the default behaviour is to have a RX clock synthesizer and a TX clock synthesizer, which generate the shared RX local oscillator chain for both RX channels and a shared TX local oscillator chain for both TX channels respectively.

1 Like