MIPI I3C Basic v1.2 (Apr-2025) Analyzer Suite
Conforms to the MIPI I3C Basic Specification v1.2, 16 December 2024 (Public Release Edition), MIPI Board Adopted Date 17 April 2025.
What you get
The MIPI I3C Analyzer Suite is a complete protocol-decoding toolkit for the MIPI I3C Basic v1.2 two-wire bus, the higher-throughput, lower-power successor to I2C now appearing on STM32, NXP, Qualcomm, MediaTek, and most IMU/pressure/temperature sensor silicon shipping in 2026 and beyond. The decoder is implemented directly against the MIPI I3C Basic Specification v1.2 (16-Dec-2024 public release) as the primary source of truth — every CCC, every word format, every parity polynomial cross-checked against the spec, with section numbers documented inline in the source. Two tools sharing one carefully-maintained protocol implementation:
Saleae Logic 2 plugin — Drop-in custom low-level analyzer for Logic 2. Decodes I3C bus traffic in real time on the timeline. ENTDAA enrollments show full PID + BCR + DCR + assigned-DA breakdowns. Common Command Codes appear by name (0x8D GETPID, 0x07 ENTDAA, etc.) instead of opaque hex — and every payload byte is annotated with its meaning (GETPID response bytes broken into MID, Part ID, and Instance fields; ENEC/DISEC event-mask bits named; RSTACT action level decoded; GETCAPS HDR-mode capability flags listed). IBI requests surface with the source target's dynamic address. Hot Joins, mastership requests, HDR-mode boundaries — all annotated visually on your captured trace.
Python CLI decoder — Standalone command-line tool. Takes a CSV signal dump (Saleae's Export Raw Data → CSV, or any compatible 2-/3-column format) and produces transaction-by-transaction text decode of every I3C operation with the same per-byte payload enrichment as the Logic 2 plugin. Pure Python 3.10+, zero dependencies. Runs offline — no Logic 2 needed. Perfect for headless servers, CI test pipelines, scripted analysis, and reproducible decode artefacts. Built-in glitch filter handles 1 GS/s overcaptures cleanly; ISO 8601 timestamps from Saleae exports parse natively, no CSV editing required.
What's currently decoded (v0.9)
• START / Repeated START / STOP framing
• 7-bit addresses with R/W and ACK/NACK
• Open-drain vs push-pull bus phase tracking
• Broadcast address 0x7E (the pivot to push-pull mode)
• Full Common Command Code lookup — every named CCC from MIPI v1.2 Tables 15 + 16 (~75 codes)
• ENTDAA enrollment payload — PID bytes 0-5 with full structure expansion (MID[14:7], MID[6:0] + ID-Type, Part ID high + low, Instance ID + Vendor), BCR bit-field decode, DCR device-class lookup, assigned DA with parity validation AND reserved-address detection per Table 7
• Per-byte CCC payload semantic enrichment — every response byte annotated by meaning, not just value:
GETPID (CCC 0x8D): 6-byte PID expanded into MID / ID-Type / Part ID / Instance / Vendor fields
ENEC / DISEC (CCC 0x80/0x81): event-mask bits decoded (HJ-EN, MR-EN, IBI-EN, reserved-bit warnings)
RSTACT (CCC 0x2A): action level decoded (no-op / peripheral reset / target reset / debug-network reset)
GETCAPS (CCC 0x95): bytes 1-3 HDR-DDR / HDR-TS / HDR-BT capability flags named
SETMWL / SETMRL / GETMWL / GETMRL: big-endian 16-bit lengths labelled
SETDASA / SETNEWDA: assigned dynamic address shown alongside raw byte
• Multi-byte CCC payloads — GETPID (6 bytes), GETSTATUS (2 bytes: Activity Mode + Protocol Error + Pending Interrupt bit-field decode per §5.1.9.3.5), GETMXDS (MaxWr/MaxRd speed-code decode per Table 19), GETCAPS (HDR-mode capability decode per Table 20), GETBCR (full BCR field breakdown), GETDCR (named DCR lookup)
• T-bit parity validation in push-pull mode
• Address parity validation on assigned DA bytes
• Reserved-address validation per MIPI I3C v1.2 Table 7
• IBI (In-Band Interrupt) request detection with source DA
• Hot Join request detection (reserved address 0x02)
• Mastership Request detection (GETACCMST + 1-byte response)
• Multi-controller support — DEFTGTS (Table 24 target list decode), GETACCCR handshake tracking
• HDR-mode entry recognition (ENTHDR0..7), HDR-Restart Pattern detection, HDR-Exit Pattern detection
• Full HDR-DDR signaling decode (per MIPI I3C v1.2 §6.2): 20-bit DDR Word reader, preamble classification (Command / Data / CRC), R/W + 7-bit cmd code + 7-bit DA decode for Command Words, 16-bit data + parity for Data Words, CRC-5 validation, PA1/PA0 parity validation per Table 80
• Full HDR-BT (Bulk Transport) bit-level decode — Single-Lane, Dual-Lane, and Quad-Lane modes; chunk headers, data payloads, and CRC-32 validation
• Configurable input glitch filter (default 50 ns) — eliminates spurious START/STOP from 1 GS/s overcaptures
• ISO 8601 timestamp parsing — Saleae's default CSV export format works directly, no preprocessing
High-Level Analyzers included in the bundle
The suite ships with 22 dual-mode HLAs (Saleae Logic 2 plugin + standalone Python CLI). Each one consumes the LLA's frame stream and emits transaction-level or device-register-level summaries. No per-HLA upcharges.
Meta HLAs (work with any I3C bus):
• Transaction Summarizer — collapses every START..STOP into one human-readable line: "Write 0xAA 0xBB 0xCC 0xDD to 0x32", "GETPID @ 0x32 → 02 08 13 81 00 00", "ENTDAA: 1 target enrolled — DA=0x32", "IBI from DA 0x32". Configurable filter: All / Writes / Reads / CCC / ENTDAA / IBI+HotJoin / Errors only.
• Hot-Join Tracker — pairs every Hot-Join request with the subsequent ENTDAA enrollment, surfacing the complete join flow as a single event.
• Error-Recovery Tracker — monitors the bus for transactions that violate the spec error-recovery rules (§4.10.1 Table 4-42) and flags incomplete recovery flows.
Device-specific HLAs (decode register reads/writes by name + convert raw counts to physical units, built strictly against the chip vendor's datasheet):
Accelerometers
• STMicro IIS2DULPX — 3-axis accelerometer / inclinometer, ±2/4/8/16g
• Bosch BMA580 — 3-axis accelerometer, ±2/4/8/16g
• TDK InvenSense IIM-42352 — SmartIndustrial 3-axis accelerometer, banked-register architecture
6-axis IMUs
• Bosch BMI323 — 6-axis IMU (accel + gyro), the most common I3C IMU on consumer wearables and drones
• TDK InvenSense ICM-42688-P — 6-axis IMU, de-facto drone / robotics IMU
• STMicro LSM6DSV16X — 6-axis IMU with embedded machine-learning core
Magnetometers
• MEMSIC MMC56xx family (MMC5633NJL + MMC5603NJ) — 3-axis AMR magnetometer
Pressure / barometric
• Bosch BMP585 — barometric pressure + temperature
• Infineon DPS310 — high-precision barometric
• TE Connectivity MS5611 — high-resolution barometric altimeter with PROM calibration decode
Humidity / temperature
• Sensirion SHT4x family (SHT40 / 41 / 45) — industry-standard humidity sensor
Gas / air quality
• Bosch BME688 — 4-in-1 IAQ (gas VOC + temperature + humidity + pressure)
• Sensirion SCD41 — true NDIR CO2 sensor
Time-of-flight ranging
• STMicro VL53L8CX — multi-zone ToF ranging
• STMicro VL53L1X — single-zone long-range ToF rangefinder (up to 4 m)
• ams-OSRAM TMF8828 — multi-zone ToF
Power management
• Analog Devices MAX17048 / MAX17049 — 1S/2S Li+ fuel gauge
Health / biometrics
• Analog Devices MAX30102 — optical heart-rate / SpO2 sensor
Memory / server
• JEDEC SPD5118 family — DDR5 SPD EEPROM with hub + temperature sensor
Sensor fusion
• Bosch BHI360 — sensor-fusion smart sensor with embedded fusion processor
What's in the box
• Pre-built Saleae LLA binaries for Windows x86_64, Windows arm64, macOS x86_64 (Intel), macOS arm64 (Apple Silicon), Linux x86_64, Linux arm64
• Python CLI decoder (single file, standard library only)
• 22 HLAs: Transaction Summarizer, Hot-Join Tracker, Error-Recovery Tracker, IIS2DULPX, BMA580, IIM-42352, BMI323, ICM-42688-P, LSM6DSV16X, MMC56xx, BMP585, DPS310, MS5611, SHT4x, BME688, SCD41, VL53L8CX, VL53L1X, TMF8828, MAX17048/9, MAX30102, SPD5118 family, BHI360
• Detailed INSTALL.md (per-platform install + Logic 2 setup walkthrough)
• HLA_REFERENCE.md (frame schema + emit pattern for every HLA)
• License — see LICENSE in the bundle
Questions?
Use the contact form at angrypixieelectronics.com.
Angry Pixie Electronics, LLC — angrypixieelectronics.com
Conforms to the MIPI I3C Basic Specification v1.2, 16 December 2024 (Public Release Edition), MIPI Board Adopted Date 17 April 2025.
What you get
The MIPI I3C Analyzer Suite is a complete protocol-decoding toolkit for the MIPI I3C Basic v1.2 two-wire bus, the higher-throughput, lower-power successor to I2C now appearing on STM32, NXP, Qualcomm, MediaTek, and most IMU/pressure/temperature sensor silicon shipping in 2026 and beyond. The decoder is implemented directly against the MIPI I3C Basic Specification v1.2 (16-Dec-2024 public release) as the primary source of truth — every CCC, every word format, every parity polynomial cross-checked against the spec, with section numbers documented inline in the source. Two tools sharing one carefully-maintained protocol implementation:
Saleae Logic 2 plugin — Drop-in custom low-level analyzer for Logic 2. Decodes I3C bus traffic in real time on the timeline. ENTDAA enrollments show full PID + BCR + DCR + assigned-DA breakdowns. Common Command Codes appear by name (0x8D GETPID, 0x07 ENTDAA, etc.) instead of opaque hex — and every payload byte is annotated with its meaning (GETPID response bytes broken into MID, Part ID, and Instance fields; ENEC/DISEC event-mask bits named; RSTACT action level decoded; GETCAPS HDR-mode capability flags listed). IBI requests surface with the source target's dynamic address. Hot Joins, mastership requests, HDR-mode boundaries — all annotated visually on your captured trace.
Python CLI decoder — Standalone command-line tool. Takes a CSV signal dump (Saleae's Export Raw Data → CSV, or any compatible 2-/3-column format) and produces transaction-by-transaction text decode of every I3C operation with the same per-byte payload enrichment as the Logic 2 plugin. Pure Python 3.10+, zero dependencies. Runs offline — no Logic 2 needed. Perfect for headless servers, CI test pipelines, scripted analysis, and reproducible decode artefacts. Built-in glitch filter handles 1 GS/s overcaptures cleanly; ISO 8601 timestamps from Saleae exports parse natively, no CSV editing required.
What's currently decoded (v0.9)
• START / Repeated START / STOP framing
• 7-bit addresses with R/W and ACK/NACK
• Open-drain vs push-pull bus phase tracking
• Broadcast address 0x7E (the pivot to push-pull mode)
• Full Common Command Code lookup — every named CCC from MIPI v1.2 Tables 15 + 16 (~75 codes)
• ENTDAA enrollment payload — PID bytes 0-5 with full structure expansion (MID[14:7], MID[6:0] + ID-Type, Part ID high + low, Instance ID + Vendor), BCR bit-field decode, DCR device-class lookup, assigned DA with parity validation AND reserved-address detection per Table 7
• Per-byte CCC payload semantic enrichment — every response byte annotated by meaning, not just value:
GETPID (CCC 0x8D): 6-byte PID expanded into MID / ID-Type / Part ID / Instance / Vendor fields
ENEC / DISEC (CCC 0x80/0x81): event-mask bits decoded (HJ-EN, MR-EN, IBI-EN, reserved-bit warnings)
RSTACT (CCC 0x2A): action level decoded (no-op / peripheral reset / target reset / debug-network reset)
GETCAPS (CCC 0x95): bytes 1-3 HDR-DDR / HDR-TS / HDR-BT capability flags named
SETMWL / SETMRL / GETMWL / GETMRL: big-endian 16-bit lengths labelled
SETDASA / SETNEWDA: assigned dynamic address shown alongside raw byte
• Multi-byte CCC payloads — GETPID (6 bytes), GETSTATUS (2 bytes: Activity Mode + Protocol Error + Pending Interrupt bit-field decode per §5.1.9.3.5), GETMXDS (MaxWr/MaxRd speed-code decode per Table 19), GETCAPS (HDR-mode capability decode per Table 20), GETBCR (full BCR field breakdown), GETDCR (named DCR lookup)
• T-bit parity validation in push-pull mode
• Address parity validation on assigned DA bytes
• Reserved-address validation per MIPI I3C v1.2 Table 7
• IBI (In-Band Interrupt) request detection with source DA
• Hot Join request detection (reserved address 0x02)
• Mastership Request detection (GETACCMST + 1-byte response)
• Multi-controller support — DEFTGTS (Table 24 target list decode), GETACCCR handshake tracking
• HDR-mode entry recognition (ENTHDR0..7), HDR-Restart Pattern detection, HDR-Exit Pattern detection
• Full HDR-DDR signaling decode (per MIPI I3C v1.2 §6.2): 20-bit DDR Word reader, preamble classification (Command / Data / CRC), R/W + 7-bit cmd code + 7-bit DA decode for Command Words, 16-bit data + parity for Data Words, CRC-5 validation, PA1/PA0 parity validation per Table 80
• Full HDR-BT (Bulk Transport) bit-level decode — Single-Lane, Dual-Lane, and Quad-Lane modes; chunk headers, data payloads, and CRC-32 validation
• Configurable input glitch filter (default 50 ns) — eliminates spurious START/STOP from 1 GS/s overcaptures
• ISO 8601 timestamp parsing — Saleae's default CSV export format works directly, no preprocessing
High-Level Analyzers included in the bundle
The suite ships with 22 dual-mode HLAs (Saleae Logic 2 plugin + standalone Python CLI). Each one consumes the LLA's frame stream and emits transaction-level or device-register-level summaries. No per-HLA upcharges.
Meta HLAs (work with any I3C bus):
• Transaction Summarizer — collapses every START..STOP into one human-readable line: "Write 0xAA 0xBB 0xCC 0xDD to 0x32", "GETPID @ 0x32 → 02 08 13 81 00 00", "ENTDAA: 1 target enrolled — DA=0x32", "IBI from DA 0x32". Configurable filter: All / Writes / Reads / CCC / ENTDAA / IBI+HotJoin / Errors only.
• Hot-Join Tracker — pairs every Hot-Join request with the subsequent ENTDAA enrollment, surfacing the complete join flow as a single event.
• Error-Recovery Tracker — monitors the bus for transactions that violate the spec error-recovery rules (§4.10.1 Table 4-42) and flags incomplete recovery flows.
Device-specific HLAs (decode register reads/writes by name + convert raw counts to physical units, built strictly against the chip vendor's datasheet):
Accelerometers
• STMicro IIS2DULPX — 3-axis accelerometer / inclinometer, ±2/4/8/16g
• Bosch BMA580 — 3-axis accelerometer, ±2/4/8/16g
• TDK InvenSense IIM-42352 — SmartIndustrial 3-axis accelerometer, banked-register architecture
6-axis IMUs
• Bosch BMI323 — 6-axis IMU (accel + gyro), the most common I3C IMU on consumer wearables and drones
• TDK InvenSense ICM-42688-P — 6-axis IMU, de-facto drone / robotics IMU
• STMicro LSM6DSV16X — 6-axis IMU with embedded machine-learning core
Magnetometers
• MEMSIC MMC56xx family (MMC5633NJL + MMC5603NJ) — 3-axis AMR magnetometer
Pressure / barometric
• Bosch BMP585 — barometric pressure + temperature
• Infineon DPS310 — high-precision barometric
• TE Connectivity MS5611 — high-resolution barometric altimeter with PROM calibration decode
Humidity / temperature
• Sensirion SHT4x family (SHT40 / 41 / 45) — industry-standard humidity sensor
Gas / air quality
• Bosch BME688 — 4-in-1 IAQ (gas VOC + temperature + humidity + pressure)
• Sensirion SCD41 — true NDIR CO2 sensor
Time-of-flight ranging
• STMicro VL53L8CX — multi-zone ToF ranging
• STMicro VL53L1X — single-zone long-range ToF rangefinder (up to 4 m)
• ams-OSRAM TMF8828 — multi-zone ToF
Power management
• Analog Devices MAX17048 / MAX17049 — 1S/2S Li+ fuel gauge
Health / biometrics
• Analog Devices MAX30102 — optical heart-rate / SpO2 sensor
Memory / server
• JEDEC SPD5118 family — DDR5 SPD EEPROM with hub + temperature sensor
Sensor fusion
• Bosch BHI360 — sensor-fusion smart sensor with embedded fusion processor
What's in the box
• Pre-built Saleae LLA binaries for Windows x86_64, Windows arm64, macOS x86_64 (Intel), macOS arm64 (Apple Silicon), Linux x86_64, Linux arm64
• Python CLI decoder (single file, standard library only)
• 22 HLAs: Transaction Summarizer, Hot-Join Tracker, Error-Recovery Tracker, IIS2DULPX, BMA580, IIM-42352, BMI323, ICM-42688-P, LSM6DSV16X, MMC56xx, BMP585, DPS310, MS5611, SHT4x, BME688, SCD41, VL53L8CX, VL53L1X, TMF8828, MAX17048/9, MAX30102, SPD5118 family, BHI360
• Detailed INSTALL.md (per-platform install + Logic 2 setup walkthrough)
• HLA_REFERENCE.md (frame schema + emit pattern for every HLA)
• License — see LICENSE in the bundle
Questions?
Use the contact form at angrypixieelectronics.com.
Angry Pixie Electronics, LLC — angrypixieelectronics.com