{"id":20041515,"url":"https://github.com/kcxt/polyend_tracker_fw_decoding","last_synced_at":"2025-05-05T08:32:19.182Z","repository":{"id":110397868,"uuid":"481400718","full_name":"kcxt/polyend_tracker_fw_decoding","owner":"kcxt","description":"Decoding/decompiling the polyend tracker FW","archived":false,"fork":false,"pushed_at":"2022-04-13T23:46:39.000Z","size":4,"stargazers_count":8,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-08T10:40:43.070Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kcxt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-04-13T23:12:48.000Z","updated_at":"2024-03-05T22:28:05.000Z","dependencies_parsed_at":"2023-05-06T14:31:19.951Z","dependency_job_id":null,"html_url":"https://github.com/kcxt/polyend_tracker_fw_decoding","commit_stats":null,"previous_names":["kcxt/polyend_tracker_fw_decoding"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kcxt%2Fpolyend_tracker_fw_decoding","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kcxt%2Fpolyend_tracker_fw_decoding/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kcxt%2Fpolyend_tracker_fw_decoding/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kcxt%2Fpolyend_tracker_fw_decoding/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kcxt","download_url":"https://codeload.github.com/kcxt/polyend_tracker_fw_decoding/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252466812,"owners_count":21752442,"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-11-13T10:46:49.886Z","updated_at":"2025-05-05T08:32:19.176Z","avatar_url":"https://github.com/kcxt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Polyend tracker FW decoding\n\n## Hardware specs\n\nThe tracker uses a MK66FX1M0VLQ18 180 MHz ARM Cortex-M4F Microcontroller [Technical datasheet](https://www.nxp.com/docs/en/data-sheet/K66P144M180SF5V2.pdf).\n\nThe MK66FX1M0VLQ18 has 1.25MB of internal flash.\n\n## File format\n\n**The file format is actually the Intel HEX format: https://en.wikipedia.org/wiki/Intel_HEX**\n\nTracker firmware file format.\n\nSeveral types of command?, predominantly \"data\" lines and \"address\" lines.\n\n### Data command\n\n22 characters\n\n```\n    :               Colon\n0:  10              Constant (command type?)\n1:  XXXX            Offset to patch\n3:  00              Constant (reserved??)\n4:  \u003c32 digits\u003e     16 data bytes\n20: XX              Checksum8 2s complement of the whole line\n```\n\nThere are usually 4096 (0x1000) data lines before each header line.\n\n```\n                1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16  CS\n-------------------------------------------------------------------\n:10  0A00  00   70 47 00 BF 00 80 00 40 DC FC FF 1F 68 FD FF 1F  37\n:10  0A10  00   90 F8 04 C0 0C F0 FC 03 03 F1 80 43 10 B5 03 F5  1B\n:10  0A20  00   00 43 91 F8 04 E0 D3 F8 00 21 0E F0 FC 03 03 F1  39\n:10  0A30  00   80 43 03 F5 00 43 4F EA CE 04 D3 F8 00 31 04 F0  BD\n:10  0A40  00   18 04 1B BA E3 40 4F EA CC 04 12 BA 04 F0 18 04  AD\n```\n\n### Address command\n\n```\n   :               Colon\n0: 02              Command type?\n1: 0000            Reserved?\n3: XX XX XX        Flash offset (?)\n6: CS              Checksum\n```\n\nThe header lines in tracker FW 1.5.0 are:\n\n```\n         32-bit\n         Address\nC  R     1  2  3   CS\n---------------------\n02 0000  02 10 00  EC\n02 0000  02 20 00  DC\n02 0000  02 30 00  CC\n02 0000  02 40 00  BC\n02 0000  02 50 00  AC\n02 0000  02 60 00  9C\n02 0000  02 70 00  8C\n02 0000  02 80 00  7C\n02 0000  02 90 00  6C\n02 0000  02 A0 00  5C\n02 0000  02 B0 00  4C\n02 0000  02 C0 00  3C\n02 0000  02 D0 00  2C\n02 0000  02 E0 00  1C\n```\n\nThey increment with a difference of 4096 (0x1000)\n(which is the number of data lines) so it's likely\nthat these represent the offset in flash.\n\n### Weird 12 byte line\n\n\"Unknown line\": 34 characters\n\n\n```\n    :               Colon\n0:  0C              Command type\n1:  XXXX            Offset to patch (maybe??)\n3:  00              Constant (reserved??)\n4:  12 bytes        12 data bytes\n17: XX              Checksum8 2s complement of the whole line\n\n              1  2  3  4  5  6  7  8  9  10 11 12 CS\n----------------------------------------------------\n0C  2574  00  85 6B FB 7F B0 B0 A8 00 FF FF 01 00 EA\n0C  2938  00  C1 67 FB 7F B0 B0 A8 00 FF FF 01 00 EA\n0C  2944  00  B5 67 FB 7F B0 B0 A8 00 FF FF 01 00 EA\n0C  2950  00  A9 67 FB 7F B0 B0 A8 00 FF FF 01 00 EA\n0C  295C  00  08 B1 01 81 B0 B0 00 84 00 00 00 00 50\n0C  29B4  00  08 B1 01 81 B0 B0 00 84 00 00 00 00 F8\n0C  29C0  00  08 B1 01 81 B0 B0 00 84 00 00 00 00 EC\n0C  2A24  00  D5 66 FB 7F A9 08 B1 00 FF FF 01 00 90\n0C  9BA8  00  00 00 00 00 00 00 00 00 00 00 00 00 B1\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkcxt%2Fpolyend_tracker_fw_decoding","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkcxt%2Fpolyend_tracker_fw_decoding","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkcxt%2Fpolyend_tracker_fw_decoding/lists"}