{"id":15719398,"url":"https://github.com/targetdisk/td-ez","last_synced_at":"2026-03-05T04:33:07.716Z","repository":{"id":206363520,"uuid":"716454249","full_name":"targetdisk/td-ez","owner":"targetdisk","description":"Target Disk firmware for EZ-USB device bridge hardware","archived":false,"fork":false,"pushed_at":"2024-06-26T04:26:19.000Z","size":379,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"mane","last_synced_at":"2025-02-26T17:40:50.019Z","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":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/targetdisk.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":"2023-11-09T07:05:38.000Z","updated_at":"2024-06-26T04:26:23.000Z","dependencies_parsed_at":"2024-10-24T15:28:45.528Z","dependency_job_id":"b8a5b198-b4d2-42db-9e2d-e83fcbf19249","html_url":"https://github.com/targetdisk/td-ez","commit_stats":null,"previous_names":["targetdisk/td-ez"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/targetdisk%2Ftd-ez","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/targetdisk%2Ftd-ez/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/targetdisk%2Ftd-ez/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/targetdisk%2Ftd-ez/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/targetdisk","download_url":"https://codeload.github.com/targetdisk/td-ez/tar.gz/refs/heads/mane","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243298600,"owners_count":20268983,"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-03T21:55:39.927Z","updated_at":"2026-03-05T04:33:02.691Z","avatar_url":"https://github.com/targetdisk.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Targetdisk Cable Firmware\n### for Cypress EZ-USB FX2\n\nThis firmware is for the Cypress CY7C68013 EZ-USB FX2 chip (well for two\nFX2 chips, actually).\n\n## What is this?\n\nMy USB target disk solution allows any UEFI-compatible motherboard to share all\nattached block storage devices with another computer as if they were just regular\nUSB mass storage devices.\n\n![diagram of how this all works](fx2-sketch.png)\n\n1. The business end of our dongle device attaches to a target computer.  The\n   target computer loads and executes\n   [the Targetdisk UEFI runtime](https://github.com/targetdisk/targetdisk-efi)\n   hosted on the business end of our dongle.\n2. The UEFI runtime on the target device reloads the business end of our\n   dongle device its FIFO-establishing firmware.\n3. After the business end of the dongle reboots, it lets the other FX2 know\n   that it's time to wake up and establish our hardware FIFO.  The hardware\n   FIFO then begins to proxy SCSI commands from the mass storage interface end\n   of our dongle to the target computer's UEFI runtime.\n\n## Building\n### Building the Firmware IHEX\nSo far I have only partially implemented step one of the diagram above, named\n`efi-booter`.  You can build the Cypress EZ-USB FX2 firmware by running:\n```\nmake efi-booter\n```\n\n### Building the ESP image\nTo build the SPI flash image that it hosts, you'll need a GNU/Linux system with\n`losetup`, `sgdisk`, `mkfs.fat,` and a recent version of the Bash shell.  These\nare used in the image creation targets of the `GNUmakefile` and the `mk-esp` and\n`populate-esp` scripts that it calls.\n```\nmake esp-image\n```\n\n## Running\n### Flashing the FX2 Firmware\nDue to the current unfinished state of the project, I'm not yet permanently\nflashing my firmware to the device yet.\n```\nmake load-booter\n```\n\n## Troubleshooting\nIf you pull down recent code and stuff is no longer building, you can safely\nremove the `var` directory in your local project root.  That should fix most\nproblems.  If that still doesn't work, please file a\n[GitHub issue](https://github.com/targetdisk/td-ez/issues/new/choose).\n\n## See Also\n- The [libfx2 documentation](https://libfx2.readthedocs.io/en/stable/introduction.html)\n- My work-in-progress\n  [Targetdisk UEFI runtime](https://github.com/targetdisk/targetdisk-efi)\n- The [original CY7C68013 EZ-USB FX2 USB Microcontroller datasheet](https://www.keil.com/dd/docs/datashts/cypress/cy7c68xxx_ds.pdf)\n- Infineon's [updated datasheet](https://www.infineon.com/dgdl/Infineon-CY7C68013A_CY7C68014A_CY7C68015A_CY7C68016A_EZ-USB_FX2LP_USB_Microcontroller_High-Speed_USB_Peripheral_Controller-DataSheet-v31_00-EN.pdf?fileId=8ac78c8c7d0d8da4017d0ec9f7974252)\n- The [FX2 Technical Reference Manual](https://www.infineon.com/dgdl/Infineon-EZ-USB_TECHNICAL_REFERENCE_MANUAL-AdditionalTechnicalInformation-v08_00-EN.pdf?fileId=8ac78c8c7d0d8da4017d0f9093657d61)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftargetdisk%2Ftd-ez","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftargetdisk%2Ftd-ez","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftargetdisk%2Ftd-ez/lists"}