Xbox:PiPROM

PiPROM is a program for the Raspberry Pi that allows you to recover your EEPROM information by attaching three wires to your Xbox motherboard. In the event that your Xbox's hard drive is dying and unable to boot, you can build a new hard drive using the information found in the Xbox's EEPROM. However, if you did not back up the EEPROM before the hard drive died, you are limited to installing a modchip or using PiPROM to recover it.

PiPROM is confirmed to work with the following Raspberry Pi versions: `1, 1B+, 2B, 3B, Zero-W`, with all other models being untested. It is also compatible with the Banana Pi, using a different read command. Please let us know if you are successful with the other untested models.

Setting up I2C
Depending on how you originally set up your Raspberry Pi and what model you have, I2C may already be configured. Open the Terminal and run the command `sudo i2cdetect -y 1` (or `sudo i2cdetect -y 0` for a model 1 Raspberry Pi). If you receive a text based grid, it is set up properly. Otherwise, follow the below directions.

1. Open the Terminal and run the commands to install the I2C tools:

sudo apt-get install -y python-smbus

sudo apt-get install -y i2c-tools

2. Run the command `sudo raspi-config`, then navigate to Interfacing Options (or on old models, Advanced Options) I2C, then select Yes to enable it. It may ask you if you want it to be loaded by default, choose Yes.

3. Reboot your Raspberry Pi.

4. Now you should be able to run `sudo i2cdetect -y 1` (or `sudo i2cdetect -y 0` for a model 1 Raspberry Pi) and see a text based grid.

PiPROM Setup
1. Open the Terminal and run the following commands:

mkdir PiPROM

cd ./PiPROM

wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.42.tar.gz

tar zxvf bcm2835-1.42.tar.gz

cd bcm2835-1.42

./configure

make

sudo make check (verify that there are no errors)

sudo make install

cd ..

git clone https://github.com/grimdoomer/PiPROM.git

cd ./PiPROM

2. Run the relevant command as marked in the table below:

Connecting Wires
For all versions of Xbox, including version 1.6, the wiring is the same. Ensure that you are using the correct pins, and that your wiring is not upside down on both the Xbox and Raspberry Pi ends or you may risk damaging either device. You do not necessarily have to solder the wire on either end, but if you are doing it without soldering, it is recommended to use a Female-to-Male jumper wire, and to plug the female side into the Raspberry Pi and the fully insert the male side into the Xbox. Test your connection by using the command `sudo i2cdetect -y 1` (or `sudo i2cdetect -y 0` for a model 1 Raspberry Pi) and making sure that some of the slots in the text grid are filled with numbers.


 * Banana Pi's use the same pins, as shown in the pinout diagram.



Reading/Writing
Turn your Xbox on. Run the desired command below while you are in the PiPROM directory. When you read the EEPROM, it will make an "eeprom.bin" file in your PiPROM folder.

Banana Pi command: `sudo i2cdump -y 2 0x54 | sed 's/^....//' | cut -c -47 | tail -n +2 > eeprom.bin`