RF power problems with current master of osmo-trx

Tom Tsou tom at tsou.cc
Sat Jan 25 07:36:10 UTC 2014


On Sat, Jan 25, 2014 at 1:22 AM, Andreas Eversberg <andreas at eversberg.eu> wrote:
> once a channel was activeated,
> there will be RF power on the specific TS, even when osmo-bts does not send
> bursts anymore. i guess that some filler table of osmo-trx causes it. i
> think it would be nice if osmo-trx would stop transmitting, when there are
> no more bursts comming from osmo-bts. (at least after a while.)

Yes, this is the behaviour of the filler table, which will resend the
previous frame until a new frame arrives. Sending an idle frame will
disable output, which is how the filler table is managed in OpenBTS.
You can disable the filler table with this patch.

diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index e5ab476..9077465 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -197,19 +197,13 @@ void Transceiver::pushRadioVector(GSM::Time &nowTime)
   TransceiverState *state;
   std::vector<signalVector *> bursts(mChans);
   std::vector<bool> zeros(mChans);
+  std::vector<bool> filler(mChans, true);

   for (size_t i = 0; i < mChans; i ++) {
     state = &mStates[i];

     while ((burst = mTxPriorityQueues[i].getStaleBurst(nowTime))) {
       LOG(NOTICE) << "dumping STALE burst in TRX->USRP interface";
-
-      TN = burst->getTime().TN();
-      modFN = burst->getTime().FN() % state->fillerModulus[TN];
-
-      delete state->fillerTable[modFN][TN];
-      state->fillerTable[modFN][TN] = burst->getVector();
-      burst->setVector(NULL);
       delete burst;
     }

@@ -220,9 +214,8 @@ void Transceiver::pushRadioVector(GSM::Time &nowTime)
     zeros[i] = state->chanType[TN] == NONE;

     if ((burst = mTxPriorityQueues[i].getCurrentBurst(nowTime))) {
-      delete state->fillerTable[modFN][TN];
-      state->fillerTable[modFN][TN] = burst->getVector();
       bursts[i] = burst->getVector();
+      filler[i] = false;
       burst->setVector(NULL);
       delete burst;
     }
@@ -230,6 +223,11 @@ void Transceiver::pushRadioVector(GSM::Time &nowTime)

   mRadioInterface->driveTransmitRadio(bursts, zeros);

+  for (size_t i = 0; i < mChans; i++) {
+    if (!filler[i])
+      delete bursts[i];
+  }
+
   return;
 }




More information about the UmTRX mailing list