Terminal-based RF signal analysis for automotive keyfobs
Rust module: src/protocols/porsche_touareg.rs
Reference: REFERENCES/ProtoPirate/protocols/porsche_touareg.c
Porsche Touareg uses PWM encoding with very long timing (1680/3370 us). 64-bit frame with a sync preamble (at least 15 sync pulses at 3370 us). Counter is recovered via brute-force using a 24-bit rotation cipher. Originally designed for the Porsche Cayenne.
| Parameter | Value | Notes |
|---|---|---|
| Short | 1680 us | +/-500 us |
| Long | 3370 us | +/-500 us |
| Sync | 3370 us | Same as long |
| Gap | 5930 us | +/-500 us |
| Sync min | 15 pulses | |
| Min bits | 64 |
| Pair (LOW, HIGH) | Bit |
|---|---|
| Short LOW + Long HIGH | 0 |
| Long LOW + Short HIGH | 1 |
| Byte | Content |
|---|---|
| pkt[0] | (button « 4) | (frame_type & 0x07) |
| pkt[1] | serial bits [23:16] |
| pkt[2] | serial bits [15:8] |
| pkt[3] | serial bits [7:0] |
| pkt[4..7] | Encrypted counter/rolling code |
Counter is not in plaintext. The decoder tries counter values 1-256, calling compute_frame() for each, and checks if computed bytes [4..7] match received bytes [4..7].
Not supported (decode-only).
433.92 MHz, 868.35 MHz.