HiCellTek HiCellTek
Back to blog
QMDLQualcomm DIAGDrive TestRRC

QMDL: Qualcomm Diagnostic Log Format Explained β€” How to Capture and Analyze Field Data

QMDL is the native binary format of the Qualcomm DIAG protocol. Learn what packet IDs to capture, how to configure the log mask, parse DM frames, and extract RRC/NAS evidence from field drives.

Takwa Sebai
Takwa Sebai
Founder & CEO, HiCellTek
March 27, 2026 Β· 9 min read

You just finished a 6-hour drive test across three sites. The RRC log shows a handover failure on Site 2 at exactly 14:37. Your post-processing team is in Paris, you’re in Lyon, and they need the raw protocol data β€” now. You export the QMDL file, send it, and in 10 minutes they’ve decoded the handover sequence frame by frame. QMDL is the universal language of Qualcomm field data.

What is QMDL?

QMDL stands for Qualcomm Modem Diagnostic Log. It is the native binary format output by the Qualcomm DIAG protocol β€” a diagnostic interface built into every Qualcomm Snapdragon modem. When you capture a QMDL file, you are recording a raw binary stream from the Qualcomm diagnostic port, containing timestamped log packets for every active protocol layer: physical layer measurements, RRC signaling, NAS procedures, PDCP statistics, and more.

Two variants exist in the field. The standard .qmdl format is by far the most common β€” it is what every rooted Android device with a Snapdragon chipset produces when the DIAG port is opened. The extended .qmdl2 format carries additional metadata including absolute UTC timestamps, and is found on newer Snapdragon 8 Gen 2 and later platforms. For post-processing and sharing with operator teams, .qmdl remains the dominant choice because of its wide parser ecosystem and compatibility with QCAT (Qualcomm Code Activation Tool).

At the binary level, each record in a QMDL file is a DM (Diagnostic Monitor) frame. Every DM frame has a fixed-structure header carrying the log packet code, the frame length, and a QTimerTick timestamp, followed by a payload whose first two bytes are the log packet ID. That packet ID is the key to understanding what the frame contains.

The format is not an open standard. It originates from Qualcomm’s internal diagnostic toolchain and requires either the official QCAT software or a third-party parser that has reverse-engineered the framing and packet structure.

Key QMDL Log Packet IDs

Packet ID (hex)ContentProtocol
0x1568LTE RRC OTA messageRRC 36.331
0x5226NR RRC OTA messageRRC 38.331
0x713ALTE NAS OTA messageNAS 24.301
0x70305G NAS OTA messageNAS 24.501
0x184BLTE ML1 serving cell meas.PHY Layer 1
0x2584NR ML1 serving cell infoPHY Layer 1
0x1472LTE PDCP DL statsPDCP Layer 2
QMDL Log Packet Types β€” Key IDs
πŸ“¨0x1568LTE RRC OTA
πŸ“¨0x5226NR RRC OTA
πŸ“¨0x713ALTE NAS OTA
πŸ“Š0x184BLTE ML1 Meas
πŸ“Š0x2584NR ML1 Info
πŸ“Š0x1472LTE PDCP Stats

QMDL vs QMDL2 vs HLOG

Not all log formats are equal. Understanding the differences between the three most common formats encountered in field work helps you choose the right capture strategy.

FeatureQMDLQMDL2HLOG
FormatBinary DM framesExtended DM binaryProprietary encrypted
TimestampRelative (QTimerTick)Absolute UTCAbsolute UTC
EncryptionNoneNoneAEAD encrypted
GPS embeddingNoOptionalYes
Supported chipsetsQualcomm (all)Snapdragon 8 Gen 2+HiCellTek devices
Ecosystem compatibilityWide (QCAT, parsers)LimitedHiCellTek companion
File sizeLarge (raw)LargeCompressed

The standard QMDL format wins for interoperability. Its relative QTimerTick timestamps require a conversion step (described in the parsing section below), but its parser ecosystem is wide enough that any major telecom vendor post-processing team can open and decode it without proprietary tooling. QMDL2 extends this with optional GPS embedding and absolute UTC time, but parser support outside QCAT is limited. HLOG is the encrypted, compressed format used by HiCellTek devices β€” ideal for secure field-to-office transfers, but requires the HiCellTek companion tool for decoding.

For operator trouble ticket submissions and multi-vendor post-processing, QMDL is the format that travels best.

How to Capture QMDL in the Field

Capturing QMDL requires an Android smartphone with a Qualcomm Snapdragon chipset, root access via Magisk, and the DIAG interface enabled on the device. Most field-grade devices with Qualcomm modems expose the DIAG port at /dev/diag.

QMDL Capture Workflow β€” Field Steps
1. Verify Qualcomm DIAG port is active: check /dev/diag or /dev/ttyS0 on rooted device
↓
2. Configure log mask: enable required packet IDs (RRC, NAS, ML1, PDCP) via DM command 0x7C
↓
3. Start capture: stream DM frames to file. A typical 1-hour drive generates 200–800 MB of QMDL data
↓
4. Export and parse: decode using QCAT or open-source parsers (libdiag, pyqmdl). Extract RRC/NAS/KPI logs

The log mask is the single most important configuration parameter in any QMDL capture. The mask is sent to the modem via DM command 0x7C and tells the chipset exactly which packet IDs to include in the output stream. An incorrectly configured mask is the most common reason for arriving at post-processing with a QMDL file that contains no RRC messages β€” a mistake that wastes an entire day of field data. Before starting any long drive, always verify that the mask explicitly enables 0x1568 (LTE RRC), 0x5226 (NR RRC), 0x713A (LTE NAS), and 0x7030 (5G NAS) at minimum.

A typical 1-hour drive at full mask generates between 200 MB and 800 MB of raw QMDL data, depending on network activity, cell density, and the number of enabled packet IDs. For optimization campaigns, plan for 5 to 20 GB of QMDL per device per day.

Parsing QMDL β€” From Binary to Decoded Protocol

The raw QMDL binary cannot be read directly. Parsing requires four sequential steps that convert the binary stream into human-readable protocol messages.

Step 1 β€” DM frame extraction: the binary stream is framed using HDLC-like encoding, where 0x7E is the framing byte that marks the beginning and end of each DM frame. The parser must walk the stream, identify boundaries, and extract individual frames. Escaped bytes (0x7D sequences) must be unescaped before processing.

Step 2 β€” Packet ID lookup: once a frame is extracted, the first two bytes of the payload identify the log packet type. A lookup against a known packet ID table determines whether the frame contains an RRC OTA message, a NAS PDU, a PHY measurement record, or another log type.

Step 3 β€” ASN.1 decoding: for RRC and NAS frames (0x1568, 0x5226, 0x713A, 0x7030), the payload after the packet header contains an ASN.1 PER-encoded 3GPP message. Decoding this requires a spec-version-aware ASN.1 decoder compiled against the correct 3GPP release (36.331 for LTE RRC, 38.331 for NR RRC, 24.301 for LTE NAS, 24.501 for 5G NAS). The decoded output is identical to what professional field tools display β€” because the underlying protocol data is the same.

Step 4 β€” Timestamp conversion: DM frames carry a 32-bit QTimerTick value. Converting this to a wall-clock time requires knowing the chipset’s timer frequency, which is 19.2 MHz on most Snapdragon platforms. The formula is: wall_time = reference_UTC + (QTimerTick / 19200000). The reference UTC anchor is typically extracted from a GPS synchronization event or an NTP timestamp embedded in the capture session.

For teams who need to decode individual RRC or NAS messages extracted from QMDL without running a full parser stack, the online L3 protocol decoder for RRC and NAS messages supports direct paste of hex-encoded protocol payloads and produces structured ASN.1 output.

For engineers who prefer field-native real-time decoding without QCAT, the Android drive test tool with native DIAG access captures and decodes QMDL streams on-device during the drive, eliminating the post-processing round-trip for rapid fault identification.

QMDL in the Field Workflow β€” Practical Tips

Knowing the format is one thing. Using it efficiently in a real optimization campaign requires a set of operational practices that experienced field engineers develop over years of drive work.

QMDL Use Cases: Field vs Post-Processing

Field (Real-time)

  • Trigger-based capture (handover events)
  • Selective log mask (RRC + NAS only)
  • Size-limited files (30-min rotation)
  • Immediate RRC anomaly check

Post-Processing (Office)

  • Full log mask (all packet IDs)
  • GPS-correlated QMDL replay
  • KPI trend analysis (ML1 + PDCP)
  • Vendor ticket evidence packaging

File naming: always include the date, site ID, and drive segment in the file name β€” for example 2026-03-27_SITE-A_SEG1.qmdl. This makes correlation with GPS tracks and KPI exports trivial and avoids the file disambiguation problem that plagues post-processing teams receiving batches of captures from multiple engineers.

Log rotation: for drives longer than 30 minutes, configure your capture tool to rotate files every 30 minutes. Files exceeding 2 GB cause parsing failures in several common tools and slow down the initial scan step. Smaller files also allow parallel processing of different drive segments.

GPS correlation: QMDL files contain no GPS data by default. The standard approach is to capture a GPX track in parallel and correlate it with the QMDL timestamps after applying the QTimerTick-to-UTC conversion. Some Android drive test tools handle this correlation automatically and embed the GPS in a sidecar file. QMDL2 supports optional GPS embedding, which simplifies this step on supported chipsets.

Evidence for vendor tickets: per 3GPP TS 37.320 (UE test mode), QMDL logs with RRC message timestamps are accepted as primary evidence in vendor trouble ticket escalations. When preparing a ticket, extract the relevant 0x1568 or 0x5226 frames around the failure event, convert them to human-readable ASN.1, and attach both the raw QMDL segment and the decoded output. This combination eliminates ambiguity about what the UE actually sent and received.

Privacy and security: QMDL files contain the device IMSI and IMEI in NAS Attach and Registration Request packets. Before sharing any QMDL file outside your organization β€” with vendors, operators, or partners β€” strip or anonymize the NAS payloads containing these identifiers. Failure to do so constitutes a personal data leak under GDPR Article 4(1), as IMSI is a directly linkable subscriber identifier.

Storage planning: a typical LTE/NR optimization campaign generates 5 to 20 GB of QMDL per device per day. For a team of four engineers running a two-week campaign, this translates to 280 to 1,120 GB of raw data. Plan your field storage, transfer, and archival infrastructure accordingly before the campaign starts β€” not after.

Conclusion

QMDL is not just a file format β€” it is the most complete record of what happened between a device and a network at every protocol layer. Knowing how to capture it efficiently, parse it correctly, and extract the right packet IDs separates an engineer who says β€œI saw a handover failure” from one who can prove it with a timestamp-accurate RRC sequence.

The four packet IDs that cover 90% of field troubleshooting scenarios are 0x1568, 0x5226, 0x713A, and 0x7030. Master the log mask that enables them, understand the HDLC-like framing that structures the binary stream, and apply the QTimerTick conversion for accurate time correlation β€” and QMDL becomes a diagnostic instrument as precise as the network specification itself.

Question for the comments: what has been the most complex issue you resolved with QMDL analysis β€” and what packet ID was the key?

Share: LinkedIn X
Takwa Sebai
Takwa Sebai

Founder of HiCellTek. 15+ years in telecom, operator side, vendor side, field side. Building the field tool RF engineers deserve.

Ready for the field?

Request a personalized demo of HiCellTek β€” 2G/3G/4G/5G network diagnostics on Android.

Try our free telecom tools

TAC Lookup, IMEI Calculator, EARFCN Calculator, used by telecom engineers worldwide.

Try Free Tools

Get telecom engineering insights. No spam, ever.

Unsubscribe in one click. Data processed in the EU.