Terminal-based RF signal analysis for automotive keyfobs
Rust module: src/protocols/fiat_v1.rs
Reference: REFERENCES/ProtoPirate/protocols/fiat_v1.c
Fiat V1 is the Magneti Marelli BSI keyfob protocol (PCF7946), found on Fiat Panda, Grande Punto, and possibly other Fiat/Lancia/Alfa ~2003-2012. Uses Manchester encoding with auto-detected timing from preamble pulse averaging. Two timing variants: Type A (~260 us, e.g. Panda) and Type B (~100 us, e.g. Grande Punto). This is a different protocol from Fiat V0.
| Parameter | Default | Notes |
|---|---|---|
| Short | 260 us | Auto-detected from preamble |
| Long | 520 us | 2x detected TE |
| Delta | 80 us | Minimum 30 us |
| Preamble | 80+ pulses | 50-350 us range |
| Min bits | 80 | Max 104 bits |
Preamble pulses (50-350 us) are accumulated. After 80+ pulses, te_detected = te_sum / te_count becomes the reference TE. Type A/B boundary is at 180 us.
| Bytes | Content |
|---|---|
| 0-1 | Preamble residue (0xFFFF/0xFFFC) |
| 2-5 | Serial (32 bits) |
| 6 | Button:4 | Epoch:4 |
| 7 | Counter:5 | Scramble:2 | Fixed:1 |
| 8-12 | Encrypted payload (40 bits) |
| Code | Name |
|---|---|
| 0x7 | Lock |
| 0xB | Unlock |
| 0xD | Trunk |
Not supported (decode-only).
433.92 MHz.