Skip to content

feat: add 36 subghz protocol decoder - #2675

Open
Mysteriza wants to merge 4 commits into
BruceDevices:devfrom
Mysteriza:feat/subghz-protocol-decoder
Open

feat: add 36 subghz protocol decoder#2675
Mysteriza wants to merge 4 commits into
BruceDevices:devfrom
Mysteriza:feat/subghz-protocol-decoder

Conversation

@Mysteriza

@Mysteriza Mysteriza commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

The biggest update I've made, I don't even know if it works or not until someone tests it.

Anyone who has a sub-GHz remote control, regardless of the protocol, is welcome to test it. Please.

Proposed Changes

Port 36 additional Sub-GHz protocol decoders from Flipper Zero to Bruce, expanding the callback-based decoder framework introduced in the previous commit. Adds rolling-code, TPMS, Manchester, and OOK fixed-code decoders with full decode/encode support. Integrates decoders into the RF scan pipeline and .sub serialization with rolling-code field support.

New protocols by category:

Category Protocol Type te (µs) Bits Decode Encode
Rolling Code SecPlus v1 Rolling 500 42
SecPlus v2 Rolling 250 62
Somfy Telis Rolling 640 56
Somfy Keytis Rolling 640 80
Hormann HSM Rolling 500 44
CAME Twee Rolling 500 54
CAME Atomo Rolling 600 62
Nice Flor S Rolling 500 52
IDO Rolling 450 48
Nero Radio Rolling 200 56
Nero Sketch Rolling 330 40
TPMS Schrader TPMS TPMS 120 64
Ford TPMS TPMS 52 64
Renault TPMS TPMS 48 72
Citroen TPMS TPMS 52 80
Toyota TPMS TPMS 48 72
Fixed / OOK Marantec OOK 1000 49
SMC5326 OOK 300 25
Honeywell WDB OOK 160 48
Linear Delta3 OOK 500 8
Bett OOK 340 18
Feron OOK 350 32
Roger OOK 500 28
Elplast OOK 230 18
Doitrand OOK 400 37
Magellan OOK 200 32
Dooya OOK 366 40
Legrand OOK 375 18
Chamb Code OOK 1000 10
Marantec24 OOK 800 24
Hollarm OOK 200 42
Hay21 OOK 300 21
GangQi OOK 500 34
Dickert MAHS OOK 400 36
Revers RB2 OOK 250 64
MegaCode OOK 1000 24

Protocols marked with ❌ encode are receive-only (need Raw .sub for transmit).

Types of Changes

New Feature

Verification

Build with platformio run -e reaper succeeds with 0 errors. Each decoder was ported by translating the Flipper C source line-by-line, preserving timing constants, state machines, bit decoding, and checksum logic. The existing 25 factor-based OOK protocols remain untouched and continue to match first.

Testing

Build verified only. I do not have physical devices/remotes for all protocols, so real-world testing is needed.

Linked Issues

NONE

User-Facing Change

Add 36 new Sub-GHz protocol decoders spanning rolling-code (garage gate, shutter), TPMS (tire pressure), and OOK fixed-code (home automation) protocols. Rolling-code and TPMS frames now display decoded fields (serial, counter, button, manufacture) in scan output and .sub files.

Further Comments

  • 5 rolling-code protocols from Flipper (StarLine, Kia, Scher-Khan, Alutech AT-4N, KingGates Stylo 4K) were skipped due to proprietary decryption requirements.
  • Total supported protocols: 64 (25 factor-based OOK + 39 callback-based).
  • Protocols without encode (Legrand, Chamb Code, Hay21, Revers RB2) are receive-only; transmit requires Raw .sub capture.

Extend RfProtocolDef with decode/encode callbacks for protocols that
do not fit the factor-based OOK model (Manchester, rolling code).
Create extended registry (rf_registry_ext) with FAAC SLH, PowerSmart,
and Intertechno V3 decoders. Update decode/encode dispatch to try
callback decoders after factor matching.
Port remaining Flipper-compatible decoders: rolling-code (SecPlus,
Somfy, Hormann, CAME, NiceFlor), TPMS (Schrader, Ford, Renault,
Citroen, Toyota), and simple OOK (Marantec, Dooya, Legrand, etc.).
Wire into scan pipeline and fix decoder dispatch and bounds-check
bugs.
@bmorcelli bmorcelli added the enhancement New feature or request label Jul 22, 2026
@Mysteriza Mysteriza closed this Jul 23, 2026
@Mysteriza
Mysteriza deleted the feat/subghz-protocol-decoder branch July 23, 2026 07:46
@Mysteriza
Mysteriza restored the feat/subghz-protocol-decoder branch July 23, 2026 11:10
@Mysteriza Mysteriza reopened this Jul 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants