Just to back my words with some data. LimeSDR is very bad as something you would want to connect to a power amplifier and transmit even above 30MHz. You really do need filtering.
Some examples. This is what is supposed to be a sine wave (35MHz, gnuradio file below):
Same signal through a 30dB attenuator on a spectrum analyzer:
And the gnuradio file that produces these:
https://paste.debian.net/1342026/
If you REALLY cannot afford hackRF (which I never tested , so I would not jump into it without more research, don’t take this as a recommendation) the only option I see is to build a real transceiver around it. Specifically a mixer, followed by very good filters. For example one could mix the output at 120MHz (or wherever it actually becomes good, if ever), then filter the ham bands.
Or just do everyone else does for HF, use it for receive only with spyverter or alike.
Edit: While after upping the sample rate to 30MS/s there is less trash surrounding main signal on CW so one could realistically use just a band pass filter all this stuff is not giving me a lot of hope for frequency stability (especially of the NCO) and the IMD response once we start doing two closely spaced tone tests.
Edit: To further picture how messed up and buggy this hardware/software ecosystem is ponder this… To have your NCO actually work (as well as the actual frequency of 30MHz exactly). You have to set high frequency initially, for example 100MHz (nothing less worked for me).
If I simply initialized with my target settings I’d either get the calibration error (you need the frequency to be higher than 30MHz).
So then I tried to initialize at 31MHz and then simply shift down to 30MHz or to apply NCO there and then. Nope… The NCO will mostly, but not always complain that frequencies more negative than 20MHz are out of range. But OCCASIONALLY it will work… go figure.
So what you have to do, to have it transmit on lets say 7MHz is the following:
- start with NCO of ZERO
- frequency of 100MHz
- shift down to 30MHz GRADUALLY, sometimes once you reach 30MHz you get lots of trash instead of your signal. Start again if that happens - it happens maybe 10% of the time.
- start setting NCO to negative numbers again GRADUALLY, because if you set it right to -23M it will just complain below -20M is out of range. So set it to -1M, then to -10M, then to -18M and then if your lucky it will work if you set it to -23M.
It does work sometimes… when it does it seems to continue to work until you disable the TX. Then its a luck of a draw. Hopefully it will help someone who find themselves in so unfortunate possession of these devices.
You still need a bandpass filter though. However, if you;re lucky and you set the bandwidth to 20MS/s as I said before the nearest it will be is 12MHz and 5Mhz (when you try to transmit on 7MHz) and it will be about 26dB down already. So if you can make a passive 3rd order filter you may actually have a shot at producing a clean CW signal.