<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Takwa S</title>
    <description>The latest articles on DEV Community by Takwa S (@hicelltek).</description>
    <link>https://dev.to/hicelltek</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3833729%2F93266324-f94b-4fd9-bf41-43c50bf68202.jpg</url>
      <title>DEV Community: Takwa S</title>
      <link>https://dev.to/hicelltek</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hicelltek"/>
    <language>en</language>
    <item>
      <title>A PRB heatmap is easy. Trustworthy interference analysis is not</title>
      <dc:creator>Takwa S</dc:creator>
      <pubDate>Wed, 02 Sep 2026 13:16:30 +0000</pubDate>
      <link>https://dev.to/hicelltek/a-prb-heatmap-is-easy-trustworthy-interference-analysis-is-not-5g33</link>
      <guid>https://dev.to/hicelltek/a-prb-heatmap-is-easy-trustworthy-interference-analysis-is-not-5g33</guid>
      <description>&lt;p&gt;A RAN engineer asked me for an Excel macro to visualize per-PRB interference counters.&lt;/p&gt;

&lt;p&gt;The request sounded simple: load a file and draw a heatmap. But the chart was not the hard part. The hard part was making the result repeatable and technically honest.&lt;/p&gt;

&lt;p&gt;So I built a small free browser tool instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  273 PRBs is one configuration, not a rule
&lt;/h2&gt;

&lt;p&gt;It is tempting to create 273 fixed columns because that is a familiar NR case. But the PRB count depends on bandwidth and subcarrier spacing. Real exports can also contain partial or non-continuous ranges.&lt;/p&gt;

&lt;p&gt;The parser detects the PRB indices present in the file. The heatmap keeps every value, fits the complete range to the screen by default, and displays selected tick labels only. Exact values remain available on hover.&lt;/p&gt;

&lt;h2&gt;
  
  
  dBm values need power-domain averaging
&lt;/h2&gt;

&lt;p&gt;An arithmetic mean is correct for many raw counters. It is not physically correct for power expressed in dBm.&lt;/p&gt;

&lt;p&gt;For dBm values I use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mean_dBm = 10 * log10(mean(10^(value_dBm / 10)))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example, the arithmetic mean of -100 dBm and -110 dBm is -105 dBm. The power-domain mean is about -102.6 dBm. That difference matters when engineers compare PRBs or apply thresholds.&lt;/p&gt;

&lt;p&gt;The tool therefore asks for the unit and whether higher or lower values represent more interference. It does not label a PRB as good or bad without an explicit threshold and counter meaning.&lt;/p&gt;

&lt;h2&gt;
  
  
  OSS exports do not all look the same
&lt;/h2&gt;

&lt;p&gt;The importer supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wide rows such as &lt;code&gt;timestamp, cell_id, PRB_0, PRB_1, ...&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Long rows such as &lt;code&gt;timestamp, cell_id, prb, interference&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Single snapshots without a timestamp&lt;/li&gt;
&lt;li&gt;CSV separators using comma, semicolon, or tab&lt;/li&gt;
&lt;li&gt;XLSX worksheets and several cells&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Automatic detection is useful, but the user can always correct the column mapping before analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  The privacy boundary should be visible
&lt;/h2&gt;

&lt;p&gt;Network counter exports can contain sensitive identifiers. Parsing runs in a Web Worker, directly in the browser. The tool does not upload imported content, filenames, cell IDs, headers, or values.&lt;/p&gt;

&lt;p&gt;The repository includes synthetic demo files, unit tests, end-to-end tests, and a network privacy test with unique sentinels. No real customer or vendor export is included.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why make a dedicated tool?
&lt;/h2&gt;

&lt;p&gt;A one-off chart can look convincing and still hide wrong assumptions. A reusable engineering tool gives the same parser, unit rules, calculations, limits, and exports every time.&lt;/p&gt;

&lt;p&gt;You can try the tool without an account:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hicelltek.com/tools/nr-prb-interference-visualizer/" rel="noopener noreferrer"&gt;Open the 5G NR PRB Interference Visualizer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The generic engine is open source under MIT:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/tsebai/nr-prb-interference-visualizer" rel="noopener noreferrer"&gt;View the source on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is an independent, vendor-neutral visualization tool. Compatibility depends on the structure and meaning of the exported counters.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>typescript</category>
      <category>showdev</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How We Debug Mobile Access Failures When the Dashboard Says Everything Is Fine</title>
      <dc:creator>Takwa S</dc:creator>
      <pubDate>Thu, 28 May 2026 12:15:24 +0000</pubDate>
      <link>https://dev.to/hicelltek/how-we-debug-mobile-access-failures-when-the-dashboard-says-everything-is-fine-1pmg</link>
      <guid>https://dev.to/hicelltek/how-we-debug-mobile-access-failures-when-the-dashboard-says-everything-is-fine-1pmg</guid>
      <description>&lt;p&gt;You walk into a hospital building. Full bars on your phone. You try to place a call. Nothing. You try again. Failure. A third time. It finally connects.&lt;/p&gt;

&lt;p&gt;The network planning dashboard says this site has 99.8% coverage. The field data tells a completely different story: 40% of Random Access Channel (RACH) attempts are failing.&lt;/p&gt;

&lt;p&gt;Welcome to the RACH trap. And if you are an RF engineer, you have probably seen this more than once.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is RACH and Why Should You Care?
&lt;/h2&gt;

&lt;p&gt;Before your phone does anything on a cellular network (call, data session, handover), it needs to perform a Random Access procedure. Think of it as a handshake. Your device sends a preamble on the RACH to the base station, saying: "I am here, let me in."&lt;/p&gt;

&lt;p&gt;If that handshake fails, nothing else works. No call setup. No data bearer. No handover. The user sees full bars but experiences dead air.&lt;/p&gt;

&lt;p&gt;The critical insight: &lt;strong&gt;coverage (RSRP/RSRQ) and access (RACH success rate) are two completely independent metrics.&lt;/strong&gt; You can have perfect coverage and completely broken access.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hospital Case: Debugging Step by Step
&lt;/h2&gt;

&lt;p&gt;Here is the scenario. A 4G site near a major hospital. The OSS dashboard shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RSRP coverage: 99.8% above -110 dBm&lt;/li&gt;
&lt;li&gt;Call setup success rate: reported at 96%&lt;/li&gt;
&lt;li&gt;No alarms, no outages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But user complaints keep coming. Dropped calls. Failed connections. Especially inside the building.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Capture at the UE Side
&lt;/h3&gt;

&lt;p&gt;The first thing we did was stop looking at the dashboard and start capturing &lt;a href="https://hicelltek.com/en/outils/" rel="noopener noreferrer"&gt;Layer 3 messages directly from the device&lt;/a&gt;. The difference between what the network thinks is happening and what the device actually experiences is where every real diagnosis starts.&lt;/p&gt;

&lt;p&gt;We captured:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RRCConnectionRequest&lt;/strong&gt; attempts and responses&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RACH preamble transmissions&lt;/strong&gt; and retransmissions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timing Advance values&lt;/strong&gt; at connection setup&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Identify the Pattern
&lt;/h3&gt;

&lt;p&gt;The data revealed something the counters never showed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;40% of RACH attempts needed 3+ retransmissions before succeeding&lt;/li&gt;
&lt;li&gt;Timing Advance values were abnormally high (12-15 instead of 0-3 for an indoor scenario)&lt;/li&gt;
&lt;li&gt;The serving cell was not the nearest cell. The device was accessing an overshooting cell 2.3 km away&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Correlate with RF Conditions
&lt;/h3&gt;

&lt;p&gt;This is where most debugging stops too early. Good RSRP does not mean good access. We measured:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RSRP:&lt;/strong&gt; -85 dBm (excellent on paper)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SINR:&lt;/strong&gt; 3 dB (terrible, indicating interference)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Number of detected cells:&lt;/strong&gt; 7 (massive pilot pollution)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The device had strong signal from a distant cell but could not reliably access it because of interference from six other cells at similar power levels.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Root Cause
&lt;/h3&gt;

&lt;p&gt;The overshooting cell had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Antenna downtilt set 2 degrees too high&lt;/li&gt;
&lt;li&gt;No neighbor relation with the actual closest cell&lt;/li&gt;
&lt;li&gt;RACH power ramping configured with default parameters (not adapted to high-interference environment)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three configuration errors. Zero alarms triggered in the OSS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Dashboards Miss This
&lt;/h2&gt;

&lt;p&gt;OSS platforms aggregate. They show you averages over 15-minute or 1-hour windows, across all users on a cell. A 40% RACH failure rate for users in one specific building gets diluted into a 96% cell-wide success metric.&lt;/p&gt;

&lt;p&gt;Field debugging with &lt;a href="https://hicelltek.com/en/outils/" rel="noopener noreferrer"&gt;UE-side diagnostic tools&lt;/a&gt; captures what actually happens at the device level. Every preamble, every retransmission, every timing advance value. That is where you find the root cause.&lt;/p&gt;

&lt;p&gt;The gap between "network says fine" and "user says broken" is almost always a Layer 3 problem that only shows up in per-device, per-attempt analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Fix and Validation
&lt;/h2&gt;

&lt;p&gt;After adjusting the antenna tilt (2 degrees down), adding the missing neighbor cell, and tuning the RACH power ramping step to 4 dB, we re-ran the field test:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RACH first-attempt success rate went from 58% to 97%&lt;/li&gt;
&lt;li&gt;Average preamble retransmissions dropped from 3.2 to 0.4&lt;/li&gt;
&lt;li&gt;User complaints from that area: zero in the following two weeks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Total time from diagnosis to fix: 4 hours. Total time the problem existed before field debugging: 7 months.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Takeaway for Engineers
&lt;/h2&gt;

&lt;p&gt;If your coverage KPI says everything is fine but users complain, stop looking at coverage. Start looking at access. Specifically:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Capture Layer 3 at the device&lt;/strong&gt;, not at the network counters&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check RACH retransmission rates&lt;/strong&gt;, not just success rates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Measure Timing Advance&lt;/strong&gt; to verify the device is accessing the right cell&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Count detected cells&lt;/strong&gt; to identify pilot pollution&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Correlate RSRP with SINR&lt;/strong&gt;. Good signal with poor quality = interference problem&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is the methodology we use on every field campaign. The tools matter, but the approach matters more.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I write about RF field debugging, Layer 3 analysis, and the gap between what dashboards show and what actually happens on the air interface. Follow the &lt;a href="https://signalhunters.hicelltek.com" rel="noopener noreferrer"&gt;Signal Hunters newsletter&lt;/a&gt; for weekly field cases like this one.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Takwa Sebai, Co-founder &amp;amp; CEO at &lt;a href="https://hicelltek.com" rel="noopener noreferrer"&gt;HiCellTek&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>telecom</category>
      <category>networking</category>
      <category>5g</category>
      <category>debugging</category>
    </item>
    <item>
      <title>3 RRC message traps I keep seeing in 5G NR drive tests (and how to spot them)</title>
      <dc:creator>Takwa S</dc:creator>
      <pubDate>Sat, 11 Apr 2026 22:51:38 +0000</pubDate>
      <link>https://dev.to/hicelltek/3-rrc-message-traps-i-keep-seeing-in-5g-nr-drive-tests-and-how-to-spot-them-kic</link>
      <guid>https://dev.to/hicelltek/3-rrc-message-traps-i-keep-seeing-in-5g-nr-drive-tests-and-how-to-spot-them-kic</guid>
      <description>&lt;p&gt;RRC traces look simple on the surface. You decode a few messages, you read the field names, and you think you understand what the UE and the gNB are doing. Then you spend half a day chasing a bug that was never really a bug.&lt;/p&gt;

&lt;p&gt;Three scenarios come back in almost every 5G NR drive test I analyze. Each one is easy to misread if you look at the message in isolation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trap 1 : RRCReconfiguration with an empty measConfig
&lt;/h2&gt;

&lt;p&gt;You see an &lt;code&gt;RRCReconfiguration&lt;/code&gt; in the trace, you open it, and the &lt;code&gt;measConfig&lt;/code&gt; section is empty or only has a &lt;code&gt;measObjectToRemoveList&lt;/code&gt;. First reaction of many engineers : "the network just dropped the measurement setup, that is why we lost the neighbor".&lt;/p&gt;

&lt;p&gt;Most of the time that conclusion is wrong. Per 3GPP TS 38.331, a &lt;code&gt;measConfig&lt;/code&gt; in an &lt;code&gt;RRCReconfiguration&lt;/code&gt; is a &lt;strong&gt;delta update&lt;/strong&gt;, not a full replacement. An empty delta means "keep everything you already had". It is only an actual removal if specific &lt;code&gt;MeasObjectId&lt;/code&gt; or &lt;code&gt;ReportConfigId&lt;/code&gt; values are listed in the remove lists.&lt;/p&gt;

&lt;p&gt;How to spot it : before declaring a measurement drop, reconstruct the cumulative &lt;code&gt;measConfig&lt;/code&gt; from the beginning of the RRC connection, not from this single message. The cell has been configuring you since the first &lt;code&gt;RRCSetup&lt;/code&gt;, each reconfiguration only sends the diff.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trap 2 : MeasurementReport with zero neighbor results
&lt;/h2&gt;

&lt;p&gt;You open a &lt;code&gt;MeasurementReport&lt;/code&gt; and the &lt;code&gt;measResultListEUTRA&lt;/code&gt; or &lt;code&gt;measResultListNR&lt;/code&gt; field has zero entries. The local cell is there, but no neighbors. On the map, you can clearly see there is a neighbor cell visible at the UE location. Instant assumption : "the UE failed to detect the neighbor".&lt;/p&gt;

&lt;p&gt;Often the UE did detect the neighbor. It simply did not pass the event trigger. A &lt;code&gt;MeasurementReport&lt;/code&gt; is only emitted when an event condition is satisfied, typically &lt;code&gt;eventA3&lt;/code&gt; for handover, and the trigger is sensitive to offsets (&lt;code&gt;Ocn&lt;/code&gt;, &lt;code&gt;Ofn&lt;/code&gt;, hysteresis, &lt;code&gt;timeToTrigger&lt;/code&gt;) defined in the &lt;code&gt;ReportConfigNR&lt;/code&gt; that was active at that moment (TS 38.331 &lt;code&gt;ReportConfigNR&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;How to spot it : cross reference the &lt;code&gt;ReportConfig&lt;/code&gt; associated with the &lt;code&gt;measId&lt;/code&gt; in that report. If &lt;code&gt;eventA3&lt;/code&gt; requires the neighbor to be better than serving by +3 dB and the neighbor is only +1 dB above serving, you will never see it in a report, no matter how strong it is in absolute terms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trap 3 : RRCReconfigurationComplete before SecurityModeComplete
&lt;/h2&gt;

&lt;p&gt;Less common but very misleading. You see the UE send &lt;code&gt;RRCReconfigurationComplete&lt;/code&gt; and then &lt;code&gt;SecurityModeComplete&lt;/code&gt; arrives a few ms later in the trace. Some log viewers reorder messages slightly, so you end up reading what looks like "the UE completed a reconfiguration before security was even up". First reflex : security bug, or protocol violation.&lt;/p&gt;

&lt;p&gt;In practice this is almost always a display ordering artifact. The real ordering at the RRC layer is the one defined in TS 38.331 for the procedural sequence, and the security context itself is governed by TS 33.501. The PDCP sequence numbers and the actual timestamps at the lower layers are the authoritative source, not the order of pretty printed lines in a viewer.&lt;/p&gt;

&lt;p&gt;How to spot it : trust PDCP SN or raw timestamps, not the human readable sort. If the PDCP layer has security already activated when the &lt;code&gt;RRCReconfiguration&lt;/code&gt; was received, the procedure is conformant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why these traps matter
&lt;/h2&gt;

&lt;p&gt;All three traps share the same pattern. A message looks complete on its own, but its meaning depends on state that is &lt;strong&gt;not inside the message itself&lt;/strong&gt;. You need the accumulated &lt;code&gt;measConfig&lt;/code&gt;, or the currently active &lt;code&gt;ReportConfig&lt;/code&gt;, or the PDCP context. A decoder that only shows you one message at a time can make you draw the wrong conclusion very fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to check any of the above on your own trace
&lt;/h2&gt;

&lt;p&gt;If you want to paste a raw hex frame and see exactly which IE values are set on &lt;code&gt;RRCReconfiguration&lt;/code&gt;, &lt;code&gt;MeasurementReport&lt;/code&gt;, or any other NR L3 message, I keep a free browser decoder at &lt;a href="https://hicelltek.com/en/decoder/" rel="noopener noreferrer"&gt;hicelltek.com/en/decoder/&lt;/a&gt;. 20 decodes per day, no signup. It is built around the 3GPP TS 38.331 ASN.1 grammar so every field maps back to the spec directly.&lt;/p&gt;

&lt;p&gt;If this is the first time you are looking at RRC hex, my earlier post &lt;a href="https://dev.to/hicelltek/how-to-decode-5g-nr-rrc-messages-online-2oo9"&gt;How to Decode 5G NR RRC Messages Online&lt;/a&gt; covers the basics first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your turn
&lt;/h2&gt;

&lt;p&gt;Which RRC trap have you personally lost the most time on ? The measConfig one is the one I see daily, but I am curious if others fall more often on the measurement event conditions or the security ordering artifact. Drop it in the comments.&lt;/p&gt;

</description>
      <category>telecom</category>
      <category>networking</category>
      <category>5g</category>
      <category>wireless</category>
    </item>
    <item>
      <title>Online 3GPP RRC &amp; NAS Decoder for 2G to 5G</title>
      <dc:creator>Takwa S</dc:creator>
      <pubDate>Thu, 19 Mar 2026 13:49:31 +0000</pubDate>
      <link>https://dev.to/hicelltek/how-to-decode-5g-nr-rrc-messages-online-2oo9</link>
      <guid>https://dev.to/hicelltek/how-to-decode-5g-nr-rrc-messages-online-2oo9</guid>
      <description>&lt;p&gt;If you have a single RRC or NAS hexadecimal payload from QXDM/QCAT, Wireshark, TEMS, Nemo, a PCAP export or a drive-test log, you should not need to rebuild a complete trace just to inspect one Layer 3 message.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://hicelltek.com/en/decoder/" rel="noopener noreferrer"&gt;HiCellTek online 3GPP decoder&lt;/a&gt; decodes supported RRC and NAS messages from &lt;strong&gt;2G GSM, 3G UMTS, 4G LTE and 5G NR&lt;/strong&gt;, including supported structures through &lt;strong&gt;3GPP Release 18&lt;/strong&gt;. It is accessed directly from a browser, with no local installation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick facts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;2G, 3G, 4G and 5G in one interface&lt;/li&gt;
&lt;li&gt;RRC and NAS workflows&lt;/li&gt;
&lt;li&gt;20 free RRC decodes per day, without signup&lt;/li&gt;
&lt;li&gt;Tree and raw views, plus text export in the free plan&lt;/li&gt;
&lt;li&gt;NAS, JSON, table view and batch decoding in Pro&lt;/li&gt;
&lt;li&gt;Automatic expansion of supported LTE-to-NR containers&lt;/li&gt;
&lt;li&gt;Hex frames are processed in memory and are not retained by HiCellTek&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  RRC and NAS are not the same thing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;RRC&lt;/strong&gt; is the access-stratum control protocol between the UE and the radio network. It carries procedures and configuration such as connection setup, measurement reporting, handover-related reconfiguration, radio bearers, SIBs and UE capabilities.&lt;/p&gt;

&lt;p&gt;The official protocol specifications are &lt;a href="https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3197" rel="noopener noreferrer"&gt;3GPP TS 38.331 for NR RRC&lt;/a&gt; and &lt;a href="https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=2440" rel="noopener noreferrer"&gt;3GPP TS 36.331 for LTE RRC&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NAS&lt;/strong&gt; runs between the UE and the core network. It covers registration or attach, authentication, mobility management and session management. The relevant specifications include &lt;a href="https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3370" rel="noopener noreferrer"&gt;3GPP TS 24.501 for 5GS NAS&lt;/a&gt; and &lt;a href="https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=1072" rel="noopener noreferrer"&gt;3GPP TS 24.301 for EPS NAS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This distinction matters during troubleshooting: an RRC failure points you toward the radio-access procedure, while a NAS reject gives information from the core-network procedure. A reliable diagnosis still requires the surrounding message sequence and radio context.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to decode an RRC or NAS message online
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://hicelltek.com/en/decoder/" rel="noopener noreferrer"&gt;HiCellTek 3GPP decoder&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Paste the hexadecimal PDU only, without the logging header.&lt;/li&gt;
&lt;li&gt;Select GSM, UMTS, LTE or NR.&lt;/li&gt;
&lt;li&gt;Select RRC or NAS and the correct logical channel when required.&lt;/li&gt;
&lt;li&gt;Choose the direction, or use automatic detection.&lt;/li&gt;
&lt;li&gt;Decode and inspect the structured result.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For RRC, selecting the correct channel is important because the same bitstream can only be interpreted against the expected ASN.1 message structure. Typical channels include DL-DCCH, UL-DCCH, DL-CCCH, UL-CCCH, BCCH-BCH, BCCH-DL-SCH and PCCH.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example: a 5G Registration Reject
&lt;/h2&gt;

&lt;p&gt;Consider this minimal plain 5GS NAS payload:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;7e004411
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the expected 5GMM context, it represents a &lt;strong&gt;Registration Reject&lt;/strong&gt; carrying &lt;strong&gt;5GMM cause 17: network failure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is useful evidence, but it should not be treated as a complete root-cause analysis by itself. Correlate it with the preceding Registration Request, authentication and security procedures, RRC events and core-network logs.&lt;/p&gt;

&lt;h2&gt;
  
  
  LTE-to-NR container decoding
&lt;/h2&gt;

&lt;p&gt;One difficult NSA case is an NR configuration embedded inside an LTE RRC message. In EN-DC, an LTE &lt;code&gt;RRCConnectionReconfiguration&lt;/code&gt; can carry &lt;code&gt;nr-SecondaryCellGroupConfig-r15&lt;/code&gt;, which contains the NR &lt;code&gt;CellGroupConfig&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For supported structures, HiCellTek detects and expands this nested LTE-to-NR container automatically. This avoids manually extracting and decoding the NR payload separately.&lt;/p&gt;

&lt;h2&gt;
  
  
  HiCellTek or Wireshark?
&lt;/h2&gt;

&lt;p&gt;They solve different parts of the workflow.&lt;/p&gt;

&lt;p&gt;Use &lt;a href="https://www.wireshark.org/docs/wsug_html_chunked/ChIOOpenSection" rel="noopener noreferrer"&gt;Wireshark&lt;/a&gt; when you have a complete PCAP or PCAPNG and need packet timing, filtering and correlation across protocols. Wireshark's &lt;a href="https://www.wireshark.org/docs/wsug_html_chunked/ChWorkDisplayFilterSection.html" rel="noopener noreferrer"&gt;display filters&lt;/a&gt; are especially useful for full-trace analysis.&lt;/p&gt;

&lt;p&gt;Use the HiCellTek decoder when you already have an isolated RRC or NAS PDU and want a fast structured decode without preparing a capture file.&lt;/p&gt;

&lt;p&gt;In practice, the two tools are complementary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Validation and scope
&lt;/h2&gt;

&lt;p&gt;The production decoding engine was checked against a bounded corpus of &lt;strong&gt;63,375 cases&lt;/strong&gt; covering 2G through 5G and supported messages through Release 18. The corpus contained 36,904 expected decodes and 26,471 expected safe rejections, with zero oracle or transport failures in that test scope.&lt;/p&gt;

&lt;p&gt;This is validation evidence, not a claim that every possible frame or vendor-specific capture format will decode. Malformed, truncated or incorrectly framed payloads may be rejected intentionally.&lt;/p&gt;

&lt;h2&gt;
  
  
  Documentation and examples
&lt;/h2&gt;

&lt;p&gt;For a compact compatibility scope, a byte-level 5GMM example, official specification links, and the privacy and validation boundaries, see the &lt;a href="https://github.com/tsebai/hicelltek-3gpp-decoder" rel="noopener noreferrer"&gt;public HiCellTek 3GPP decoder documentation&lt;/a&gt;. The repository contains documentation and examples only; the decoding engine remains proprietary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who is it for?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;RF engineers working on drive tests and optimization&lt;/li&gt;
&lt;li&gt;Protocol analysts investigating signaling procedures&lt;/li&gt;
&lt;li&gt;Operators validating SIBs, measurements and radio configuration&lt;/li&gt;
&lt;li&gt;Core-network teams reading EPS and 5GS NAS messages&lt;/li&gt;
&lt;li&gt;Telecom students learning real 3GPP structures&lt;/li&gt;
&lt;li&gt;Anyone who has a hexadecimal Layer 3 payload and needs a readable tree&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try the online decoder
&lt;/h2&gt;

&lt;p&gt;Open the &lt;a href="https://hicelltek.com/en/decoder/" rel="noopener noreferrer"&gt;free online 3GPP RRC and NAS decoder&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The free plan includes &lt;strong&gt;20 RRC decodes per day with no signup&lt;/strong&gt;. NAS decoding and advanced features are available in Pro.&lt;/p&gt;

&lt;p&gt;If you test it with a real field capture, tell me which message or workflow you would like the decoder to support next.&lt;/p&gt;

</description>
      <category>telecom</category>
      <category>networking</category>
      <category>tooling</category>
      <category>mobile</category>
    </item>
  </channel>
</rss>
