How to force TDD mode in GNU Radio Companion?

Dear all,

I have developed GNU Radio Companion app in order to investigate MIMO RX channels coherent receiving issue reported here. My idea is to transmit known QPSK signal via TX 0 channel at some frequency and observe constellations of signals received via both RX channels at the very same frequency, and compare their rotation angle to get RX channels mutual phase offset. I am using USRP Sink/Source blocks, not Osmocom ones. So the driver stack is like: USRP Sink/Source -> SoapyUHD -> SoapySDR -> Limesuite. I have tested this app with USRP B200 mini and it seems to be working okay.

However, when using LimeSDR, I have observed rotation of received constellations for many frequencies, which means that TX/RX frequency offset is present. That probably means that still two PLLs are being used (FDD mode) instead of only one (TDD mode), which should be the case here.

So here is the question: how to force TDD mode in GNU Radio Companion? I have tested both master and RestructureLimeSuite repositories available on LimeSuite github page, because according to this commit the latter seems to force TDD mode when TX and RX frequency is the same. Still no success, though.

@andrewback mentioned some time ago about plans of implementing GNU Radio block which will be some kind of interface to low-level LMS7002 chip settings. Any news about that?

By the way, when using driver stack mentioned above, I cannot change TX gain after execution of flowgraph (depending on branch, it crashes or just stops receiving everytime I try to do it).

We still hope to create such a block and the ability to just load a Lime Suite ini file could be a good starting point.

Good to hear. But I think that enabling TDD mode when both TX and RX frequencies are the same is something what should be implemented anyway, or at least should be possible to force TDD mode by passing some device arguments, like “cacheCalibrations=0”. I believe @joshblum mentioned some day that it is planned. So I would like to know what is the status of that thing? (RestructureLimeSuite branch has not been updated for 20 days now, master branch even more)…

I added this: https://github.com/myriadrf/LimeSuite/commit/ebd027169defc9689d1eefa0f57d4df617b7cc4d The TDD mode is enabled when the Rx and Tx LO are tuned to the same value. You should see a print TDD LO sharing enabled when this happens.

Great, thank you for your effort! I have tried this and indeed was able to see ‘TDD LO sharing enabled’ message, however received constellations rotation is still present, which means there is still frequency offset between TX and RX. To be honest I was sure that this will fix it.

I have tested my flowgraph with USRP B200 mini and did not see such issues. So I believe something is still wrong with setting this TDD mode in LimeSDR, probably on lower level. @andrewback, do you have idea who may be able to investigate this?

Aside note: I am using few days old GnuRadio Companion, build from source and controlling LimeSDR with USRP Source/Sink blocks instead of Osmocom ones. For some reason ‘master’ branch of LimeSuite causes problems while initializing LimeSDR - sometimes I end up with following message several times in a row:

…and then it works fine on next try. What is interesting, I have no such issues with ‘RestructureLimeSuite’ branch - initialization is successfull every time in this case.

Not sure who would be the best person to investigate, so pinged @zack.

Hi @ccsh,

Could you share LMS register configuration file, please.

I’m afraid not - I am using GNU Radio Companion and I don’t think that there is a way to export these settings in this environment yet?