Wednesday, May 1, 2013

Ems Flasher running on Debian

    The ems-flasher allows you to read and write roms and saves from and into the ems smart cart for game boy systems. It's a terminal based app. That means that it has no graphical user interface at the moment. So if you're scared of the terminal... You shouldn't!. 

    This is a pseudo guide on how to install and use it in a GNU/Linux environment. I followed this steps in Debian 7 but this will work on mostly any GNU/Linux based distribution.

Installing the flasher

  • Download the ems-flasher sources for Mac/Linux from
  • Extract the .tgz with your favorite decompressor in ~/ems-flasher/ (for simplicity).
  • Open a terminal and change directory to ~/ems-flasher/
  • Type make and press enter.
  If you get an error saying that libusb was not found (sorry, I forgot to take notes about the exact error) then is time to install the dev packages for libusb through synaptic or apt-get and the rerun the command make.

  According to the official wiki, if you get the following error:
libusb couldn't open USB device /dev/bus/usb/003/009: Permission denied.
you need to follow this procedure. Fortunately, I didn't have that problem.

  • Once the compiling process is done we can check if it's working properly by running ./ems-flasher --version
  • It should return the version of the ems-flasher installed. 

How the flasher works


    Typing ./ems-flasher --help will show all the available parameters and how to use ems-flasher:
 ./ems-flasher < --read | --write > [ --verbose ] <>
 ./ems-flasher --title
 ./ems-flasher --version
 ./ems-flasher --help
Writes a ROM or SAV file to the EMS 64 Mbit USB flash cart

    --read                  read entire cart into file
    --write                 write ROM file to cart
    --title                 title of the ROM in both banks
    --verbose               displays more information
    --bank <num>            select cart bank (1 or 2)
    --save                  force write to SRAM
    --rom                   force write to Flash ROM

You MUST supply exactly one of --read, --write, or --title
Reading or writing with a file ending in .sav will write to SRAM.
To select between ROM and SRAM, use ONE of the --save / --rom options.

Advanced options:
    --blocksize <size>      bytes per block (default: 4096 read, 32 write)

Written by Mike Ryan <> and others
See web site for more info:


  So... for flashing LSDJ into the cart you write in a terminal:
~/ems-flasher/:$ ./ems-flasher --write --verbose /path/to/lsdj/rom/

  This will flash the rom into bank 1. If you want to flash, let's say, pokemon red into bank 2, you can write in a terminal:
~/ems-flasher/:$ ./ems-flasher --write --verbose --bank 2 /path/to/pokemon/rom/

  This way you will have lsdj in bank 1 and pokemon red in bank 2. One thing to keep in mind is that you can only have one save in the cartridge.

  For making a backup of your save you write in a terminal:
~/ems-flasher/:$ ./ems-flasher --read --verbose /path/to/put/the/save/

  The name of the save is only to specify the name of the local file, as the cartridge can only store 1 save file at a time.

Wrapping up


    Before calling this done I wanted to mention a couple of things. First, no light is turned on on the cartridge unless you're writing or reading bank 2; and second, the connected cartridge doesn't show in removable devices. You can check if everything is alright by executing the lsusb command in a terminal.

    That being said, this is all what it needs to be done in order to flash your ems smart cart in GNU/Linux. It's a really simple procedure that can be done in a few minutes and despite that the ems-flasher is in alpha state, it works really nice.
    Don't forget to visit the developer website at and buy him a beer

Cool resources:
Another method in Linux here.
More info (in spanish) here.

No comments:

Post a Comment