johngeffe / ArduinoProm

Original Xbox EEPROM reader and writer. Based on and inspired by the awesome work by Grimdoomer on PiPROM

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ArduinoProm

ArduinoProm. An Arduino based Original Xbox EEPROM reader and writer. It can be used to recover a HDD key etc.

ArduinoProm is inspired and adapted upon the awesome work by Grimdoomer on PiPROM, now achievable on a <$3 Arduino board. See https://github.com/grimdoomer/PiPROM for the Original Raspberry Pi version!

Use at your own risk

Wiring

  1. Connect GND, SDA and SCL on the Xbox LPC port to the corresponding pins on the Arduino module. enter image description here

enter image description here

Arduino Setup

The firmware has been written around the Arduino Pro Micro Leonardo (5V/16Mhz). However I would expect it to work on any Arduino with a built in USB bootloader/Virtual Comport support, and obviously I2C support.

  1. Open ArduinoProm.ino in Arduino IDE
  2. Connect your Arduino to your PC and setup the IDE. An example below
    enter image description here
  3. Hit the program button then confirm it compiles and programs successfully.

Python Script

ArduinoProm accepts a few very basic commands over a virtual comport interface.
0x00 triggers an EEPROM read. ArduinoProm will send the contents of the EEPROM back (256 byte array)
0x01 triggers an EEPROM write. This command should be followed with 256bytes of EEPROM data.
0x02 will erase the Xbox eeprom (write 0x00 to all addresses)
0x03 will return 0x00 if the eeprom is detected. (-1 otherwise)

To facilitate these commands in a more user friendly way you can use a small python app ArduinoProm.py.

To run the Python program you need to install Python 3.7. Once installed and setup do
pip install pyserial
pip install wxPython

ArduinoProm.py usage is as follows (Determine your comport number by plugging in the Arduino to your PC after programming it)

python ArduinoProm.py COM1 READ eeprom.bin Read the EEPROM on COM1 and save to file eeprom.bin
python ArduinoProm.py COM1 WRITE eeprom.bin Write eeprom.bin to the EEPROM on COM1
python ArduinoProm.py COM1 ERASE Write all 0's to the EEPROM effectively erasing it.

Example outputs:
enter image description here

enter image description here

enter image description here

Issues

Arduino I2C library can hang if the Xbox is powered off or the I2C connections are incorrectly connected resulting in the software freezing. In this instance check your connections to the xbox, make sure the xbox is powered on then disconnect/reconnect the Arduino from your PCB to power cycle it.

By Ryzee119

About

Original Xbox EEPROM reader and writer. Based on and inspired by the awesome work by Grimdoomer on PiPROM

License:GNU General Public License v3.0


Languages

Language:C++ 50.3%Language:Python 49.7%