{"id":26880825,"url":"https://github.com/fujihack/fujihack","last_synced_at":"2025-06-18T13:42:23.557Z","repository":{"id":39059205,"uuid":"387940864","full_name":"fujihack/fujihack","owner":"fujihack","description":"Reverse engineering Fujifilm cameras","archived":false,"fork":false,"pushed_at":"2024-08-17T20:00:13.000Z","size":422,"stargazers_count":343,"open_issues_count":0,"forks_count":15,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-06-13T23:56:19.832Z","etag":null,"topics":["camera","firmware","homebrew","reverse-engineering"],"latest_commit_sha":null,"homepage":"http://fujihack.org/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fujihack.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},"funding":{"ko_fi":"petabyte","custom":["https://danielc.dev/donate.html"]}},"created_at":"2021-07-20T23:53:19.000Z","updated_at":"2025-05-28T15:54:26.000Z","dependencies_parsed_at":"2023-02-09T23:30:37.138Z","dependency_job_id":"bb33d92d-bd42-4ee1-8598-b3ccf330ae53","html_url":"https://github.com/fujihack/fujihack","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/fujihack/fujihack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fujihack%2Ffujihack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fujihack%2Ffujihack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fujihack%2Ffujihack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fujihack%2Ffujihack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fujihack","download_url":"https://codeload.github.com/fujihack/fujihack/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fujihack%2Ffujihack/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260563470,"owners_count":23028561,"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":["camera","firmware","homebrew","reverse-engineering"],"created_at":"2025-03-31T14:39:29.857Z","updated_at":"2025-06-18T13:42:18.540Z","avatar_url":"https://github.com/fujihack.png","language":"C","funding_links":["https://ko-fi.com/petabyte","https://danielc.dev/donate.html"],"categories":[],"sub_categories":[],"readme":"# Fujihack\nFujihack is a research project that aims to reverse-engineer Fujifilm cameras in order to understand and improve the firmware.\n\n[Website](https://fujihack.org) \u0026bull;\n[Wiki](https://fujihack.github.io/) \u0026bull;\n[Discord server](https://discord.gg/UZXDktvAZP)\n\nThis codebase consists of:  \n- Firmware patches to read/write/exec over USB\n- CLI tool to run code and dump memory over USB\n- C header files documenting Fujifilm's RTOS API\n- C header files with info \u0026 RAM/firmware stubs for each camera model\n- POSIX, Graphics, and I/O APIs over Fujifilm's RTOS API\n- Video record limit mod, button remapping\n- *Frontier*, the UI and module/scripting system\n- Anything else needed to gain [interoperability](https://en.wikipedia.org/wiki/Interoperability)\n\n## Patching firmware\n- Currently, the only way to run Fujihack is with a patched firmware.\n- Although the patcher has been thoroughly tested, custom firmware is *always* dangerous and can cause damage.\n- There is a way to recover bricked devices (SoC boot ROM) but it hasn't been reverse-engineered yet.\n\nA [web based patcher](https://fujihack.org/patcher/) has been written for this project. It has the ability to unpack, inject, patch, repack, and downgrade firmware. It assembles patches in browser and applies them in the firmware.\n\nThe most notable patch is the [PTP/USB debugger](https://github.com/fujihack/fujihack/blob/master/patch/debug.S), which has been ported to the XF1 and X-A2.\n\n## PTP/USB Debugger\nThe debugger firmware patch adds read/write/exec abilities to the PTP code in firmware. \n\nCompiling it requires `arm-none-eabi-gcc` and `libusb-v1.0`.\n\nEnter the `minimal/` directory. The makefile accepts a `model` argument, which can be defined by placing a config.mak at the top directory, or with CLI:  \n```\nmake hack.bin model=xa2_130\n```\nThat target will compile `hack.bin`, which is the bare ARM binary that is sent over by USB to the camera. The `hack` target can be used to compile, and then send code to the camera with the CLI utility.  \n\nAnd remember...   \n**If you break it, you get to keep both pieces.**  \n\nCopyright 2021-2024 FujiHack by Daniel C and contributors  \nFujiHack is licenced under the GNU General Public License v3.0  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffujihack%2Ffujihack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffujihack%2Ffujihack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffujihack%2Ffujihack/lists"}