XTRX and Amarisoft (reference configuration file)

Well, after some research, I saw that Amarisoft works with lower bandwidths (up to 30 MHz). It seems to me that the problem is with the sample rate settings (perhaps Amarisoft is setting a higher sample rate than is possible for XTRX Rev 5, I’ll investigate this further). Thanks again for the help @ricardas!

The amarisoft plugin is setting sample rate higher than the requested bandwidth: LimeSuiteNG/plugins/amarisoft-plugin/trx_limesuite.cpp at 23b0a90970c0be9b60e8eb5d2136ff3db52eda23 · myriadrf/LimeSuiteNG · GitHub

I’m not sure about the Rev.5 gateware capabilities, but for LimeSDR XTRX to use sampling rates higher than 61.44MHz it has to be configured into SISO mode.

1 Like

XTRX Rev. 5 gateware has been updated, to fix the sampling rate issues and add 64bit dma support. LimeSDR-XTRX_GW/bitstream/flash_programming_file.bin at LimeSDR-XTRX_fairwaves_rev5 · myriadrf/LimeSDR-XTRX_GW · GitHub Make sure that you take gateware from the right branch.

1 Like

Hi,

Can you explain what “a[11] - LimeXTRX RF switch auto TDD swithcing” is doing exactly ?
In fact we are planning to develop an external PA/LNA but we need to get the TDD switching signal from somewhere on the board.
We tried to patch the gateware to output the TDD_OUT on GPIO with no success.
Do you have any idea ?

Best regards,

Tagging @VytautasB since this seems to be a gateware question.

Hi @julito,

which board are you using is it Fairwaves XTRX rev5 or LimeSDR XTRX v1.2?
For LimeSDR XTRX v1.2 RF switch auto TDD switching there is short explanation in LimeSDR-XTRX_1v2_GW_User_Manual_v1.02.pdf page 41, section 4.1.6 RF control logic – inst5_tdd_control.

Also TDD control signal is already connected TDD_GPIO3_N signal (FPGA pin J2). This signal connected mPCI connector pin 17. To enable this signal you have to set 0x000A[6] bit to ‘1’ and you can use this signal to control your external PA/LNA.

You can find mentioned register description in same document Table 19: FPGACFG module registers (0x000A-0x0010)

Regards,
Vytautas

Hi @VytautasB ,

Thank you for your answer. I’m using XTRX v1.2.
We already tried to analyze mpci pin17 and we saw nothing but we didn’t enable the register.
I will do another test.

Thanks a lot!

Hi All, I’m trying to configure XTRX v1.2 (the one from mouser) to work with 5G (not with Amarisoft) but with OpenAirInterface and would like to know if anyone has a SISO ini configuration file used for XTRX for this amarisoft. Currently I am getting a extremelly high DC offset (and out of centre) that I’m not sure how to solve:

Configuration on XRTX:

  • Frequency: 3619.2e6
  • Sample Rate: 30.72e6
  • Gain: about 70dB
  • LPBW: 20Mhz

Link to my config file: config.ini - Pastebin.com

As you can see in the image, on the left side you can see some system broadcast from the base station but that big line (DC offset at 3.609Ghz) of -15dBm is not supposed to be there. I tried to manually calibrate the DC offset via limeGUI, but without success. Any help with that example .ini for the SISO configuration would be appreciated @ricardas @julito :+1:

.ini file is not required, unless you need to change some specific chip parameters, that are not generic to SDR.
DC offset is peak number 2, the peak at number 1 is IQ imbalance. You can enable DC and IQ calibration in the device configuration file like configExample.cfg, or manually adjust the IQ gain/phase correctors using limeGUI in the LMS7002M/RxTSP tab.

Thanks. Yes I enabled all calibrations by using the LMS_Calibrate API but still no success in reducing the imbalance. I will try calibrating the IQ manually to see where it goes. I was able to improve the DC offset a bit by adjusting the DC offset, but still have some imbalance. Since I am transmitting OFDM symbols, do you recommend a specific procedure to do the manual calibration? Or if there is any test signal that I can use in LimeSuite do this IQ imbalance calibration?

Obs: Will also try that external loopback calibration that was suggested in the forum

Are you writing a plugin for the OpenAirInterface?

Yes, but there is already a driver for the legacy LimeSuite there. I just changed it to compile with the new LimeSuiteNG such that I can use XTRX. This part is easy, the problem is now trying to calibrate XTRX such that its RF transmission is similar to USRP B210.

Try using this: Ricardas Jonaitis / openairinterface5g · GitLab
It has a plugin for the LimeSuiteNG, and the configuration LimeXTRX.cfg is done the same way as for amarisoft plugin.
Here’s how to pass the configuration file to OAI cmake_targets/run2x2.sh · limesuiteng-integration · Ricardas Jonaitis / openairinterface5g · GitLab

Thanks a lot :+1:. I saw that you have a SISO file (lmssdr_3p5_40M_1x1.conf) I will try that and let you know

It worked. Thanks a lot. I had to enable the calibration “all” in that cfg file.
I’m basically installing XTRX in a mini PC. What a powerful device!

Hi @matheus.garbelini . May I ask how much of residual DC offset did you end up having? And did you manage to do manual calibration in limeGUI?

Hi, good news is that by manually calibrating DC offset you can drastically reduce it to the point of matching USRP B210.

  1. I was reading -23.3 dBm on the receiving side without calibrating XTRX (“dev0_calibration= “none”;”)
  2. Then, I calibrated XTRX via limeGUI by:
    • Under TXTSP tab, I disabled the “DC corrector” bypass checkbox. This means that XTRX will apply DC correction according to your adjust.
    • Then, I only changed both IQ parameters for “Transmitter DC Corrector”.
  3. Got -40.3dBm in the receiving side.
  4. Got happy and I saved the config file to be loaded during program startup.

You can see the Before and After in the screenshots below. Note that I tried to use automatic calibration but it looked the same (-23.3dBm) on the receiving side. I used USRP B210 with software sdrangel (Indeed this software is a blessing as the name suggests).

Before Manual TX DC IQ Calibration

After Manual TX DC IQ Calibration

My Setup

The calibration looked impressive in the final communication with the phone. @ricardas thanks for the help. I’m using band 41, 40mhz. Do you know whether XTRX could support 50mhz in SISO mode? Would XTRX be limited here or we are limited by OAI instead?

5G NR with Open AirInterface + XTRX 2.59Ghz@40Mhz

In SISO mode, XTRX can have sampling rate of 122.88MHz. I’m not familiar with OAI capabilities/limitations.

@ricardas Just checking if I would get any issues with miniPCIe max bandwidth. I was able to get max 60Mhz on OAI (61.44Msp/s) . With 70Mhz (90Msp/s) I would constantly get Tx Late indications. So I wonder if this is caused by OAI which cannot process TX frames fast enough for transmission at 90Msp/s. I guess a machine with AVX512 helps?

PCIe Gen2 x1 lane, can do 500 MB/s, so depends on data format used 122.88MHz * 3bytes (12bits IQ pair) = 368.64MB/s, fits within it. 122.88MHz * 4bytes (16bits IQ pair) = 491.52MB/s too close to theoretical limit, so woudn’t work reliably.

With high sampling rates, it’s more about OS timing and tuning, than raw calculation power, so AVX512 might have no effect.
For example, need enough cpu cores, so that threads would not contend with each other. Have a operating system with realtime kernel, so that thread scheduling/wake up would be more granural. Disable graphical interface, it can create spikes of cpu load, creating jitter in timing stability. Adjust data transfer buffer sizes (big buffers, higher latency, less cpu load, small buffers, less latency, high cpu load). CPU architecture, x86 has hardware coherent DMA memory, spends less time flushing cpu caches, Arm architecture does not have coherent memory, so more performance is lost flushing cpu caches… the list goes on.