如何查看UE的ENDC组合能力

本文详细分析了UE在ENDC(演进型双连接)网络中如何查看其支持的频带组合能力,以及为何在实际上报时只显示NR5。内容涉及UECapabilityInformation消息,解释了网络仅请求NR5频段导致终端仅上报相关能力的原因。
摘要由CSDN通过智能技术生成

本文带着一个问题,介绍如何查看UE支持的ENDC band组合能力的方法,并解答问题。

AT&T上报ENDC网络能力时,NR只上报了bandNR 5,是什么原因?
[0xB0C0]                 OTA LOG                  05:58:40.391797          UL_DCCH / UECapabilityInformationRadio Bearer ID: 1, Freq: 675, SFN: 01
  rf-ParametersMRDC 
  {
    supportedBandCombinationList 
    {
      {
        bandList 
        {
          eutra : 
            {
              bandEUTRA 2,
              ca-BandwidthClassDL-EUTRA a,
              ca-BandwidthClassUL-EUTRA a
            },
          nr : 
            {
              bandNR 5,
              ca-BandwidthClassDL-NR a,
              ca-BandwidthClassUL-NR a
            }
        },
        featureSetCombination 0,

        mrdc-Parameters 
        {
          dynamicPowerSharingENDC supported,
          simultaneousRxTxInterBandENDC supported
        }
      },
      {
        bandList 
        {
          eutra : 
            {
              bandEUTRA 66,
              ca-BandwidthClassDL-EUTRA c,
              ca-BandwidthClassUL-EUTRA a
            },
          nr : 
            {
              bandNR 5,
              ca-BandwidthClassDL-NR a,
              ca-BandwidthClassUL-NR a
            }
        },
        featureSetCombination 1,
        mrdc-Parameters 
        {
          dynamicPowerSharingENDC supported,
          simultaneousRxTxInterBandENDC supported

        }
      },
      {
        bandList 
        {
          eutra : 
            {
              bandEUTRA 66,
              ca-BandwidthClassDL-EUTRA a,
              ca-BandwidthClassUL-EUTRA a
            },
          nr : 
            {
              bandNR 5,
              ca-BandwidthClassDL-NR a,
              ca-BandwidthClassUL-NR a
            }
        },
        featureSetCombination 0,
        mrdc-Parameters 
        {
          dynamicPowerSharingENDC supported,
          simultaneousRxTxInterBandENDC supported

        }
      },
      {
        bandList 
        {
          eutra : 
            {
              bandEUTRA 30,
              ca-BandwidthClassDL-EUTRA a,
              ca-BandwidthClassUL-EUTRA a
            },
          nr : 
            {
              bandNR 5,
              ca-BandwidthClassDL-NR a,
              ca-BandwidthClassUL-NR a
            }
        },
        featureSetCombination 0,
        mrdc-Parameters 
        {
          dynamicPowerSharingENDC supported,
          simultaneousRxTxInterBandENDC supported

        }
      }
    },
    appliedFreqBandListFilter 
    {
      bandInformationEUTRA : 
        {
          bandEUTRA 2
        },
      bandInformationEUTRA : 
        {
          bandEUTRA 66
        },
      bandInformationEUTRA : 
        {
          bandEUTRA 4
        },
      bandInformationEUTRA : 
        {
          bandEUTRA 30
        },
      bandInformationEUTRA : 
        {
          bandEUTRA 29
        },
      bandInformationEUTRA : 
        {
          bandEUTRA 17
        },
      bandInformationEUTRA : 
        {
          bandEUTRA 14
        },
      bandInformationEUTRA : 
        {
          bandEUTRA 5
        },
      bandInformationEUTRA : 
        {
          bandEUTRA 25
        },
      bandInformationEUTRA : 
        {
          bandEUTRA 10
        },
      bandInformationEUTRA : 
        {
          bandEUTRA 12
        },
      bandInformationEUTRA : 
        {
          bandEUTRA 85
        },
      bandInformationEUTRA : 
        {
          bandEUTRA 26
        },
      bandInformationNR : 
        {
          bandNR 5
        }
    },
查看UE支持的ENDC band组合能力的方法是:

Log Packets -> NR5G -> RRC -> [0xB826] NR5G RRC Supported CA Combos
05:58:40.391732    [0xB826]    NR5G RRC Supported CA Combos
Version = 9
Version 0x09 {
   Total Num Combos = 106
   starting_index = 0
   Num Combos = 100
   Source = RF
   CA Combos[0] {
      Envelope Mode Pruned Out = false
      Simul RXTX Endc = 1
      Simul RXTX CA = 1
      Muting State = NO_MATCH
      Power Class = 2
      Env Mask = 1
      BC_ID =     0
      Intra Config Type = 0
      Num Bands = 2
      TDD Ant Switch FDD Disruption = 0
      CS Style = ULCA
      RF Envelope_Mode Mask = 0x00000001
      RF Envelope_Mode Subset Mask = 0x00000000
      Per Band Info[0] {

         bw_class {
            Band = 79
            Tech = NR
            DL BW Class =              CLASS_A
            DL Max Antennas Index =                 ANTENNA_4
            UL BW Class =              CLASS_A
            UL Max Antennas Index =                 ANTENNA_1
            UL QAM Cap Index = 1
            SRS TX Switch Type =    SRS_UNSUPPORTED
            Max SCS =             SCS_30
            DL BW Per CC =                                   BW_100
            UL BW Per CC =                                   BW_100
            SRS Carrier Hop = 0
            RX Limit = 0
            TX Switch Impact To RX = 0
            TX Switch Another Band = 0
         }
      }
      Per Band Info[1] {

         bw_class {
            Band = 41
            Tech = LTE
            DL BW Class =              CLASS_C
            DL Max Antennas Index =               ANTENNA_2_2
            UL BW Class =              CLASS_A
            UL Max Antennas Index =                 ANTENNA_1
            UL QAM Cap Index = 1
            SRS TX Switch Type =    SRS_UNSUPPORTED
            Max SCS =             SCS_30
            DL BW Per CC =                                 BW_20_20
            UL BW Per CC =                                    BW_20
            SRS Carrier Hop = 0
            RX Limit = 0
            TX Switch Impact To RX = 0
            TX Switch Another Band = 0
         }
      }
   }
……

我们查看到的ENDC组合是很多的,
为什么上报给网络的ENDC组合能力只有N5的呢?
是因为网络只查询时只下发了N5的:
[0xB0C0]                 OTA LOG                  05:58:40.389696          DL_DCCH / UECapabilityEnquiryRadio Bearer ID: 1, Freq: 675, SFN: 4721
  message c1 : ueCapabilityEnquiry : 
      {
        rrc-TransactionIdentifier 0,
        criticalExtensions c1 : ueCapabilityEnquiry-r8 : 
            {
              ue-CapabilityRequest 
              {
                eutra-nr,
                nr
              },
              nonCriticalExtension 
              {
                nonCriticalExtension 
                {
                  nonCriticalExtension 
                  {
                    nonCriticalExtension 
                    {
                      nonCriticalExtension 
                      {
                        requestedFreqBandsNR-MRDC-r15 '01A0042080303A0700800D0080600480B0A806600200'H,
                        nonCriticalExtension 
                        {

                        {
                          eutra-nr-only-r15 true
                        }
                      }
                    }
                  }
                }
              }
            }
      }
}

=======================================================
Further decoding Nr Requested Freq Band MRDC 
=======================================================


Interpreted PDU:
value FreqBandList ::= 
{
  bandInformationEUTRA : 
    {
      bandEUTRA 2
    },
  bandInformationEUTRA : 
    {
      bandEUTRA 66
    },

  bandInformationEUTRA : 
    {
      bandEUTRA 4
    },
  bandInformationEUTRA : 
    {
      bandEUTRA 30
    },
  bandInformationEUTRA : 
    {
      bandEUTRA 29
    },
  bandInformationEUTRA : 
    {
      bandEUTRA 17
    },
  bandInformationEUTRA : 
    {
      bandEUTRA 14
    },
  bandInformationEUTRA : 
    {
      bandEUTRA 5
    },
  bandInformationEUTRA : 
    {
      bandEUTRA 25
    },
  bandInformationEUTRA : 
    {
      bandEUTRA 10
    },
  bandInformationEUTRA : 
    {
      bandEUTRA 12
    },
  bandInformationEUTRA : 
    {
      bandEUTRA 85
    },
  bandInformationEUTRA : 
    {
      bandEUTRA 26
    },
  bandInformationNR :    <-----------网络只请求了N5,所以终端就只上报与N5有关的ENDC能力
    {
      bandNR 5
    }
}

用python根据需求完成一个TXT解析器的简单开发 一 修改说明: 需求一: 一开始说要解析UECapabilityInfo 消息里的supportedBandCombination-r10 这个IE里的CA组合转化成易阅读的表现形式. 我以为一组CA组合就是一组: bandEUTRA-r10 ca-BandwidthClassUL-r10 ca-BandwidthClassDL-r10 supportedMIMO-CapabilityDL-r10 功能实现: 有效信息筛选:于是就用循环把UECapabilityInformation的数据里每一行作为一个元素放到list里面 然后用bandEUTRA-r10作为一组CA的识别信息、在筛选出同组ca-BandwidthClassUL-r10、ca-BandwidthClassDL-r10、supportedMIMO-CapabilityDL-r10的信息,添加保存到字符串中,然后再把字符串作为元素添加到list中去。最后遍历list的元素写入目标文件 需求二: 然后收到反馈CA组合的理解是错误的。一组CA组合应该是以大括号作为识别的,里面可能包含多组: bandEUTRA-r10: ca-BandwidthClassUL-r10 ca-BandwidthClassDL-r10 supportedMIMO-CapabilityDL-r10 CA组合识别原理:在查看UECapabilityInformation内的CA组合后 发现CA组合内第一个 bandEUTRA-r10因为比其他bandEUTRA-r10多了一层的CA组合的大括号,所以如果给每一行增加索引的话就会发现除了第一个bandEUTRA-r10,其他bandEUTRA-r10到上一个supportedMIMO-CapabilityDL-r10的距离都是一样的,为了减少复杂度,我删除了所有’{’,这样所有除了所有CA组合第一个bandEUTRA-r10往上第四行是’}’其他bandEUTRA-r10的往上第四行都是supportedMIMO-CapabilityDL-r10 功能实现: 添加索引:便利时用了for enumerate()循环,这样便利时可以在循环时,自动为每个元素生成索引 CA组合识别:在识别到bandEUTRA-r10时,增加一个判断if datalist1[index-4].startswith(),如果bandEUTRA-r10的往上第四行是supportedMIMO-CapabilityDL-r10说明同组CA未结束,把筛选的有效信息强制类型转换后添加在上个元素末尾,反之则说明是个新的CA组合,往列表里添加一个新的元素。 需求三: 之后收到反馈CA组合虽然识别了,但是排序不行,需要按照CA组合支持的band进行排序 功能实现: 排序:于是我在识别完CA组合后,增加了一个循环和count(),用CA组合里的’-’给它们归类 比如1AA,11A,21AA是一类;1A-1A,2A-1AA,3A-1A是一类 在用一个中间变量保存开头的band的数字,一个类中把开头支持band的数字字母相同的CA组合归为一行 比如1A-21A,1A-22A一类1AA-2AA 1AA-3AA为一类 需求四: 之后收到反馈,CA组合分类不能只按照开头比较分类,不然一但数据多了会对查阅带来极大不便,应该按照每组CA组合中bandEUTRA-r10的值进行判断,比如1AA-2AA,1A-2AA和1AA-2A应该归在同一行 实现原理:首先我想的是按位比较数字,但是因为字母的数量不稳定,数字的位置不一定对应,然后我就想把数字全部提取出来作为索引,在相应的索引后面添加同组元素,用dict来实现排序。难点就在于从字符串中提取数字。后来在python的正则表达式中找到相关的处理函数compile()(设置匹配对象类型)和findall()(找到所有匹配对象并以list返回)。 功能实现: 第二次排序:在上次的排序中我保留了分类和从小到大的排序。方便提取索引时,索引也是从小到大。每遍历一个元素(CA组合有效信息),就compile()和findall(),从该元素中提取数字组合(在compile()的参数中添加()就能够使提取的内容成为一组数据),然后通过dict自带函数setdefault()添加索引,并可以设置索引值为list类型(dict类型的索引的值不可变,但如果类型为listlist的内容可以进行改动),避免重复索引,在本次遍历中完成将元素添加到索引值对应的list中去 需求五: 之后对程序进行测试,在测试test2时发现layers增加了fourlayers类型后,用来代表layers的数字2和4会影响分类结果。比如1AA(2)-1AA(2)和1A(4)-1A(2)会被归为两类。 test1:当CA组合的格式为xx-xx-xx-xx-xx(最长可识别为五位元素的组合,再长就需要修改代码) test2:当CA组合包含fourLayers test3:当CA组合缺失某种格式比如xx-xx时发现layers增加了fourlayers 功能实现: : 解除layers对排序的影响:用II 和 IV替代2,4来表示layers,测试后不影响阅读与分类 二、整体程序架构: 1.通过循环和自带的startswith()先将每组CA组合的有效信息识别 2.通过sorted()函数将所有CA组合从小到大排列 3.通过count()函数将所有CA组合根据格式不同分类 4.通过循环和正则表达式的split()对所有CAlist数据进行处理(用split处理只是防止出现不必要的错误) 5.通过循环和正则表达式compile()和findall()识别所有CA组合中数字,并将同一组合中的数字合为一个元素(在同一循环,用这个数字的元素作为一个dict的索引),用dict自带的setdefault()进行Key的添加顺便设置Key的值为list,避免Key重复,在用append把当前Key的字符串,添加到Key对应值的list中去 6.最后对dict整体遍历,将每一个Key的值输出到文本中去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值