Dangerous Xbox 360 Update Killing Homebrew

On Tuesday, Microsoft has released an Xbox 360 software update that overwrites the first stage bootloader of the system. Although there have been numerous software updates for Microsoft’s gaming console in the past, this is the first one to overwrite the vital boot block. Any failure while updating this will break the Xbox 360 beyond repair. Statistics from other systems have shown that about one in a thousand bootloader updates goes wrong, and unless Microsoft has a novel solution to this problem, this puts tens of thousands of Xboxes at risk.

Xbox 360 GPU update

First, here are the promised slides for my Breakpoint 2008 presentation about “Gaming Consoles for demosceners”: breakpoint-2008-slides.pdf Then, I’ve updated my GPU library a bit. The biggest thing was a rewrite of the interface, so now it’s all encapsulated into a nice API. I’ve also added some features (stencil buffer ops, drawing with index buffers), and fixed a LOT of bugs (for example vfetch patches on more complex shaders). The updated GPU library, included the mentioned “spinning cube” example, is available here: gpu-0.

Fear, triangles!

I’m proud to present: Triangles on the 360, MANY OF THEM - about 40 million per second, or even more if you write clever code. (But this is not a depth of field, just a blurry screenshot ;) I finally polished my GPU stuff far enough so I can risk a release. You need to compile your shaders, so you need Tser’s shader compiler (which uses part of the windows XNA libraries).

Bye, bye, xpc823...

I have known since years that the day had to come, but it was hard anyhow: My beloved iMac G5 (rev. 1) had to be taken down, in order to move to his new home, the waldobjekt. During the last few years, it always served well the kuehlschrank-website (it’s down now, of course!), provided a home for my emails (people are still calling me crazy for setting up the MX for my primary mail domain into a dyndns), archived our webcam pictures, connected my home to the world wide web (and even further), and had not suffered a single crash.


I apologize for the lack of recent updates. The main reason is that I moved, or better, split up, currently into three different places: My new flat, my old flat (which still takes care of a lot of my equipment), and a new home for electronic devices, called “waldobjekt”. The waldobjekt is a place which finally has enough space for all of my projects (and much more). >260 m² of space for storage, working and having fun!

#2 fixed

Today I looked at Xbox #2, which made some strange fan-based noises. I checked the fan, and in fact, the CPU fan (which made the noises) had a much larger axial tolerance than the GPU fan. With some minimal force I could even detach the fan blades! It seemed that the clamped connection wasn’t in place, and touched a non-moving part. I simply removed the clamp, so the fan is now only hold in place via magnetism.

Network trouble.

Again, things aren’t as easy as one could hope. After my obvious fix to the xenon_net kernel module, I’ve noticed that after every reboot, the interface name incremented by one. I’ve now got up to eth5! At first I was very puzzled, but obi was able to identify the issue: The debian udev scripts are trying to preserve interface names for removed network adapters. They are matched on the MAC-address which is - random, in our case.

Thermal problem... fixed?

I’m not good at case-modding, and I cannot judge at all whether a cooling system is a good one or not. So I have to totally trust in the engineering power which Microsoft has invested into the Xbox 360 cooling system. Still, my Xbox #9 had a problem, even I could see that. I’ve removed the GPU heatsink, and removed the (evil? Probably not really.) thermal foil (I couldn’t see any damage/misalignment on it, though.

AV pack fix

I was sick of attaching my VGA cable to each box while booting, so I fixed that: The nice thing is that the VGA AV-Pack can still be attached. So when I need to debug a box, i can just attach it, and the videomode etc. (which we cannot set in linux at the moment) is already set to VGA.

Status: 9 of 10 up.

Unit #2 has still a problem with the DVDROM. Though i fear that unit #9 has a thermal problem: $ ./foreach /usr/src/smc -s | grep sensor sensor data: 65.3 C, 61.4 C, 66.9 C, 29.9 C, sensor data: 69.1 C, 63.7 C, 64.2 C, 29.9 C, sensor data: 70.0 C, 59.3 C, 61.1 C, 28.8 C, sensor data: 66.9 C, 62.3 C, 62.5 C, 30.2 C, sensor data: 69.4 C, 63.

Ok, I should have listened...

But I didn’t. After I booted 9 of the 10 devices (nr. #2 failed with a flaky DVD drive, and a possibly broken fan), I could only access them “a few times”. They behaved very erratically. A bug in the kernel? Random oopses? It was a bit simpler than I have thought. sudo arp -v | grep 00:01 ether 00:01:02:03:04:05 C eth0 ether 00:01:02:03:04:05 C eth0 ether 00:01:02:03:04:05 C eth0 10.

First electrical test!

After about two and a half hours of opening, flashing, closing all the boxes, they were all ready. Side note: All boxes were produced on 2006-10-25, and all had Hitachi drives. Did you know that drives are stackable? Don’t they look nice? (Don’t worry about the red ring - they just don’t have any AV cable connected yet.)

Harddisks prepared!

Thanks to some automatic script, preparing all the harddisks with a stock debian root was easy. Big thanks to Microsoft for their cool transfer cable! (Which is a plain USB storage cable…) I also automatically generated labels thanks to our donated CAB Apollo 1 label printer. (The truth is that I had to switch to my laptop, as the USB support in the kernel is still flaky. What a pity.

Hardware arrived!

Today at 9:50AM, the local GLS dude brought three big packages. Inside: A total of 5.12GB of RAM, 30 PPC64 CPU cores, 10 ATI (approx.) R600-level GPUs, seperated evenly into… 10 Xbox 360! The mission: Using them with Linux, having some fun! (Ok, the real mission was to evaluate if we can replace some normal servers with 360 hardware.)