Reversing an Alienware MIO board

Alienware has this cool setup where, if your game supports AlienFX, you can have lights responding in your AlienWare PC to in game events. I want this feature. I don’t want to buy an AlienWare machine.  ebay had a MIO board that looks simple enough to emulate on an AVR, so I’m gonna grab some friends and we’re gonna do that.

The MIO (Master IO) board shows up as a HID device that talks in fairly simple reports to the windows host.  A friend and I (we’ll call him Gill) set to work reversing first the USB descriptors that identify the MIO to the driver and then the USB commands that make the lights do pretty blinky things.

1462639413845-d6hytug5azahedy4-zct24lyjoov7vylm.jpg

IMG_20160516_095932The code was fairly simple to put together (again with friends Gill and Abby) and we managed to program up an AVR with just enough of the AlienFX support to make lights flash in game without having to do any weird game hacks, we just install the AlienFX driver and let the game developers do the rest.  A unique bit we added though was to default the lights to a specific color when they are at rest, so that one computer is team red and one is team blue. 

1462639891390-t47spc6ewq1gr52l-87g382vtt5hulst8.jpgWe ran into a small problem as this project progressed with about 50% of the arduinos (we were using arduino nano devices but erased the bootleaders and used them as raw AVR) were not programming or failing immediately afterwards.  Turns out, with the 20 devices I ordered, a full 9 of them had a bad solder joint on two pins. A few minutes under the hot air gun though and they all came back to life.