{"id":30865544,"url":"https://github.com/michaelforney/thr10","last_synced_at":"2025-09-07T21:22:43.092Z","repository":{"id":308853316,"uuid":"1027970375","full_name":"michaelforney/thr10","owner":"michaelforney","description":"THR10 firmware patches","archived":false,"fork":false,"pushed_at":"2025-07-31T03:41:21.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-28T08:37:14.261Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/michaelforney.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,"zenodo":null}},"created_at":"2025-07-28T20:18:09.000Z","updated_at":"2025-07-31T03:41:25.000Z","dependencies_parsed_at":"2025-08-08T09:52:04.758Z","dependency_job_id":"0e20f74d-34d6-47c2-bf5b-609be4921393","html_url":"https://github.com/michaelforney/thr10","commit_stats":null,"previous_names":["michaelforney/thr10"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/michaelforney/thr10","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelforney%2Fthr10","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelforney%2Fthr10/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelforney%2Fthr10/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelforney%2Fthr10/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michaelforney","download_url":"https://codeload.github.com/michaelforney/thr10/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelforney%2Fthr10/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274097598,"owners_count":25221849,"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","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":"2025-09-07T21:22:41.446Z","updated_at":"2025-09-07T21:22:43.079Z","avatar_url":"https://github.com/michaelforney.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"This repository contains some tools and scripts for working with\nand patching Yamaha THR10/THR10c/THR10x firmware.\n\n### Requirements\n\n- armeb-none-eabi toolchain\n- Original THR10c firmware (`thr10_ver104c_20120803.bin`)\n\n### Supported firmwares\n\n| Name | SHA256 |\n| ---- | ------ |\n| thr10_ver104c_20120803.bin | b08a90c2a6ea4b0c2ab17bde10754b29641f1503eafd62015519af36feef239c |\n\nIf you have a different firmware, please contact me and I can help\nwith adding support for it.\n\n### Extracting firmware\n\nNo hardware modification is required to extract the firmware from\nyour device.\n\n1. Boot into update mode by turning on the amp while holding the\n   TAP/TIME button, then once the LED display turns on, press the\n   TAP/TIME button 5 times within the next 4 seconds. After 6 more\n   seconds, the device will reboot into update mode and show a `U`\n   on the LED display.\n2. Connect the amp to a computer with a USB cable. On Linux, identify\n   the THR10 MIDI hardware port by finding it in the output `amidi -l`\n   (e.g. `hw:1`).\n3. Start recording MIDI from the device. On Linux, this can be done\n   with `arecordmidi -p THR10 fw.mid`.\n4. Send a `DTA1ROMR` sysex command (`F0 43 7D 50 44 54 41 31 52 4F 4D 52 02 F7`)\n   to the device to trigger a firmware dump. On Linux, this can be\n   done for `hw:1` with `amidi -p hw:1 -S 'F0 43 7D 50 44 54 41 31 52 4F 4D 52 02 F7'`.\n5. Wait for 2.5 minutes for the firmware dump to complete. You can\n   monitor the progress by watching the MIDI events from the device.\n   On Linux, this can be done with `aseqdump -p THR10`. The dump\n   is complete when you see a `DTA1CSUM` command, which looks like\n   `F0 43 7D 70 44 54 41 31 43 53 55 4D XX F7`, where XX varies per\n   firmware version.\n6. Stop the MIDI recording.\n7. Extract the binary firmware from the MIDI sysex messages using\n   `lua tools/midtobin.lua fw.mid fw.bin`. If successful, you should\n   see the message `checksum matched`.\n8. Calculate the SHA256 sum of your dumped `fw.bin` to find the\n   firmware it matches in the [Supported firmwares](#Supported\n   firmwares) table, and rename it appropriately.\n\n### Building\n\nBuild with `FW` set according to your firmware version.\n\n```\nmake FW=thr10_ver104c_20120803.bin\n```\n\nThe raw patched firmware will be built at `thr10.bin`, as well as\na MIDI update file `thr10.mid`.\n\n### Flashing patched firmware\n\n\u003e [!CAUTION]\n\u003e Make sure you have backed up your firmware before proceeding.\n\u003e Yamaha only provides firmware for the original THR10 model. If\n\u003e you flash your THR10c or THR10x and then want to restore the\n\u003e original firmware, you will need a backup of the original firmware.\n\n\u003e [!WARNING]\n\u003e Proceed at your own risk. This process only overwrites the main\n\u003e firmware (DTAm) while leaving the boot firmware containing the\n\u003e updater intact (DTAb), so it should be fairly safe, but even so,\n\u003e I am not responsible for any damage to your device.\n\nOnce you have built your new patched firmware `thr10.mid`, you can\nflash it to the device.\n\n1. Boot into update mode by turning on the amp while holding the\n   TAP/TIME button, then once the LED display turns on, press the\n   TAP/TIME button 5 times within the next 4 seconds. After 6 more\n   seconds, the device will reboot into update mode and show a `U`\n   on the LED display.\n2. Connect the amp to a computer with a USB cable.\n3. Start the flashing process by playing the MIDI update to your\n   device. On Linux, this can be done with `aplaymidi -p THR10 thr10.mid`.\n4. For the first 16 seconds, the LED display will show the two\n   triangle icons used during tuning. This indicates that the flash\n   is being erased prior to writing. After this, the green dot will\n   start flashing while the new firmware is written.\n5. If successful, the display will show `E`, `n`, `d` in a loop.\n6. Reboot into the new firmware by power cycling the amp.\n\n## Firmware modifications\n\n### Speaker simulation bypass\n\nEach of the amp's firmware models has an associated speaker cabinet\nemulation. This can be changed over MIDI using the THR Editor or\nTHR Librarian software (or sending sysex commands manually). The\nFLAT mode uses a flat speaker response, effectively disabling the\nspeaker emulation.\n\nIf the amp is modified with a speaker output jack and hooked up to\nreal guitar speakers, you may want to disable the speaker emulation.\nThis can be done using the software mentioned above, and saved to\na preset, but as soon as the amp model is changed, the amp will\nrevert to the default speaker type for that model.\n\nThis modification adds a speaker simulation bypass mode that can\nbe toggled by pressing and holding the TAP/TIME button and then\npressing the preset 1 button.\n\nWhen speaker bypass mode is enabled, the LED display will show the\ntwo triangle icons used in tuning mode and the speaker emulation\nwill be disabled. When the amp model is changed or a preset is\nloaded, the speaker emulation will remain disabled.\n\nWhen speaker bypass mode is disabled, the device functions normally.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelforney%2Fthr10","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichaelforney%2Fthr10","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelforney%2Fthr10/lists"}