Turn an XBox into a Debian server

 

This is a work in progress as of 1/27/2011

My old XBox (the original one, not a 360) had been lying around for quite a while collecting dust. Knowing there is some capable processing power inside of it, I decided to turn it into a Debian server. After visiting XBox Linux, I thought it would be simple. What I did not know is that most of the work on this was done up until about 2005-6, and completely stopped after that. Many of the files that were needed are gone; probably due to licensing issues with Microsoft.

In spite of this, I was eventually successful in getting this to work; and on top of that, I got a custom 2.6 kernel running, and updated the box to the latest stable version of Debian. One caveat, I did not keep X11, so I am not sure if I could get a desktop working on this machine (it was working originally, but in the process of upgrading, I got rid of it).

How this works

There are (were) a lot of options for modding your XBox, and what’s left on the Web is pretty confusing. These were my requirements for this project:

  1. It had to be done for free
  2. I had to use only what I had on hand, which was not a lot
  3. I only wanted the XBox as a server, and did not want to play games on it anymore. This is important because I completely replaced the ROM in the machine.
  4. I wanted the machine to boot directly into Linux when it started up

I didn’t quite understand everything I did until after I did it, so this is written to be a clarification. An overview of what needs to be done follows:

  1. First, you need to solder some points on the XBox’s motherboard that will allow you to write directly to the on-board flash chip. This particular chip holds the code that allows you to boot up the XBox. Some web sites will refer to it as the BIOS, or the TSOP.
  2. Create an adapter to turn the XBox adapter into a standard female USB.
  3. Next, you’ll have to overcome the protection that’s built into the XBox, which prevents it from running unsigned code. This is done by installing a “game save”, which is software that is meant to exploit a flaw in the XBox’s security. This is done through what is called a “game save”.
  4. Once you use the “game save”, it will boot into a temporary copy of Linux. You can then use specialized software to burn the new boot software (called Cromwell) into the flash chip.
  5. Now you can use a DVD of “Ed’s Xebian” to boot and install Linux.
  6. Then you will compile a custom 2.6 kernel, and then upgrade your software.

Tools And Equipment Needed

  1. Soldering iron
  2. A USB hub, a cheap one is fine
  3. An original XBox controller, or an original XBox remote control with IR receiver

  4. A gamesave exploit for one of: Splinter Cell, 007, or Mechassault
  5. The game to go with it. I used Splinter Cell Platinum Edition. Some web sites report that Platinum doesn’t work, but it did for me.
  6. A female USB adapter
  7. An unused XBox controller or extension cable that you don’t mind cutting off the connector on
  8. I needed an extra IDE DVD drive, because the one in the XBox is terrible and wouldn’t read
    1. I also needed a way to power the DVD drive. The XBox has only 1 standard PC power connector; the power to the DVD drive is connected via a non-standard header.
    2. My drive came inside of an external enclosure, so I was able to get power from the enclosure and connect the DVD drive to the IDE cable. It was a mess, but it worked.
    3. I don’t know what DVD drives work for this. My drive was an old Pioneer DVD-RW.
    4. If you want to leave the custom DVD drive in, you will need an adapter to get power from the standard PC connector.

Notes

This command came in handy quite a bit when upgrading my packages.

dpkg -i --force-overwrite /var/cache/apt/archives/name-of-package.deb

I also had to use

dpkg -r name-of-package

to remove some conflicting packages, and also used Aptitude to automatically resolve issues.

One thing I learned about Aptitude (because I never RTFM) is that it will automatically come up with many suggestions to resolve conflicts. You should see a red highlighted area at the bottom of the Aptitude screen, which allows you to examine each resolution and move to the next one. For example, when I wanted to remove X11, I simply removed xserver-common, and then cycled through all of the conflict resolutions until I found one that had 68 removes and 0 installs. That way, I knew that it would remove all of the X11 packages, and not try to install something else to compensate for the package removal.

If part of an upgrade stops, you can use

aptitude -f install

to continue where you left off.

The XBox only has 64MB of memory, which kind of makes it kind of a slow web server.

Tuning Apache2 for Low Memory Apache2 Worker MPM for Low Memory Systems