Modern open-source tools for the EZ-Writer II / EZ-Flash II USB GBA cartridge flasher.
Dump Game Boy Advance ROMs, back up saves, inspect cartridge headers, and restore saves from Windows 10/11, Linux, or macOS without the original Windows XP kernel drivers.
No custom kernel driver. Uses WinUSB + libusb.
The original EZ-Writer II software only works easily on old Windows XP-era setups. This project replaces the old USB driver path with a Rust CLI and GUI that talk to the hardware through libusb.
It supports the EZ-Writer II device that starts as 0547:2131 and, after firmware
upload, re-enumerates as 0548:1005.
| Feature | Status |
|---|---|
| Device detection | Working |
| Firmware upload to AN2131 RAM | Working |
| Cartridge header read | Working |
| ROM dump | Working |
| Save read | Working |
| Save write | Working, use backups |
| GUI | Working |
| ROM write / erase | Experimental, high risk |
Read-only actions are the safest and are the intended public release path. Write features exist for testing and recovery work, but you should back up first and read SAFETY.md.
- Rust — install from https://rustup.rs/ if
cargois unavailable. - USB driver (Windows only) — use Zadig:
- Run Zadig as Administrator.
Options → List All Devices.- Select
EZ-Writer II(0547:2131or0548:1005). - Choose
WinUSB, clickInstall Driver.
- Linux — may need a udev rule or root for direct USB access.
- macOS — no driver needed, but grant USB permission when prompted.
cd src/ezwriter-cli
cargo build --release# From the src/ezwriter-cli/ directory:
# 1. Detect
./target/release/ezwriter-cli list
# 2. Load firmware (if in bootloader mode 0547:2131)
./target/release/ezwriter-cli firmware-download tusbez.bin
# 3. Identify cartridge
./target/release/ezwriter-cli cart-info
# 4. Dump ROM + save
./target/release/ezwriter-cli dump mygame.gba
./target/release/ezwriter-cli save-read 0 2048 --output mygame.sav(Windows: replace ./target/release/ezwriter-cli with .\target\release\ezwriter-cli.exe)
tusbez.bin is the original 8051 firmware loaded into Cypress AN2131 RAM.
Unplugging resets the chip, so firmware must be uploaded on every connection.
Build from src/ezwriter-gui:
cd src/ezwriter-gui
cargo build --releaseRun from the same directory (loader files are in src/ezwriter-gui):
./target/release/ezwriter-gui # Linux/macOS
target\release\ezwriter-gui.exe # WindowsIf you move the executable elsewhere, copy loader_table1.bin and
loader_table2.bin next to it first.
The GUI has five tabs:
| Tab | Purpose |
|---|---|
| Status | Detect writer and initialize firmware |
| Cart Info | Read title, game code, save type, and ROM size |
| Read ROM | Dump a cartridge ROM to .gba |
| Read Save | Dump save data to .sav |
| Write Save | Restore save data after backup |
- Dump the ROM before writing anything.
- Dump the save before writing anything.
- Use short, reliable USB cables.
- Do not interrupt write operations.
- Treat
write-romanderaseas experimental and high risk.
See SAFETY.md for the full checklist.
flowchart LR
PC["PC<br/>ezwriter-cli / ezwriter-gui"]
USB["USB<br/>libusb + WinUSB"]
MCU["Cypress AN2131Q<br/>8051 @ 48 MHz"]
CART["EZ-Flash II<br/>GBA cartridge"]
PC <--> USB
USB <-->|"EP0 control<br/>EP4 bulk OUT<br/>EP2 bulk IN"| MCU
MCU <-->|"parallel cart bus"| CART
Boot sequence:
sequenceDiagram
participant H as Host PC
participant D as EZ-Writer II
participant C as GBA cart
H->>D: Plug in, bootloader mode 0547:2131
H->>D: Vendor 0xA0: hold CPU reset
H->>D: Vendor 0xA0: upload tusbez.bin
H->>D: Vendor 0xA0: start CPU
D-->>H: Re-enumerates as 0548:1005
H->>D: Bulk commands
D->>C: Cartridge bus operations
C-->>D: ROM / save data
D-->>H: Bulk responses
Full protocol notes: docs/protocol_notes.md
.
|-- src/ezwriter-cli/ Rust CLI
|-- src/ezwriter-gui/ Rust GUI
|-- docs/ Protocol notes and original driver analysis
|-- driver/winusb-inf/ Optional WinUSB INF files
|-- SAFETY.md Write-operation safety guide
`-- RELEASE.md Public release checklist and Reddit post draft
Originally created as
ezwriter-reverseduring reverse engineering. Binaries keep theezwriter-prefix — the hardware is commonly called EZ-Writer II.
Use this for homebrew, preservation, personal backups, saves from cartridges you own, and GBA development. Do not use it for piracy.