Bug #6049


TRX version transmits dummy FACCH instead of proper downlink BFIs

Added by falconia 9 months ago. Updated 3 months ago.

Target version:
Start date:
Due date:
% Done:


Spec Reference:


In speech TCH operation, there will always be times when a speech frame needs to be transmitted on the downlink, but there is no frame available to transmit (gap in the incoming RTP stream), or the logic of DTXd (FR/HR/EFR) says that no frame shall be transmitted at this FN, but we are not doing physical DTXd. The common layer of OsmoBTS indicates such conditions to the BTS model by sending TCH.req primitive with no attached message, and osmo-bts-sysmo version passes the problem to the proprietary PHY by sending it a zero-length payload. But what should we do in the 100% DIY TRX version?

The current code in osmo-bts-trx transmits dummy FACCH under these conditions. This approach is OK for TCH/F, even if not ideal philosophically, but is bad for TCH/H: if we have one missing 20 ms frame, we would like to transmit a filler block (one that will cause a BFI condition in the MS receiver) just in that one 20 ms position, rather than take out a 40 ms block-pair with FACCH/H.

For FR, HR and EFR speech codecs this patch implements a better solution, transmitting invalid speech blocks with inverted CRC3 instead of dummy FACCH:

However, the case of AMR speech is still left unfixed (transmitting dummy FACCH, including the bad case of FACCH/H on TCH/AHS), and I (falconia) am not currently qualified to implement whatever proper solution is needed for AMR. That proper solution for AMR would need to be implemented by someone who has studied AMR and thoroughly understands it as well as I have studied and now understand FR/EFR and HRv1, and being a community network operator contributing to Osmocom in conjunction with said network operation, rather than a paid developer, I do not currently have a time budget to get into AMR to the depth I would consider necessary. Therefore, the present ticket will need to remain open after the above patch gets merged, until whenever some AMR-knowledgeable developer gets the necessary time allocation to fix the bug for AMR speech.


  • TCH/HS

Related issues

Related to OsmoBTS - Bug #4823: osmo-bts-trx sends dummy bursts (instead of BFI) in the absence of RTP framesResolvedfixeria10/21/2020

Actions #1

Updated by falconia 9 months ago

The fix for FR, HR and EFR has been merged, but the bug remains open for AMR.

Actions #2

Updated by fixeria 8 months ago

  • Related to Bug #4823: osmo-bts-trx sends dummy bursts (instead of BFI) in the absence of RTP frames added
Actions #3

Updated by fixeria 8 months ago

  • Checklist item TCH/FS, TCH/EFS added
  • Checklist item TCH/HS added
  • Checklist item TCH/AFS, TCH/AHS added
Actions #4

Updated by laforge 4 months ago

  • Assignee set to jolly
Actions #5

Updated by jolly 3 months ago

  • Status changed from New to In Progress

I looked at the code and the TS 45.003. For me a solution would be similar to EFR/FR. I would poison and empty frame (with inverse the remainder of the CRC bits). (Also it must not confuse with the DTX controling frames.) There location of the CRC bits are almost different for all 8 codec rates and one is different between AFS and AHS.

In the first place I thought about sending DTX frames instead, but this is wrong. The phone must extrapolate the gap on bad frames, not insert silence or some kind of comfort noise.

Actions #6

Updated by jolly 3 months ago

  • Checklist item TCH/AFS, TCH/AHS set to Done
Actions #7

Updated by jolly 3 months ago

  • Status changed from In Progress to Resolved
  • % Done changed from 0 to 100

Patch for AMR has been merged. BFI for all codecs have been implemented.


Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)