{"id":17886367,"url":"https://github.com/erdebee/mertik-868-protocol","last_synced_at":"2026-01-28T22:31:44.747Z","repository":{"id":79936395,"uuid":"243774785","full_name":"erdebee/mertik-868-protocol","owner":"erdebee","description":"An effort to reverse engineer the wireless signal for Mertik Maxitrol 868MHz controlled fireplace ","archived":false,"fork":false,"pushed_at":"2020-10-02T18:20:02.000Z","size":30,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-08T16:33:11.209Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erdebee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-28T13:58:42.000Z","updated_at":"2021-01-06T17:07:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"6d910420-5ba0-4da9-977d-c69bb5dd0118","html_url":"https://github.com/erdebee/mertik-868-protocol","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erdebee%2Fmertik-868-protocol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erdebee%2Fmertik-868-protocol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erdebee%2Fmertik-868-protocol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erdebee%2Fmertik-868-protocol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erdebee","download_url":"https://codeload.github.com/erdebee/mertik-868-protocol/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246923146,"owners_count":20855535,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-28T13:05:54.784Z","updated_at":"2026-01-28T22:31:44.721Z","avatar_url":"https://github.com/erdebee.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# mertik-868-protocol\nAn effort to reverse engineer the wireless signal for Mertik Maxitrol 868MHz controlled fireplace.\nThis system is sometimes also referred to by Mertik as the \"Symax Remote Controller\"\n\nThe below research has been done with -for now- just 1 remote.\nThese are the specs of the remote:\n\nMertik Maxitrol 12 buttons \"Symax\" Remote\nEuropean version\nFreq. 868.1 Mhz\nProduct Nr. B6R-H8TV21PBD\n\n## Signal interpretation\nIn Ultimate Radio Hacker, the following settings lead to a correct interpretation of the signals:\n\nFrequency: 868.0MHz\nModulation: FSK (Actually its GFSK, but FSK works the same in URH)\nNoise 0,08\nCenter 0,25 (sometimes a little lower or higher, should be in the middle of the preamble signal freq.)\nSamples per symbol: 62 (at 2MSps / 2MHz = 31 microseconds per symbol, 32258 Baud)\nFault tolerance: 5\nBits: 1 ( Plain FSK )\n\n## Behaviour\nThere are 2 sets of 5 messages, from the remote. Somewhere in between, the fireplace sends a response, and the  remote then always replies another 5 times with some kind of ACK message.\n\n## Protocol\nAfter trimming the initial low signal (3 to 5 zero's), then the following structure is found in every message:\n\n| **Purpose**       |  **Segment** | **Length** | **Example**                                                 |\n|-------------------|--------------|------------|-------------------------------------------------------------|\n|      Preamble     |    001-279   |  278 Bits  |                      010101....1010101                      |\n| Sync / device ID? |    280-335   |   7 bytes  | 00000010000000010000000110101000000011101011000111110111000 |\n|    Message type   |    336-343   |   1 byte   |                           00010110                          |\n|       Zero?       |    344-351   |   1 byte   |                           00000000                          |\n|  Sequence Number  |    352-359   |   1 byte   |                    10110010 (or 00000000)                   |\n|    UNKNOWN/TBD #1 |    360-431   |   6 bytes  |        010001111110100100000111001101000000100011000001     |\n|        LOW        |    408-415   |   1 byte   |                           00000000                          |\n|    UNKNOWN/TBD #2 |    416-423   |   1 byte   |                           10000000                          |\n|     Participant   |    424-431   |   1 byte   |                    11111111 (or 00000000)                   |\n|     Checksum.     |    432-447   |   2 bytes  |                         CRC Checksum                        |\n|     Postamble     |    448-465   |   2 bytes  |                     01010101...01010101                     |\n\n### Preamble\nThis signal is used to help a receiver to configure its timing, and channel centering\n\n### Sync / device ID\nI assume that this part identifies the devices, both the remote and the fireplace always seem to send this same values for this block.\n\n### Message type\n| Message Type       | Decimal rep | Binary rep |\n|--------------------|-------------|------------|\n| Ack                | 9           | 00001001   |\n| Secondary fire off | 11          | 00001011   |\n| Secondary fire on  | 13          | 00001101   |\n| Fire min           | 22          | 00010110   |\n| Fire max           | 23          | 00010111   |\n| Lights on          | 24          | 00011000   |\n| Lights off         | 25          | 00011001   |\n\n### Zero's\nThis part seems to always be zero - could be a return code / error code byte, or something else?\n\n### Sequence number\nThis is a ever incremental/looping sequence number, each instance of the message, even when its repeated, has an increment of 1.\nIt is ONLY used by the remote. The fireplace always sends 0x00\n\n### Unknown / TBD #1\nThe first bytes here seem to represent the current temperature in fahrenheit that the remote is measuring.\nSome other bits and bytes here change by random sometimes per message / message type. But most is very steady. \nI think that most of this information represents some of the current absolute state. More research is necesarry.\n\n### Low\nAlways zero / unused\n\n### Unknown / TBD #2\nVery steady, only first 2 bits seem to change sometimes..\n\n### Participant\n0xff = Remote control\n0x00 = Fireplace/gas-unit\n\n### Checksum \nCRC Checksum with the following algorithm: \n\nParameters: \n| Setting      | Value       |\n|--------------|-------------|\n| Range        | 280-431     |\n| Polynomial   | 0x8005      |\n| Start/init   | 0x2e81      |\n| Refin/refout | false/false |\n| xorout       | 0x0000      |\n| residue      | 0x0000      |\n| check        | 0x879d      |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferdebee%2Fmertik-868-protocol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferdebee%2Fmertik-868-protocol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferdebee%2Fmertik-868-protocol/lists"}