Terminal-based RF signal analysis for automotive keyfobs
Rust module: src/protocols/mazda_v0.rs
Reference: REFERENCES/ProtoPirate/protocols/mazda_v0.c
Mazda V0 uses a custom pair-based encoding (not standard Manchester). The level parameter is ignored; the decoder processes raw duration pairs. Preamble: 13+ short/short pairs followed by a short+long transition into data. Data bits are collected using a prev_state tracker with inverted polarity, then XOR-deobfuscated, checksum-validated, and parsed.
| Parameter | Value | Notes |
|---|---|---|
| Short | 250 us | +/-100 us |
| Long | 500 us | +/-100 us |
| Min bits | 64 | |
| Completion | 80-105 bits |
Raw data collects into a 14-byte buffer. First byte is discarded (sync); bytes [1..9] form the 8-byte data frame.
After XOR deobfuscation:
| Pair (te_last, duration) | Action |
|---|---|
| Long + Short | Collect bit(0), bit(1), prev_state=1 |
| Short + Long | Collect bit(1), prev_state=0 |
| Short + Short | Collect bit(prev_state) |
| Long + Long | Collect bit(0), bit(1), prev_state=0 |
Bit collection uses inverted polarity: state_bit=0 stores a 1.
| Code | Name |
|---|---|
| 0x10 | Lock |
| 0x20 | Unlock |
| 0x40 | Trunk |
Not supported (decode-only).
433.92 MHz.