Skip to main content
Concept diagram of capture encapsulation: an Ethernet frame carrying an encapsulation header with device and interface identifiers, a timestamp and a payload type, wrapped around the original bus frame, from GSAS Micro Systems India

TECMP and ASAM CMP: Capture Encapsulation Explained

GSAS Engineering · · 13 min read

TECMP and ASAM CMP are Ethernet encapsulation formats that wrap captured in-vehicle bus and sensor data with timestamps and interface IDs, so capture modules can stream to a logger and Wireshark can decode it. Wireshark ships a dissector for both: the TECMP dissector has been in stable releases since 3.4.0 and binds to its own EtherType, and the asam-cmp dissector has been in stable releases since 4.2.0, reached either by the TECMP dissector forwarding frames on that shared EtherType or by naming a UDP port under Decode As.

A capture module is bought as a box with ports and used as the first stage of a data format. It wraps every CAN, LIN, FlexRay, analog or Ethernet event it sees into an Ethernet frame with a timestamp on it, and streams those frames to a logger. If the logger, the offline toolchain and Wireshark do not agree on which wrapper and which version, you own an expensive stream of bytes that nothing reads.

Two open formats occupy this space, both with Wireshark dissectors in the tree. One is TECMP, a vendor-originated capture module protocol that became a lab convention. The other is ASAM CMP, the Capture Module Protocol published as a standard by ASAM. What is published about either is a field reference of hundreds of entries or a one-paragraph landing page, neither of which tells a buyer what the wrapper is for or how to prove the decode works. Every claim below traces to the References, and where there is no public source we say so.

What a capture encapsulation format is

The capture-module-to-data-sink model both formats share

ASAM states the model plainly: the standard defines the communication between capture modules, or probes, and data sinks, to monitor in-vehicle bus communication and sensor data, transported over Ethernet. Capturing and recording are usually both the probe’s job, and ASAM notes this is not flexible enough when many probes shall be recorded within one centralised system such as a logger as data sink. Probes capture, a sink records, and the encapsulation is the part of the chain every vendor on your bench implements identically.

Why a raw CAN, LIN or FlexRay frame cannot travel across Ethernet on its own

A CAN frame has no MAC addresses, no EtherType and no length an Ethernet receiver would understand. More to the point, it has no identity beyond its arbitration ID: nothing says which of four CAN channels it arrived on, and nothing says when. That context lives in the receiver, not the frame, and the wrapper preserves it: which bus, which module, what time, in what order.

What the wrapper adds: timestamp, interface identifier, sequence number, data type

Both carry the same four things under different names, each confirmable in the Wireshark display filter reference rather than on a datasheet.

For the vendor-originated format, the reference documents a header carrying Device ID, Counter, Version, Message Type and Data Type, plus Device Flags with sub-fields including Multi Frame, Spy and Device Overflow, and per message an Interface ID, a Timestamp, a Timestamp ns as a 64-bit integer and a Timestamp Synchronisation Status boolean. For ASAM CMP it documents a header with Version, a reserved byte, Device ID, Message Type, Stream ID and Stream Sequence Counter, and a data message header carrying Timestamp, Timestamp (ns), Interface ID, common flags for Synchronized, Overflow, Error in payload and Segmentation, Payload Type and Payload Length.

Both make explicit what a buyer cares about: whether the timestamp was synchronised, and whether the module dropped, the point our capture guide makes about capture paths generally.

Where this sits relative to your capture hardware and your logger

The encapsulation is the interface between three purchases usually made separately: the hardware that emits it, the logger that writes it or something derived from it, and the toolchain that reads what the logger wrote. The lab switch is not part of that contract, since it forwards frames without knowing what they are, and our lab switch guide covers it separately. So the format is a programme-level decision, and a different thing from instrument-level decode at the probe tip, covered in our multi-bus instrument article.

TECMP in one page

Origin: a vendor-originated format that became a lab convention

This one is a vendor-originated capture module protocol, with no public specification page or version history we could find. What it has is an in-tree Wireshark dissector, which is why it became a convention: a capture from a module emitting it opens in a tool everyone already has. That is not a criticism, it is a statement about where the information below comes from, the dissector source and the field reference.

Structure at concept level: header, interface ID, payload type, payload

The dissector reads the header in a fixed order: Device ID, Counter, Version, Message Type, Data Type, a reserved field, then flags. What follows depends on the message type, and the source enumerates control messages, device and bus status, log stream, configuration, replay data, counter events and time synchronisation events. Data-bearing messages carry the interface identifier, the timestamp fields above, and the captured bytes. The Data Type field is where the breadth lives, with the values listed in the table below, and it carries more than buses, which is why sensor correlation depends on this choice.

What the in-tree Wireshark dissector gives you, and the payload sub-dissection

The dissector registers itself on its own EtherType. No port to configure and no preference to set for the common case, which is why such a capture usually just works.

Payload decoding is delegated. The dissector registers two tables other dissectors can bind into, one keyed on the 32-bit interface identifier and one on the 16-bit data type, and for a data message it looks first for a handle registered against that interface identifier. Where nothing has claimed the payload, RS-232 ASCII goes to the text-lines dissector and everything else to the data dissector, as an undecoded byte sequence. Encapsulated Ethernet goes to the Ethernet dissector directly, which is the pattern our SOME/IP fix list describes one layer up.

Versions, and why the version matters more than the name

The header carries a Version field, and the version determines whether your chain works. The public evidence is the Wireshark merge request that changed how the newer format is detected: it states that version 1.7 specifies the first byte of the Device ID as always 0x00, while older versions allowed 0xff there for user-defined Device IDs. A byte of meaning changed between minor versions. So “our module speaks this format” is not an answer. The answer is a version number, in writing, for the firmware you will receive.

ASAM CMP in one page

The standardisation story and what ASAM publishes publicly

ASAM publishes CMP under the title Capture Module Protocol, in its Measurement and Calibration domain, with application areas listed as in-vehicle communication monitoring, data capturing and data transmission. The current version is 1.1.0, released 26 January 2026.

Two things there matter at procurement time. ASAM names the authors as a group including vehicle manufacturers, tool suppliers and engineering companies, so the format was negotiated across the industry rather than published by one party. And the page offers the specification free of charge to members, with a view-online option listed as free, so your engineers can read it before you buy hardware that emits it.

Message classes at concept level: data, status, control

The dissector enumerates five message types: Capture Data, Control, Status, Transmit Data and Vendor-defined. The ASAM page corroborates the shape, adding time synchronisation and configuration mechanisms to the same list.

The status message types include Capture Module Status, Interface Status, Configuration Status, Data Lost Status and Time Sync Lost Status. A format carrying “I lost data” and “I lost time sync” as typed messages, rather than leaving you to infer both from a gap, is one you can build an automated file-integrity check on.

The asam-cmp dissector in Wireshark and when it landed

The Wireshark 3.7.0 development release announcement of 25 August 2022 lists ASAM Capture Module Protocol (CMP) under New Protocol Support. In stable releases the field reference records the asam-cmp fields from 4.2.0, and the 4.2.0 release notes list the protocol as new, so treat 4.2.0 as the floor in your lab standard. The dissector claims no default transport: its handoff registers the handle for Decode As on the ethertype table and, with a preference, on udp.port. There is no default port, which is a common reason such a capture shows nothing on a fresh install.

What “standardised” buys you at procurement time

Three things. A specification your team can read without signing anything with a supplier. A version number that means the same to two vendors, because a third party controls it. And a named author list, which makes “we support ASAM CMP” a checkable claim in a tender. It does not buy interoperability between two products at the version you will run, which stays a written question.

TECMP versus ASAM CMP: what actually differs

Comparison table

Every cell traces to a source in the References, and a cell with no public source states the question to ask.

DimensionTECMPASAM CMPHow we know
Origin and governanceVendor-originated; no public specification page found, so ask which version the firmware emitsPublished by ASAM, version 1.1.0 of 26 January 2026, multi-party author list, free to membersASAM page
Wireshark transportOwn EtherType, decodes unconfiguredDecode As on ethertype and on udp.port with a preference, no default portDissector sources
Timestamp modelTimestamp, Timestamp ns, Synchronisation StatusTimestamp, Timestamp (ns), flags for Synchronized, Timestamp recalculated, Overflow, Error in payloadFilter reference
Payload breadthCAN, CAN FD, LIN, FlexRay, GPIO, RS-232, analog, Ethernet, 10BASE-T1S, XCP, MIPI CSI-2, SPI, I2COverlapping, not a superset: adds digital signals, GigE Vision, A2B, link state and vendor-specific; carries no XCPSources; ASAM page
In Wireshark stable since3.4.04.2.0, after a 3.7.0 development listingRelease notes
Filter-name stabilityRenamed at 4.0.0: Capture Module ID to Device ID, Channel ID to Interface IDNo header-field rename; one spelling correction, frameing_err to framing_err, at 4.4.0Filter reference

The backward-compatibility detail the dissector relies on to tell them apart

The two share an EtherType, so something has to decide which format a frame is. The merge request titled “TECMP: Make ASAM CMP detection backward compatible (Bugfix)”, merged on 29 November 2023, states the rule and its exception: version 1.7 of the older format specifies the first byte of the Device ID as always 0x00, so the newer format is detected on that byte, but older versions allowed 0xff there for user-defined Device IDs, and since those traces still exist, detection was updated to allow 0xff for the older format too.

The source implements that, gated by two preferences on the older protocol, “Detect ASAM CMP” and “Ignore Device IDs 0xff00-0xffff for ASAM CMP Detection”. Forwarding also requires that the asam-cmp handle exists in your build, so on an older Wireshark the frame decodes as the wrong format, and a filled-in tree of wrong values is worse than an empty one.

Migration: what breaks in your filters, scripts and dashboards

Not the capture. The saved work. Field names differ completely between the two dissectors, so every filter, tshark -Y expression and dashboard query is rewritten rather than adapted. The names moved inside the older dissector too: the reference records Capture Module ID for 3.4.0 to 3.6.24 and Device ID from 4.0.0, and Channel ID ending where Interface ID begins. A filter written on a 3.6 bench matches nothing on a 4.x bench and does not error in a way anyone notices, so put the Wireshark version in the lab standard.

Running both on one bench, and why that is a bad default

It is possible, and the detection logic exists so a mixed trace can be read. It is still a poor default: the value of encapsulated capture is one time base across every bus, two formats mean two timestamp models, and detection depends on a preference and a byte value a firmware update can change. Where a bench has both mid-migration, treat it as a temporary state with an end date.

Making Wireshark decode it

Step 1: confirm the dissector is present in your version and enabled

Check the version under Help then About Wireshark. The floors from the release notes are 3.4.0 for the older format and 4.2.0 for the standardised one, and nothing works around being below. Then open Analyze, Enabled Protocols and search for tecmp and asam-cmp: a protocol disabled in an inherited profile behaves like one that does not exist.

Step 2: check the transport the modules emit on

The two are not symmetrical, and this is where most decode failures start. Frames of the vendor-originated format arrive on their own EtherType, which the dissector is registered against, so they decode with no configuration. ASAM CMP frames may arrive on that same EtherType, where detection forwards them, or over UDP, where no default port is registered and nothing happens until you supply one from the module’s configuration.

Step 3: use Decode As when detection does not fire

Follow the pattern in our SOME/IP fix list, which covers the Decode As dialog in detail, including the difference between OK and Save. For a UDP-carried capture, right-click a frame, choose Decode As, set the field to UDP port, the value to your port and Current to ASAM CMP, then save. The durable equivalent lives in the protocol preferences, since the dissector registers on udp.port with one, and the handle is also registered for Decode As on the ethertype table. If frames decode as the wrong one of the two formats, do not reach for Decode As at all: check the two detection preferences under Edit, Preferences, Protocols, under TECMP rather than ASAM CMP.

Step 4: verify the inner bus payload dissects, not just the wrapper

A wrapper that decodes proves the transport and nothing about the payload. Expand a data message: inner content shown as a Data byte sequence means no dissector has claimed that interface identifier or data type, the delegation behaviour described earlier rather than a fault. If the payload is encapsulated Ethernet, expect the Ethernet dissector to have run, then treat SOME/IP inside it as a separate job, where our SOME/IP fix list is the path and our ARXML article turns bytes into signal names.

Step 5: filters and profiles worth saving for the team

Build these against the display filter reference for your version, and keep them in a named profile held in version control. A timestamp-trust filter on tecmp.payload.timestamp_synch_status or asam-cmp.msg_hdr.sync, so any measurement quoted as a number can be checked against whether the capture claimed synchronisation. An overflow filter on tecmp.dev_flags.device_overflow or asam-cmp.msg_hdr.overflow. A continuity column, tecmp.counter or asam-cmp.hdr.stream_seq_cnt, so a gap is seen rather than deduced. A per-bus filter on tecmp.payload.interface_id or asam-cmp.msg_hdr.interface_id.

What a decode failure usually means: version mismatch, not a Wireshark bug

Work the causes in order. Wireshark older than the floor for that format, where the newer format is silently decoded as the older one. A UDP capture with no port configured. A detection preference turned off, or the user-defined-range exception biting on an older trace. A protocol disabled in an inherited profile. A filter written against field names from another Wireshark generation. Only after those five is a genuine format problem likely.

What this means for your hardware shortlist

Ask which format the modules emit, and which version

Both halves matter and the second gets skipped. A format name without a version is not an answer: a byte of meaning changed between minor versions of one of these formats.

Ask what the logger writes and what your offline tools read

The logger may write the encapsulated stream as received, or convert it. Those are different products to live with, and only one lets you open the recording in Wireshark. Ask for the file format by name and confirm your scripts read it before the hardware ships.

Timestamp source and the accuracy claim behind it

Every timestamp is only as good as the clock behind it, and both formats carry a field saying whether synchronisation held. Ask what the time source is, how it synchronises and what happens to that flag when sync is lost. Where the answer involves gPTP, our gPTP article covers what has to work first, and validating time sync covers proving the accuracy claim.

Multi-bus and sensor correlation depends entirely on this choice

Both formats carry far more than CAN, and one wrapper covering CAN, LIN, FlexRay, analog, SPI, I2C, camera transport and Ethernet in a single stream makes cross-domain correlation a query rather than a project. If sensor and camera data are in scope, check the payload types you need against the module, the logger and your analysis tool.

A five-question supplier checklist

Send these in writing and keep the answers.

  1. Which format do these modules emit, at which specification version, on the firmware build we will receive?
  2. What is the transport: a dedicated EtherType, UDP or configurable, and if UDP, which default port?
  3. Which payload types does this module emit, and which of them does your analysis software decode?
  4. What is the timestamp source, how is it synchronised, and what does the module set the sync flag to when sync is lost?
  5. On overload, does the module drop silently, or set the overflow flag and mark the gap in the stream?

If the answer to the first is the standardised format, add one more: which ASAM CMP version does your logger read.

Where GSAS fits

GSAS Micro Systems is an engineering partner, and on capture encapsulation the useful conversation happens before the purchase order, not after the first capture. Which format the programme is standardising on, what your analysis scripts read, and whether the Wireshark version on your benches clears the floor. Three answers resolve most of a shortlist.

Our applications engineers work in IST, so a bench session lands inside your working day, and the teams we work with sit in Bengaluru, Pune, Chennai and Hyderabad. A format and toolchain compatibility review is a working session: we go through your capture path, check the version floors, read your team’s filters, and tell you which of the five supplier questions your quotations have not answered.

Start with the automotive Ethernet capability page, then request a scoped conversation describing your capture path and toolchain. Where the answer is that your current setup already decodes what you need, that is the answer you get.

References

Building for Automotive & Mobility?

Talk to our application engineers for personalized tool recommendations.

Frequently asked questions

What is TECMP?
It is a vendor-originated capture module protocol: an Ethernet encapsulation that carries captured in-vehicle bus and sensor data from a capture module to a data sink such as a logger or a laptop. Functionally, each frame carries a header identifying the emitting device, a counter, a format version, a message type and a data type, and then per-message metadata including an interface identifier, a timestamp in nanoseconds and a flag recording whether that timestamp was synchronised. Wireshark has shipped a dissector for it since the 3.4.0 release, so a capture from such a module opens and decodes without you writing anything.
What is ASAM CMP used for?
ASAM describes CMP, the Capture Module Protocol, as defining the communication between capture modules, or probes, and data sinks, in order to monitor in-vehicle bus communication and sensor data, transported over Ethernet. The stated problem it solves is scale: ASAM notes that capturing and recording inside each probe is not flexible enough when many probes are to be recorded within one centralised system such as a logger acting as data sink, and that separating capture from recording improves flexibility, scalability and component reuse. In practice it is what lets a multi-bus capture arrive at one recorder as one Ethernet stream with one time base.
Is ASAM CMP the same as TECMP?
No. They are different formats with different headers, different field names in Wireshark and different governance. ASAM publishes CMP as a standard with a datasheet page, a version number and a named list of authoring companies, currently version 1.1.0 released on 26 January 2026. The other format is vendor-originated and has no comparable public specification page we could find, so the version your modules emit is a question for the supplier rather than something you can look up. They do share one thing that matters operationally: the Wireshark dissectors treat them as related, because the newer format uses the same EtherType.
Does Wireshark decode TECMP and ASAM CMP out of the box?
Both have in-tree dissectors, but they are reached differently. The TECMP dissector registers itself on its own EtherType, so frames on that EtherType decode with no configuration. The asam-cmp dissector registers for Decode As on the ethertype table and on udp.port with a preference and no default port, so a capture carried over UDP needs you to name the port before anything decodes. There is also an automatic path: the TECMP dissector inspects the first byte and hands the frame to the asam-cmp dissector when that byte is not zero, provided the asam-cmp handle exists in your build and the detection preference is on.
Why does Wireshark show the TECMP header but not the CAN frame inside it?
Because the wrapper and the payload are two separate dissection steps. The TECMP dissector registers two tables that other dissectors can bind into, one keyed on the interface identifier and one keyed on the data type. When no dissector has claimed the inner payload, the dissector falls back: RS-232 ASCII goes to the text-lines dissector and everything else is added to the tree as a Data byte sequence, which is exactly the symptom of the wrapper decoding and the payload not. Encapsulated Ethernet is the exception, because that path calls the Ethernet dissector directly. If the inner payload is Ethernet carrying SOME/IP, decoding stops for the usual SOME/IP reasons instead, and our SOME/IP fix list covers those.
Which Wireshark version added ASAM CMP support?
The Wireshark 3.7.0 development release announcement of 25 August 2022 lists ASAM Capture Module Protocol (CMP) under New Protocol Support. In stable releases, the display filter reference records the asam-cmp fields as present from 4.2.0 onward, and the 4.2.0 release notes list ASAM Capture Module Protocol (CMP) under New Protocol Support. For a bench decision, treat 4.2.0 as the floor. For comparison, the same reference records the tecmp fields from 3.4.0 onward, and the 3.4.0 release notes list that dissector as new protocol support too.
Do I have to migrate from TECMP to ASAM CMP?
Nothing forces it. What forces a decision is that a capture module, a logger and an offline analysis toolchain all have to agree on one format and one version, so the format is a property of the whole chain rather than of one box. The migration cost that surprises teams is not the capture, it is the saved work: display filter field names differ between the two dissectors entirely, and they also changed inside the TECMP dissector itself, where the reference shows a Capture Module ID field documented for 3.4.0 to 3.6.24 and a Device ID field documented from 4.0.0, with the same pattern for the flags and channel fields. Any filter, tshark script or dashboard keyed on the old names stops matching.
Can capture modules from different suppliers share one encapsulation format?
That is the stated intent of the standardised one. ASAM lists the authors of the CMP standard as a group of vehicle manufacturers, tool suppliers and engineering companies, and gives interoperability between capturing and recording systems as the reason the communication between them is defined at all. What the published page does not tell you is whether two specific products interoperate at the version you will run, so that stays a written question to both suppliers. The specification is offered for download free of charge to ASAM members, with a view-online option listed as free of charge, so your engineers can read the format before you commit to hardware.

Stay in the Loop

Get monthly compliance updates, product insights, and engineering best practices delivered to your inbox.

Related Articles

Master and slave roles on a 100BASE-T1 link: the master PHY times its transmitter from a local clock, the slave recovers the clock from the received signal, with the both-master and both-slave misconfigurations that leave the link down, from GSAS Micro Systems India
Automotive Ethernet Automotive & Mobility

100BASE-T1 Link Won't Come Up: A Vendor-Neutral Checklist

A 100BASE-T1 link that will not come up is almost never a mystery, but the answers on the web are written per silicon vendor and do not transfer. This is the ordered bring-up checklist that holds regardless of which PHY, switch or SoC you have: physical layer first, then the PHY over MDIO, then the master and slave pairing, then the causes of a link that comes up and drops. The standards and tooling claims trace to IEEE 802.3 task force records, the Linux ethtool and kernel documentation or published test material. Written by the GSAS Micro Systems engineering team in India.

29 Aug 2026 · 14 min read
Five-step master and slave decision flow for a 100BASE-T1 media converter: read the ECU port role, set the converter to the complement, match the speed, check the wiring, link up, from GSAS Micro Systems India
Automotive Ethernet Automotive & Mobility

100BASE-T1 Media Converters: How to Choose One

Search for a 100BASE-T1 media converter and you get SKU pages that document their own DIP switches, plus a pile of copper-to-fibre converters that have nothing to do with single-pair automotive Ethernet. This is the selection guide neither publishes: what the box does at the PHY layer, when a converter is the wrong box, and the nine criteria that decide fitness, each written as a question to put to the supplier rather than a specification we invented. Standards claims trace to IEEE 802.3 task force records and the public OPEN Alliance specifications. Written by the GSAS Micro Systems engineering team in India.

29 Aug 2026 · 13 min read
Side by side comparison of a 10BASE-T1S multidrop mixing segment, one balanced pair with four nodes on short stubs and a termination at each end, against a point to point star of four separate links into switch ports, from GSAS Micro Systems India
Automotive Ethernet Automotive & Mobility

10BASE-T1S and PLCA: Multidrop Ethernet Explained

10BASE-T1S is the one member of the T1 single-pair Ethernet family that keeps a shared medium, and PLCA is the reconciliation sublayer that stops the nodes on it from colliding. This article covers what IEEE 802.3cg standardises, how the beacon and transmit opportunities schedule a cycle, the node count and segment length figures the OPEN Alliance interoperability test suite works to, and the failure modes that put a segment quietly back into contention while every link still looks up. Written by the GSAS Micro Systems engineering team in India for teams bringing up multidrop segments on the bench.

29 Aug 2026 · 12 min read