Soapy Uhd Limesdr Problem In Transmit

Soapy Uhd Limesdr Problem In Transmit




🔞 ALL INFORMATION CLICK HERE 👈🏻👈🏻👈🏻

































Soapy Uhd Limesdr Problem In Transmit
Unfortunately, your browser is too old to work on this site . Please upgrade your browser to view rich content, log in and reply.
I’m trying since a while to get LimeSDR working with gnuradio. For my suprise gr-limesdr seems to not work properly and gives me much more problems as osomocom. As my little defence I am pretty much new to SDR devices and still keep climbing the learning curve. And specific documentation is really rare.
My problem now is I wan’t to make a test simple test setup to transmit a signal via osmocom-sink and receive it at the same time with osmocom-source. The receiving part works, but nothing is transmitted and no errors show up in the log.
You can see the setup in the picture
Hardware:
LimeSDR-USB Aluminum version
Log:
gr-osmosdr 0.2.0.0 (0.2.0) gnuradio 3.8.1.0
built-in source types: file osmosdr fcd rtl rtl_tcp uhd miri hackrf bladerf rfspace airspy airspyhf soapy redpitaya freesrp
[INFO] Make connection: ‘LimeSDR-USB [USB 3.0] 9072C00D51020’
[INFO] Reference clock 30,72 MHz
[INFO] Device name: LimeSDR-USB
[INFO] Reference: 30,72 MHz
[INFO] LMS7002M register cache: Disabled
[INFO] RX LPF configured
[INFO] RX LPF configured
gr-osmosdr 0.2.0.0 (0.2.0) gnuradio 3.8.1.0
built-in sink types: uhd hackrf bladerf soapy redpitaya freesrp file
[INFO] Filter calibrated. Filter order-4th, filter bandwidth set to 10 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active
[INFO] TX LPF configured
[INFO] Filter calibrated. Filter order-4th, filter bandwidth set to 7,5 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active
[INFO] TX LPF configured
[INFO] Tx calibration finished
[INFO] Rx calibration finished
If you could provide details of issues with gr-limesdr, we could help to get you up and running with this, but I don’t believe that gr-osmosdr is actively maintained and it’s not something we could help with.
With gr-limesdr I’ve got following output:
Config Sink:
Allow TXCO DAC control: no
TCO:DAC val: 180
NCO frequency: 0
Calibration bandwitdth: 0
PA path: auto
Analog filter bandwidth: 0
Digital filter bandwitdh: 10e6
Gain: 20
Config Source:
Minoutbuf: 0
Maxoutbuf: 0
Allow TCXO DAC control: No
TCX0: DAC val: 180
NCO frequency: 0
Calibration bandwitdth: 0
PA path: auto
Analog filter bandwidth: 0
Digital filter bandwitdh: 10e6
Gain: 20
##################
Connecting to device
##################
LimeSuite version: 20.07.2-myriadrf1~focal
gr-limesdr version: 3.1.3.0
##################
Device list:
Nr.:0 device:LimeSDR-USB, media=USB 3.0, module=FX3, addr=1d50:6108, serial=0009072C00D51020
##################
INFO: device_handler::open_device(): no serial number. Using first device in the list.
Use “LimeUtil --find” in terminal to find prefered device serial.
Reference clock 30,72 MHz
Using device: LimeSDR-USB(0009072C00D51020) GW: 2.23 FW: 4
##################
##################
Connecting to device
INFO: device_handler::open_device(): no serial number. Using first device in the list.
Use “LimeUtil --find” in terminal to find prefered device serial.
Previously connected device number 0 from the list is used.
##################
INFO: device_handler::enable_channels(): SISO CH0 set for device number 0.
INFO: device_handler::set_samp_rate(): GFIR LPF cannot be set to the requested bandwidth
set sampling rate: 10 MS/s.
INFO: device_handler::set_rf_freq(): RF frequency set [TX]: 424 MHz.
INFO: device_handler::set_digital_filter(): GFIR LPF cannot be set to the requested bandwidth
digital filter CH0 [TX]: 10 MHz.
INFO: device_handler::set_gain(): set gain [TX] CH0: 20 dB.
INFO: device_handler::set_antenna(): CH0 antenna set [TX]: BAND1.
INFO: sink_impl::init_stream(): sink channel 0 (device nr. 0) stream setup done.
INFO: source_impl::init_stream(): source channel 0 (device nr. 0) stream setup done.
With gr-limesdr I got much lower signal strength at receiver input. If I scan the local wifi, the difference to osmocom is about 20 dB, with 20dB Gain adjusted for gr-osmo and 40 dB for gr-limesdr.
The signal generating Laptop was right next to LimeSDR.
@Garmus , could you take a look and advise, please.
Solved the Problem, I’m now using gr-limesdr and adjusted the receiver gain to 50. I was just to conservative with the gain settings.
Powered by Discourse , best viewed with JavaScript enabled





Features




Mobile




Actions




Codespaces




Copilot




Packages




Security




Code review




Issues




Discussions




Integrations




GitHub Sponsors




Customer stories








Explore GitHub


Learn and contribute



Topics




Collections




Trending




Skills




GitHub Sponsors




Open source guides


Connect with others



The ReadME Project




Events




Community forum




GitHub Education




GitHub Stars program








Plans




Compare plans




Contact Sales




Education






In this repository


All GitHub





In this repository


All GitHub





In this organization


All GitHub





In this repository


All GitHub









pothosware

/

SoapyUHD


Public






Code



Issues



Pull requests



Actions



Projects



Wiki



Security



Insights





ccsh23 opened this issue
Oct 2, 2017
· 9 comments







ccsh23 opened this issue
Oct 2, 2017
· 9 comments






device->setFrequency(SOAPY_SDR_TX, 0, "RF", 1455e6);
//wait for TX PLL lock here
device->setFrequency(SOAPY_SDR_TX, 0, "BB", -5e6);

device->setFrequency(SOAPY_SDR_RX, 0, "RF", 1455e6);
//wait for RX PLL lock here
device->setFrequency(SOAPY_SDR_RX, 0, "BB", -5e6);

//RF:
uhd::tune_request_t tr(1455e6);
tr.rf_freq = 1455e6;
tr.rf_freq_policy = uhd::tune_request_t::POLICY_MANUAL;
tr.dsp_freq_policy = uhd::tune_request_t::POLICY_NONE;

//BB:
uhd::tune_request_t tr(-5e6);
tr.dsp_freq = -5e6;
tr.rf_freq_policy = uhd::tune_request_t::POLICY_NONE;
tr.dsp_freq_policy = uhd::tune_request_t::POLICY_MANUAL;

double f_rf_tx = 1455e6;
double f_dsp_tx = -5e6;

double f_rf_rx = 1455e6;
double f_dsp_rx = -5e6;

double f_rf_tx = 1455e6;
double f_dsp_tx = -5e6;

double f_rf_rx = 1455e6;
double f_dsp_rx = 5e6;



ccsh23



mentioned this issue

Oct 4, 2017







guruofquality




closed this as completed


Sep 17, 2020





Sign up for free
to join this conversation on GitHub .
Already have an account?
Sign in to comment













You can’t perform that action at this time.





You signed in with another tab or window. Reload to refresh your session.
You signed out in another tab or window. Reload to refresh your session.


Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement . We’ll occasionally send you account related emails.

Already on GitHub?
Sign in
to your account

I was trying to transmit and receive BPSK-modulated burst at the same TX and RX frequency, which was set using digital frequency offset (NCO) and I believe I found some bug as it comes to setting center RX frequency in such scenario with USRP devices. Since I am using SoapySDR I am not sure if it is SoapyUHD or UHD bug.
For example, with sampling rate of 16.666667 MHz I was setting the same PLL frequency (say 1455 MHz) and the same NCO frequency offset (say -5 MHz) on TX and RX channels. I was then expecting transmission @1450 MHz and was expecting to receive signal, which (at baseband) will be centered around 0 MHz. This is the result which I actually got with LimeSDR:

But when using any UHD-based device (I have tested USRP B200 mini and USRP N210), the spectrum was shifted in a very strange way:

I should note that the problem is not on TX side, as I was using another receiver to confirm frequency of actual over-the-air transmission. I also got no errors during configuration of TX and RX channels and they declared using expected offsets successfully. When setting NCO offset to 0 everything looks fine.
For reference, here I tried different NCO offset: +2 MHz, so transmission occurred @1457 MHz, but again received signal in baseband is shifted by about 4 MHz.

But it does not seem to be any clear dependence, as for NCO offset of +4 MHz (transmission @1459 MHz) received signal in baseband looks like this:





The text was updated successfully, but these errors were encountered:

@ccsh23 How were you invoking the tuning offset from SoapySDR (which calls were you using).
This call setFrequency(SOAPY_SDR_RX, 0, centerFreq, {"OFFSET":"2e6"}) should directly result in a UHD tune request with the offset parameter set to 2 MHz: https://github.com/pothosware/SoapyUHD/blob/master/SoapyUHDDevice.cpp#L479
I am actually using "BB" component, not "OFFSET":
As far as I understand, "OFFSET" is meant to move the LO out of the passband and should be automatically compensated with "BB" component to keep the same frequency as the one which wold be used without calling OFFSET at all - that is not what I want here. I actually want to shift my signal in frequency domain with the "BB" component (and doing this successfully on TX side with above code, problem is with RX side).
UHD could be parsing the tune request in a strange or inconsistent way, those two commands basically translate into:
When you were using UHD, any idea what the tune requests looked like for comparison? Maybe we can change this to better match what B200 code expects internally. Also, what is getFrequency() reporting for RF and BB components?
Okay, I have tested it today and found that this is actually UHD bug.
Everything should work as described above for following frequencies:
But for some reason it works for following settings:
So, in RX tune request you have to use negative value of DSP offset used in TX tune request. I have tested it for several offsets in different directions and all results followed that rule. I believe this is wrong and should be reported on UHD github tracker, but I'll wait for your confirmation.
P.S. With applying such settings (which in my opinion are incorrect) in my SoapyUHD-based application I also got expected result.
Its so easy to sign flip something like this. I actually have no idea what the intention should be. I think the cordic is often used to implement a LO offset, so the direction doesnt matter, or folks simply just flip the sign. But maybe thats not ideal...
So I think there are two schools of thought here:
Perhaps this is how UHD looks at the CORDIC freq: when tx is positive it means upconvert, and therefore the reverse is rx downconvert needs a corresponding sign flip.
On the other hand, you could treat the CORDIC as the desired IF frequency, and so therefore the API should be the same number, and the driver should internally flip the sign if need be to get the intended result.
I think UHD actually wants to implement the second concept (same for SoapySDR), it even has this different sign bit for Tx and not Rx: https://github.com/EttusResearch/uhd/blob/maint/host/lib/usrp/multi_usrp.cpp#L337 but it just doesnt use this number when running DSP POLICY_MANUAL, so I think it is a UHD bug. It should use the xxsign variable here too: https://github.com/EttusResearch/uhd/blob/maint/host/lib/usrp/multi_usrp.cpp#L341
Please ask the UHD folks what the intention is with this in mind. But I'm happy to add the sign flip in SoapyUHD for rx or tx in this specific case, but I think thats not the solution.
Just got the answer from UHD folks. They say it is intended design. I am not sure what about SoapyUHD now, but I guess your decision will be the best ;) Thanks for the help again!
Ignoring the automatic behaviour with the offset argument, if you are just talking about multiplying by a digital sine wave, then f_dsp_rx and f_dsp_tx would have to use opposite signs effectively operate on the same center frequency.
So it looks like I was wrong, the intention of the manual tune policy was to actually set the CORDIC frequency. Therefore a positive frequency will shift the signal in the positive frequency direction, and vice versa. So naturally, if you want the rx and tx center frequency to be the same, the signs have to mismatch so one direction can shift up, and the other down.
So I think the UHD behaviour is expected here, and I should have known that. Again most people just experimentally see what happens and flip the sign because these things tend to get implemented inconsistently, and UHD has flipped cordic signs many times for the same confusing reasons.
I take it this means that you actually think that the setFrequency(direction, channel, "BB", dsp_freq) for SoapyLMS may be swapped for one direction or the other then. Curious about your thoughts, thanks.
I just noticed that by calling the same SoapySDR function on LimeSDR and UHD-based devices you get different results (on USRP you have to flip the sign on RX side while on LimeSDR you dont have to do it). I can adapt to any convention and even use different sign im these both cases, just thought that maybe it should be "standarized" so that you are sure what result to expect, no matter what device you are using
alright, turns out there is no standard and the driver providers like their sign bits the way they are

Home
Blog
Hackaday.io
Tindie
Hackaday Prize
Submit
About


Search for:






54 Comments

by:
Jenny List



Copyright © 2022 |
Hackaday, Hack A Day, and the Skull and Wrenches Logo are Trademarks of Hackaday.com
|
Privacy Policy
|
Terms of Service
Powered by WordPress VIP


Email (Required)



Name (Required)



Website



It’s fair to say that software-defined radio represents the most significant advance in affordable radio equipment that we have seen over the last decade or so. Moving signal processing from purpose-built analogue hardware into the realm of software has opened up so many exciting possibilities in terms of what can be done both with more traditional modes of radio communication and with newer ones made possible only by the new technology.
It’s also fair to say that radio enthusiasts seeking a high-performance SDR would also have to be prepared with a hefty bank balance, as some of the components required to deliver software defined radios have been rather expensive. Thus the budget end of the market has been the preserve of radios using the limited baseband bandwidth of an existing analogue interface such as a computer sound card, or of happy accidents in driver hacking such as the discovery that the cheap and now-ubiquitous RTL2832 chipset digital TV receivers could function as an SDR receiver. Transmitting has been, and still is, more expensive.
A new generation of budget SDRs, as typified by today’s subject the LimeSDR Mini, have brought down the price of transmitting. This is the latest addition to the LimeSDR range of products, an SDR transceiver and FPGA development board in a USB stick format that uses the same Lime Microsystems LMS7002M at its heart as the existing LimeSDR USB, but with a lower specification. Chief among the changes are that there is only one receive and one transmit channel to the USB’s two each, the bandwidth of 30.72 MHz is halved, and the lower-end frequency range jumps from 100 kHz to 10 MHz. The most interesting lower figure associated with the Mini though is its price, with the early birds snapping it up for $99 — half that of its predecessor. (It’s now available on Kickstarter for $139.)
We were lucky enough to be sent a pre-production LimeSDR Mini for review by the MyriadRF folks — in fact we were sent two of them, after the first one proved to have a hardware fault suspected to involve a solder joint issue. We feel their pain, after all who hasn’t had pre-production boards springing faults at inconvenient moments!
The board itself is a PCB about 33 mm x 70 mm (1,25 ” x 2.75 “), with a USB 3 plug at one end and a pair of SMA sockets at the other, one for receive and the other for transmit. The integrated circuits are all on the top of the board, and though they have included footprints screening cans, they are not populated. There is a single multicolor status LED between the SMA sockets. It’s worth mentioning that there will be a laser-cut plastic case for the board, which is probably worth getting as it feels somewhat vulnerable as it is. Along with as the board, they supplied a pair of little rubber duck antennas for the 870 MHz band.
It is evident that the LimeSDR Mini is an extremely capable board that in the hands of a real expert in SDR and FPGA programming could have the potential for great things. It is also evident that as your Hackaday scribe I am not an SDR extreme power user. Despite holding an amateur radio licence for over three decades I have been a relative late comer to the world of SDRs, and ha
Kelly Lesbian
Milf Anal Masturbate
Porn Girls Massage Hd

Report Page